Ako iste mnohí čitatelia tohto portálu vedia, konala sa v dňoch 18-20.6 po prvý raz konferencia The Server Side - Java Synopsium (TSS-JS) v Prahe. Portál The Server Side si myslím, že nikomu extra predstavovať netreba, aspoň pre mňa to bol v začiatkoch s Javou jeden z prvých informačných zdrojov. Keďže sa aj mne vďaka CZJUGu podarilo na konferenciu dostať, rozhodol som sa podeliť o svoje zážitky z konferencie.

Každá prednáška mala vyhradených 60 minút a paralelne bežali takmer stále 3 technologické prednášky. Sem-tam sa objavila aj marketingovo zameraná prednáška od sponzorov alebo volnejšia moderovaná diskusia na určitú tému. Myslím si, že TSS-JS bola obsahovo dobre zvládnuta a dostatočne rozmanitá, viď agenda.

V tomto príspevku by som chcel zhodnotiť jednotlivé prednášky resp. prezentované témy, kedže vačšina tém mala aspoň 2 prednášky. Samozrejme, kedže som zatiaľ neobjavil tajomstvo seba-klonovania (určite by sa hodilo, kedže na sledovanie súčasného technologickeho trendu u mňa jeden život akosi nestačí), budem spomínať iba to, čoho som ja sám zúčastnil. Tým pádom určite poskytnem subjektívny pohľad, no budem sa snažiť prezentovať názory jednotlivých prednášajúcich z toho, čo som zachytil.

Ešte predtým než sa do toho pustím, jedna dôležitá vec, ktorú som si uvedomil v priebehu prednášky. Snažím sa navštevovať prednášky a konferencie v mojom okolí (samozrejme preferujem tie, ktoré sú zadarmo, keďže na to zatiaľ nemám dedikovaného sponzora :-)), pravidelne a teda momentálne najviac navštevujem prednášky usporiadané CZJUGom. Ako zrejme každý iný, mal som určité očakávania od TSS-JS. Keďže na podobnej udalosti som ešte nikdy predtým nebol, môžem to teda porovnávať len s CZJUGom. Ak aj nepočítam manažérsky zamerané prednášky, ktoré proste na TSS-JS byť museli, musím povedať, že je úroveň prednášok CZJUGu viac ako porovnateľná. Neviem, či som mal nešťastie alebo sa to proste aj na takejto udalosti stáva, no asi dva-krát sa mi prihodilo, že technologická prednáška bola slabá. Prednášajúci pôsobil nedostatočne pripravený a prednáška nemala podľa mňa žiadnu informačnú hodnotu. Samozrejme sa ľahko sa kritizuje, hlavne keď ja som ešte nič nespravil. Chcel som tým hlavne poukázať, že prednášky CZJUGu u mňa nastavili latku dosť vysoko. Chcel by som preto všetkých bývalých aj budúcich (hlavne domácich) prednášajúcich povzbudiť, že majú na to a podla mňa by obstáli aj v silnej svetovej konkurencii !

No ale teraz už poďme na vec:

Service Oriented Architecture (SOA)

Na túto tému som sa explicitne nezameral, no podarilo sa mi navštíviť 2 prednášky, ktoré so SOA priamo súviseli. Určite musím potvrdiť, že SOA stále žije a je stále silnejsia než Chuck Norris. Dôkazom toho je aj SCA, za ktorou stojí kolaborácia OpenSOA. Nepríjemné je, že členom zatiaľ nie je MicroSoft, ale vraj sa tak skôr či neskôr stane. Aktuálna špecifikácia je SCA v1.00 a pracuje sa na dalšej verzii. Vytváranie nových SCA kompoment si môžeme veľmi jednoducho predstaviť tak, že v XML (prípadne anotáciach) popíšeme na čom naša komponenta závisí napr. na konkrétnej webovej službe alebo na inej existujúcej komponente, a následne by malo byť možné túto komponentu nezávisle od implementačnej platformy znova použiť.

Zaujímavé bolo, že na dalšej prednáške, ktorá bola zameraná na “Enterprise integration patterns”, prednášajúci aj poslucháči do istej miery spochybnili užitočnosť týchto komponentových skladačiek. Dôvod bol taký, že existujú ESB a ďalšie vzory, ktorými vieme dosiahnuť podobný efekt a pritom znovu použiteľné časti systému nemusia používať ďalsiu SCA vrstvu.

Java Performance Tooling

Túto prednášku som si pozrel aj kvôli tomu, že to bola, pokiaľ viem, jediná prednášajúca. Ako sa sama predstavila, je z veľkej modrej spoločnosti zvanej IBM (napriek tomu, že s modrými vlasmi podľa mnohých nevyzerá ako typický zamestnanec, sama tento fakt vyvrátila :-)). Prednáška bola obsahom veľmi podobná tejto, takže spomeniem len pikošky:

  • IBM má tak veľa nástrojov, že potrebujeme meta-nástroj na to, aby sme našli to, čo hľadáme (link som nepripojil, lebo som ho medzi nástrojmi nevedel nájsť ;-))
  • nefungujúcu ukážku ospravedlnila novou metodikou “Audience Driven Development”, ktorá by mohla byť alternatívou ku Test Driven Development kvôli tomu, že ak niekedy niečo nefunguje, tak je to na prednáške :-)

Z technologického hľadiska ma presvedčila, takže dám ešte JVM od IBM šancu, a to minimálne kvôli možnosti flexibilne prepínačom z príkazového riadku zapnúť sledovanie volania metód. Taktiež pre riešenie pamäťových problémov v Jave vyzerá celkom sľubne 'nový' Eclipse Memory Analyzer.

Spring a Java Persitence API (JPA)

Tieto 2 témy si dovolím spojiť, keďže z nich mám podobný pocit. Od oboch som očakával, že sa dozviem, čo sa plánuje do nových verzií. Do JPA 2.0 určite pribudnú nové anotácie, stále si ale nie som istý, či dostatočne eliminujú potrebu neštandartných anotácií v reálnom použití. Štandard sa ale, aspoň podľa slov prednášajúceho, uberá smerom, ktorý diktujú používatelia. V rámci expertnej skupiny sa ešte stále nepracovalo na JPA 'criteria' API alternatíve k JPA-QL, na čo som bol osobne najviac zvedavý, takže uvidíme.

Spring 3.0 bude vyžadovať Java verzie 5+ a určite by mal byť viac REST-ovejší, dostane EL, bude sa pripravovať na príchod Servlet 3.0 a mnohé ďalšie veci ako Portlet 2.0. Okrem toho Juergen Hoeller väčšinu času rozprával o dependency injection anotáciach z aktuálnej 2.x verzie a upozornil na nové AOP možnosti pomocou AspectJ. Ja osobne som očakával viac ukážok a pokročilých tém, už len kvôli tomu koľko rúk sa prihlásilo, že Spring používa.

Zaujímavejšia mi prišla prednáška venovaná Spring Dynamic Modules for OSGi, hlavne preto, že dala základnú predstavu ako vlastne vyzerá integrácia s OSGi platformou. Keďže moje znalosti OSGi sú slabé a materiály k prednáške momentálne nie sú verejné, odkážem Vás na podobný článok.

Na záver medzi rečou na úplne inej prednáške sa v súvislosti so Spring-om diskutovalo o tom, že by mohlo dôjsť k zmene jeho licencie a duálnom (aj komerčnom) licensovaní Spring-u kvôli tomu, aby Spring Source aj niečo zarobilo na tom, ak nejaká tretia strana zmodifikuje Spring a zaintegruje ho do svojho komerčného produktu. Neviem odkiaľ čerpal prednášajúci informácie, takže by som nerád šíril klebety, ale ak je na tom niečo pravdy, som zvedavý ako to vlastne dopadne ...

Web Development

Asi nikoho neprekvapí vznik nového webového frameworku v Jave, tento ale ako nakoniec každý, je niečim iný. Iný je podľa mňa hlavne tým, že umožňuje vývoj v POJ (Plain Old Java, dovolím si použiť tento termín, lebo som ho na konferencii zachytil :)) štýlom PHP, tj. bez reštartu aplikácie je možné znovu nahrať modifikované triedy obsahujúce logiku a zachovať pritom stav aplikácie. Jedná sa o RIFE a táto jeho schopnosť sa volá Web continuations. Ďalej som mal tú česť vidieť JavaRebel v akcii. Pre toho kto nepozná, sa v podstate jedná o všeobecné riešenie problematiky znovu nahrávania tried v Jave so zachovaním si stavu. Samozrejme, prednášajúci bol ihneď bombardovaný otázkami, na otázku, či ich produkt bude niekedy open-source odpovedal, že nikto nevie čo bude o 5 rokov. Na túto tému potom padla klebeta, že v Jave continuations na natívnej úrovni "schválne" nie sú a pravdepodobne ani nebudú, lebo sa boja toho, čo by s tým vyvojári vyvádzali za neplechy typu nechať to zapnuté v produkcii. Tak celkom neviem, čo si o tom mám myslieť. Dúfam, že nastane tá nepravdepodobná možnosť, teraz po otvorení JDK ...

Na ďalšej prednáške zameranej na AJAX ma príjemne prekvapila používanosť DWR, ktorý je aktuálne (podľa http://www.indeed.com) 3-ťou najpoužívanejšou web technológiou, po JSF a Spring MVC. Nesmiem zabudnúť pripomenúť, že DWR má podporu pre Comet. JSF bolo pochválené aj zatratené, ba i verziu 2.0 znova sľubovali, vraj bude balzámom na dušu ;-). V závere ma prekvapil názor na Tapestry o tom, že je vraj oproti iným náročnejšie preniknúť do jeho tajov, ale malo by to stáť za to. No čo dodať, z mojej strany asi len toľko, že sa tak trochu zabudlo na Wicket.

Groovy a JRuby

Groovy som už poznal aj používal, takže som sa chvíľami nudil, prednášky ale boli zaujímavé a celkom dobre zvládnuté, aj napriek tomu, že Guillaume LaForge musel zaskakovať za Grails kolegu, ktorý kvôli chorobe nemohol prísť. Výstižný a motivujúci bol výrok, že jazyky ako Groovy alebo Ruby zmenia pohľad Java vývojára, ktorý sa už nikdy na svoj kód nebude pozerať ako predtým. S tým súvisí aj schopnosť MOP jazykov zmeniť tradičné navrhové vzory. Príkladom môžu byť virtuálne metódy pre vyhľadávanie (User.findByLogin()), alebo aj taký klasický singleton vzor sa môže zmeniť na nepoznanie, ak Vám jazyk umožní predefinovať fungovanie new operátora.

JRuby prednášky lákali už len preto, že prednášajúci mal na hlave každý deň iný klobúk ;-). Okrem toho som sa dozvedel, že vďaka JRuby má Java momentálne najrýchlejšiu knižnicu pre prácu s regulárnymi výrazmi, volá sa Oniguruma a je priamym portom 12000 riadkov C kódu. Ďalej JRuby prispelo ku vzniku projektu Da Vinci Machine, ktorý, ako mi bolo prisľúbené, prinesie svoje ovocie. Nová JVM inštrukcia (invokedynamic) je už dlhšiu dobu takmer istá pre Javu 7 a tak som zvedavý čo sa tam ešte prípadne dostane, vyzerá to na: “The (Java) Empire Strikes Back” :-).

Veľmi zaujímavá bola prednáška venovaná testovaniu v Ruby (a tým pádom aj v JRuby). Človek by neveril ako rôzne môže funkcionálne a unit testovanie vyzerať. Vďaka JRuby získali Java vývojári vynikajúce knižnice pre testovanie. Problémový pre agilný vývoj je, okrem integrácie s Ant-om prípadne Maven-om, len štart takýchto “ruby-oidných” testov, keďže ceremónia štartovania JRuby niečo trvá. V tomto smere ale autor Ola Bini ponúkol svoje riešenie JTestR http://jtestr.codehaus.org/ , určite sa oplatí minimálne o ňom vedieť.

Moju nejasnú pozíciu ohľadom tvorby doménovo špecifických jazykov http://en.wikipedia.org/wiki/Domain_Specific_Language presvedčil v diskusii argument, že učiť sa takýto špecifický jazyk pre konkrétny projekt môže byť jednoduchšie a efektívnejšie ako sa naučiť pracovať s API používaných knižníc.

Túto sekciu ukončím návratom k staticky typovaným jazykom a síce citátom z prednášky o Scale:

Primitívne typy v Jave sú naozaj chybou, boli vymyslené, aby privábili Céčkarov, ktorý počuli že čísla v SmallTalku sú objekty a sú veľmi neefektívne ...

Mohol by som naozaj napísať ešte zopár strán, no ako som na začiatku sľúbil, rozprával som objektívne o tom subjektívnom, čo som si ja odniesol. Predsa som na niečo zabudol, odniesol som si ešte aj nejaké kilečko naviac, keďže obedy boli chutné a výdatné :-). Na záver by som chcel poďakovať ľuďom stojacim za CZJUGom, menovite hlavne Roumenovi a Dagimu, že sa mi vďaka nim podarilouziť si túto legendárnu konferenciu.