Spring One - po prvním dni

Dnes začala v Amsterodamu konference Spring One zaměřená na technologie okolo Spring Frameworku (Spring samotný, Spring MVC, Spring WebFlow, Grails, Spring Batch, Spring Security, Spring tc a dm Server atd.). Konference se koná v hotelu Krasnopolski v úplném centru Amsterodamu. My jsme přijeli o den dříve, abychom si město stihli v klidu prohlédnout a projít si zajímavá místa (Red light district apod. :-) ). Nějaké fotografie si můžete prohlédnout zde. Kromě všudy přítomných coffee shopů mě zarazilo především to, že holanďané si vůbec nepotrpí na soukromí a ve velkých oknech řada domů nemá ani záclony, takže je jim běžně vidět téměř až do postele. Druhá věc, která vás na Amsterodamu zarazí, je neuvěřitelné množství kol - ty jsou tu daleko běžnějším dopravním prostředkem než třeba automobil. Průměrné stáří kol, je ovšem (soudě dle vzhledu) snad 20 let - jelikož jsou tu běžná kola podobná tomu, o kterém se v naší rodině traduje, že je předválečné. Zdá se, že tu holanďané soutěží o ošklivější kolo s největším zámkem, což mě přivádí k myšlence, že se tu musí kola poměrně dost "ztrácet".

Původně jsem ale chtěl psát především o konferenci a proto se k tomuto tématu zase vrátím...

Velmi zajímavá byla otevírací keynote, o kterou se postaral Rod Johnson a která se nesla v duchu poslední velké události, kterou je akvizice společnosti Sun Oraclem. V průběhu jsem se snažil trochu tweetovat, nicméně tweety jsou takové poměrně dost heslovité, takže to tu zkusím trochu rozvést (btw. souhrn tweetů od účastníků Spring One najdete zde).

Rod Johnson poměrně otevřeně vyslovil své pochybnosti o motivaci / schopnosti Oraclu dál vést inovativní rozvoj Java platformy, jako to Sun dělal dosud. Svůj názor si můžete udělat již z článku Roda zveřejněném na blogu SpringSource. Šel dokonce tak daleko, že projevil pochybnosti nad dalším fungováním JCP. Podle jeho názoru Oracle bude využívat všech prostředků k tomu, aby znevýhodnil svého konkurenta IBM. IBM jako takové je přitom jeden z největších kontributorů po Sunu jako takovém, což může vést k poměrně zajímavým ale ne příjemným dopadům. Zájem Oracle se vždy soustředil a dále také bude na vydělávání peněz. Podle Roda dojde pravděpodobně k velkému propouštění původních zaměstnanců Sunu a snahu o komercializaci dosavadního portfolia společnosti. První část dvé řeči Rod uzavřel větou: "So, are we at the party or at the funeral?"

Java jako taková má oproti ostatním platformám velkou výhodu ve vyspělosti, výkonnosti a škálovatelnosti a to především díky JVM a hotspotu. Na druhou stranu výrazně ztrácí na produktivitě a developer experience oproti mladším platformám / frameworkům jako jsou ROR (Ruby) nebo Zend (PHP). Java dává k dispozici obrovské množství knihoven / řešení / přístupů, což je na jednu stranu skvělé a na druhou stranu nové developery dokonale odrazuje. Java postrádá vyladěné prostředí, složené z konkrétních vytipovaných technologií, které do sebe zapadají a nabízejí jasný programový model (podobně jako mají již zmíněné platformy, nebo například i .NET). Přestože Rod (z pochopitelných důvodů) mluvil pouze o Spring platformě, řekl bych že o něco podobného se pokouší i JBoss se Seamem. Kromě frameworku, však Rod rozšířil platformu o další věci, které s vlastním zdrojovým kódem nemají zase až tak přímou souvislost (počínaje specializovaným IDE - tedy STS, platformou pro běh - tedy dm Server, až po vlastní deployment a správu - tc Server). Postupným cílem SpringSource je tedy nabídnout kompletní stack od vývojáře až po zákazníka (včetně SLA a 24x7 technické podpory), postavený na osvědčených opensource technologiích dovedených do komerční dokonalosti, které spolu vzájemně hrají.

Hlavní inovace do budoucna již nevidí přímo na Java platformě, ale na platformách postavených nad JVM (tedy např. v jazycích jako je Groovy, Scala apod.). Inovace s "odchodem" Sunu, tedy rozhodně nekončí, ale přesunují se do jiné části platformy a především více na úroveň komunity.

Překvapení dnešního dne bylo představení ROO (Real Object Oriented) v podání Bena Alexe (autor Acegi Security). Na internetu o tomto produktu není mnoho informací (jediný článek jsem našel zde) a já jsem ten termín dnes slyšel poprvé. V současné chvíli se jedná o command-line shell podobný tomu, jaký známe z Ruby on Rails / Grails. Pomocí příkazů je možné velmi rychle postavit aplikaci z nuly. Command line tool se snaží být velmi intuitivní a nabízí takové drobnosti jako je context command completion, obarvení textů s odlišným významem, do budoucna nahrávací možnosti, rollbacky a podobně. Je naprosto jasné, že command-line je pouze začátek - stejně jako u Grails/ROR začnou IDE určitě implementovat nadstavby, které povedou k dalšímu zjednodušení použití ROO. Co je důležité pro nás developery je (prý) možnost velmi jednoduše vytvářet vlastní Addony, které mohou výrazně rozšířit možnosti ROO. Poměrně zajímavý je přístup ROO k modifikaci zdrojových souborů v projektu. Základem jsou anotace @Roo dostupné pouze na úrovni SOURCE (RetentionPolicy.SOURCE), které označují zdrojové soubory, které jsou "managované" ROO. ROO potom monitoruje změny v těchto souborec a ty dál propaguje do dalších managovaných zdrojových souborů (např. přidání property v doménové JavaBean povede k přidání sloupce v tabulce a inputu ve web formuláři). Na úrovni Java souborů se potom veškeré dodané funkcionality injektují nikoliv přímo jako text do vlastního Java sourcu, ale jako AspectJ aspekt žijí vedle původní Java třídy a metody se přidávají až při vlastní kompilaci. Rozhodně bude ROO stát za další průzkum do budoucna.

Z dalších session byla zajímavá přednáška Jurgena Hoellera o Spring 3.0, který se blíží veřejnému vydání. Nicméně myslím, že nezazněly nějaké výrazné novinky oproti tomu co již byly zveřejněno na internetu (mám dojem, že něco je již k dispozici na Parleys.com). Z hlediska Spring MVC a Spring Webflow se postupně zavádí další a další zjednodušující prvky convention over configuration + anotací, takže řada základních usecase vyžaduje pouze pár krátkých řádků kódu. Zajímavé pro mne bylo zmínění projektu Spring JavaScript, který staví na DOJO toolkitu a je nyní součástí WebFlow projektu. Do budoucna by se měl stát prvotřídním projektem Springu a měl by být releasován zvlášť. Na pár předvedených usecasech vypadá velmi slibně a mohl by nám přinést poměrně zajímavé výhody a funkcionality na klientovi, přestože naším primárním Javascript toolkitem je jQuery.

Závěr večera patřil poměrně vydařené welcome party, kde se mi podařilo odchytit Guillaume Laforge a vyzpovídat ho trošku na téma integrace Groovy do Springu a taky výborně procvičit angličtinu s belgičanem, z jehož jména si vybavím už jen Hans. Uvidíme, co nám přinese den druhý ...

Update 28.4.09 - 8:30 Oficiální informace o Roo ze strany Spring Source zde.