SpringSource je v současnosti jedním z největších dodavatelů webových technologií a dá se očekávat, že se tento fakt do budoucna nezmění. Ačkoliv se tato firma v podstatě zrodila z nápadu jednoho člověka (Rod Johnson) a jedné technologie (Spring) její působnost se doslova ze dne na den rozrostla na mnoho dalších souvisejících technologií.

Díky tomu může poskytovat kompletní nástroje pro vývoj převážně webových aplikací:

  • Frameworky – Spring, Spring MVC, Spring Security, Spring Web Flow, Spring JS, Spring Batch, Grails (Groovy) ; do budoucna větší spolupráce s VmWare, která SpringSource koupila
  • Vývoj
    • STS – IDE založené na Eclipse, sdružující zajímavé pluginy, které pomáhají při vývoji
    • Spring IDE – plugin pro Eclipse pro lepší vývoj aplikací založených na Springu
    • Spring Roo – nástroj pro urychlení vývoje aplikací a generování kódu
  • Běh aplikací
    • tcServer – komerční řešení nad Tomcatem, které poskytuje vývojáři plnou kontrolu nad běžícími aplikacemi a dohled nad jejich zdroji
    • dmServer – další přírůstek do rodiny aplikačních serverů zaměřený především na OSGi

STS

STS (Spring Tools Suite) je dostupné jako kompletní IDE, nebo jako plugin do Eclipse. Je tedy založené na tomto velmi oblíbeném a námi používaném IDE a není proto třeba investovat do studia nového IDE.

Oproti standardní instalaci Eclipse STS nabízí perfektní podporu pro všechny produkty SpringSource portfolia. Samozřejmě se nejedná o nic, co by nešlo do standardní distribuce Eclipse doinstalovat, ale jelikož je STS nabízeno jako ucelený balík, urychluje se tím adaptace na nové technologie a odstraňují se problémy spojené s instalací prostředí.

Vyjmenujme si nyní klady STS, které mohou být z našeho hlediska výhodné:

  • zdarma
  • STS = Eclipse + SpringIDE + Grails + Groovy + Roo + …
  • vylepšená správa a instalace pluginů, které souvisejí s SpringSource a s vývojem webových aplikací obecně (Roo, Grails, Groovy, SVN, GIT, …)
  • výborná integrace s různými task systémy (task management, time management, konektory do task systémů)
  • odladěná instalace pluginů (zapomeňte na problémy s instalací SVN apod.)
  • není uzavřené řešení – nic nebrání používání stejně jako Eclipse

Groovy

Groovy je inovativní dynamický skriptovací jazyk, který získává v poslední době čím dál větší oblibu. Je to jazyk založený a kompilovaný nad klasickou JVM tudíž přináší výhody zejména pro Java vývojáře, kteří se nemusí učit odlišným principům (jako například u Ruby apod.).

Hlavní nevýhody:

  • typově dynamický jazyk – při práci nezáleží na typech, kontrola typů se provádí až při běhu (IDE vám v tomto nepomůže)
  • zapomeňte na doplňovaná ala Ctrl+Space ;)
  • snížená čitelnost (closures apod. vyžadují větší pozornost než klasický kód v Javě)
  • jiný typ práce – nutno si zvyknout

A nyní co lze tedy považovat za výhody oproti klasické Javě:

  • v podstatě Java (malé rozdíly: def = definice proměnných, není třeba středník)
  • podpora v Springu
  • opravdu šikovná vylepšení, která usnadní rutinní práci při vývoji
  • nejsou třeba get/set metody (generovány automaticky)
  • zlepšená práce s kolekcemi (list, map), která připomíná práci s polem
  • bezvadná podpora pro testování (automatické generování testů a integrované mocking/stub prostředí ; Mock = naprogramované expectation (tedy nastavujeme co očekáváme že se bude volat na daném objektu) ; Stub = nastavené odpovědi na metody objektu používané v testu )
  • spousta modulů (GroovyWS – web services, GroovySWT – podpora pro SWT, …)
  • neustálý a rychlý vývoj samotného jazyka

Základní otázkou zůstává – bude Groovy třeba po vydání Java 7? Bude poskytovat tolik důležitých vylepšení, kvůli kterým půjde naplno využít (myslím si, že například v možnosti dynamického překladu ano, ale například closures mají být právě součástí Java 7). A co další technologie jako jsou Scala (poněkud více odlišná od Javy, ale také dynamický jazyk) či JRuby (implementace Ruby v Javě)?

Grails

Grails je výkonný moderní framework, který se snaží o maximální pomoc při vytváření projektu a jeho udržování. Je založený na jazyku Groovy a nabízí ucelenou sadu nástrojů pro vývoj webových projektů:

  • vlastní správa závislostí projektů
  • silný command line, který slouží pro komunikaci s frameworkem
  • GORM – vlastní objektově relační framework, který má zajímavou, ale nezvyklou konfiguraci
  • GSP – rozšíření klasických JSP o Grails tagy a lepší práci s Grails frameworkem (Grails tagy vesměs kopírují JSTL tagy, ale přidávají i vlastní)
  • Scaffolding – schopnost frameworku vytvářet automaticky CRUD operace k domain třídám
  • integrace Prototype jako JS frameworku
  • Jetty jako standardní a integrovaná platforma pro spouštění aplikací (lze spouštět na čemkoliv)

Hlavní výhody Grails jsou:

  • založeno na Springu a Groovy
  • podpora všech důležitých Java technologií
  • podpora v STS
  • dostupnost mnoha pluginů (Tomcat, Maven, Wicket, Spring Security, Spring Webflow, Hibernate, UML, …)
  • bezproblémová konfigurace pro různá běhová prostředí
  • bezvadná podpora pro testování (viz. Groovy)
  • kvalitní dokumentace a spousty materiálů na internetu
  • neustálý a rychlý vývoj frameworku

Mezi hlavní nevýhody patří:

  • jiný postup práce – třídy jsou vytvářeny přes command line, konfigurace je řešena přes Groovy třídy, GORM (je třeba si zvyknout)
  • v IDE – žádné doplňování, kontrola chyb apod. (vychází z toho, že je to Groovy)
  • subjektivní = mohlo by se více konfigurovat přes anotace (týká se hlavně GORM)

Spring ROO

Spring ROO je podobně jako Grails framework především pro urychlení startu vývoje aplikace. Ačkoliv se Grails hodně podobá, má mnohem širší záběr a také není tolik invazivní jako Grails – kdykoliv jde z projektu vyjmout nebo naopak na projekt nasadit (lze tedy použít i na existující projekty).

Celý Spring ROO je založen na AOP (díky tomu není tak invazivní) – ke každé třídě, kterou pomocí něho vytvoříte se vytvářejí aspekty. Dále je založen na Mavenu – využívá jeho klasickou adresářovou strukturu (oproti Grails). Do generovaných tříd můžete dělat i ruční změny – Roo je bude respektovat. Ve velké míře se používají anotace.

Hlavní výhody:

  • excelentní integrace s IDE(STS)
  • možnost pouštět na jakémkoliv serveru (stále Spring aplikace)
  • Spring :)
  • anotace
  • Hibernate
  • spousty detailní dokumentace
  • neustálý vývoj

Nevýhody:

  • jiný typ práce, na který je si třeba zvyknout (vytváření tříd apod.)
  • mladá technologie – kam se bude vyvíjet?

dmServer

dmServer je aplikační server pro JEE aplikace. Snaží se konkurovat především JBoss serveru, který je nyní „intergrován“ v JBoss Seam frameworku (takže si konkurují i frameworky). Zaměřuje se především na OSGi (modulový vývoj aplikací), ale podporuje i ostatní Java technologie kromě EJB3.

K dispozici jsou dvě verze – 1.0 podporuje JDK5+ a 2.0 podporuje JDK6+. Je dostupný zdarma a je to open-source. Mezi jeho další konkurenty patří GlassFish od Sunu (Oracle).

Malé srovnání vůči JBoss serveru:

JBoss:

  • je tu už dlouho a je to nepsaný standard (šlape mu na paty GlassFish)
  • jsou k němu zajímavé nástroje a je dostatečně otestovaný
  • umí OSGi, JMS, EJB3, …
  • dokáže se integrovat do IDE
  • Seam framework (JBoss + JSF)

dmServer:

  • relativně nový a ne tolik otestovaný (2008)
  • složen z několika již léty prověřených technologií (Spring, Tomcat, Equinox – OSGi framework)
  • umí OSGi, JMS, … , neumí EJB
  • umí perfektně pracovat s IDE (STS)
  • podpora Spring frameworku

tcServer

tcServer je webový kontejner postavený na Tomcatu. Jedná se v podstatě pouze o jeho vylepšení a poskytnutí nástrojů, které umožňují lepší práci s aplikacemi běžícími na tomto serveru. Mezi tyto možnosti patří například detailní informace o requestech, sledování výkonu aplikace, integrace s STS apod.

Jedná se o komerční produkt – za jeho používání musíte platit roční poplatky (obsahují podporu). Výhodou je, že jeho developer edice je zdarma.

Pár možností, které nabízí:

  • vzdálená administrace přes Web nebo cmd
  • možnosti pohodlného nastavení aplikací a důležitých parametrů
  • nastavení DB připojení (pooling)vylepšená správa aplikací
  • vylepšené reportování chyb aplikací
  • kompabilita s Tomcatem 6
  • support (v placené verzi)
  • updaty, patche, záruka
  • Spring Insight (analýza a sledování aplikací)

Spring WebFlow

Zaměřuje se především na poskytnutí jazyka pro psaní jednoduše definovatelných uživatelských dialogů. Pokud tedy potřebujeme dialog, který má několik kroků, kde se mezi těmito kroky potřebujeme pohybovat dopředu i nazpět a dialog může mít několik možných variant, pak je WebFlow ideální. Jazyk který poskytuje, oprostí programátora od kontrolování session a podobných technik, kterým by se při klasické implementaci jen těžko vyhnul. Velice jednoduše jde integrovat s Spring MVC či Grails.

Co vše umí:

  • jasně definované flow formulářů
  • session se po provedení znehodnotí – bezpečnost
  • automatické vyčištění zdrojů
  • umožňuje pracovat s více okny či záložkami prohlížeče (bezkolizní processing)
  • umožňuje používat tlačítka Back, Forward, Refresh v prohlížeči

Spring JS

Vlastní abstrakce nad JS frameworky, založená na DOJO frameworku. Primárně část Spring WebFlow. Bere si za úkol zjednodušit práci s AJAX requesty.

Co vše umí:

  • integrovat DOJO widgety
  • client-side validace
  • form auto-fill (doplňování údajů do formulářů)
  • sledování progresu u dlouhých operací
  • rich GUI (seřazení tabulky apod.)

Závěr

Jak se můžete přesvědčit, SpringSource nabízí velmi mnoho nástrojů a technologií, které můžete na svých projektech použít. Investice do jejich ovládnutí se zcela určitě vyplatí – ze zkušeností na projektech, které firma MoroSystems realizuje, se ukazuje jejich reálný přínos, který nám umožňuje rychle vytvářet kvalitní aplikace.