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.