GeeCON 2010 - den první

V letošním roce jsme s kolegy z Forresta vyrazili na GeeCON v Poznani. Podle referencí z loňského roku se jednalo o velmi dobrou akci, takže jsme plni očekávání vyrazili směr Balt. Cesta do Poznani byla velmi jednoduchá - z Náchoda je to furt rovně :-) , překvapily mne příjemně stavy silnic - takovou po které jsme jeli my aby člověk v Čechách pohledal. Nakonec jsme do Poznani ve zdraví dorazili - čekal jsem spíš menší město a tak mě překvapilo, že Poznaň je větší než Brno. Pro zvědavce přikládám pár fotek z akce od organizátorů.

V tomto příspěvku se pokusím shrnout nějaké klíčové myšlenky přednášek, na kterých jsem byl. Snad se mi podaří vystihnout podstatu nicméně, dost pravděpodobně budou některé myšlenky vytržené z kontextu, protože příspěvek vznikal vždy z útržků poznámek.

Keynote / Thorbiörn Fritzon

Úvodní keynote obstaral vedoucí vývojového týmu Sunoraclu ve Švédsku - v podstatě celá se odehrávala v duchu ujištění, že ve všem co je pro Javu a komunitu důležité bude Oracle dál pokračovat a bude investovat. Jedním z cílů Oracle je růst komunity a proto chce a bude komunitě naslouchat. V současnosti je nás Javistů přes 9 miliónů (myslel jsem že víc :-) ). Thorbiörn na rovinu řekl, že Oracle si je dobře vědom toho, že pokud bude Java stagnovat bude za pár let mrtvá - Java prostě není Cobol. Proto čekají Javu významné investice. Explicitně zmiňoval několikrát JavaFX - humorně dokonce poznamenal, že sám velký Larry je z JavaFX nadšený (sám si ji testoval), což je asi to nejdůležitější :-) . Oracle se také snaží napravit proces JCP - navazuje přímý kontak s jednotlivými zástupci v JCP - doufejme, že to trošku zpružní celý proces a odstraní tu politické tahanice, na které si řada lidí stěžuje. Pracuje se na dokončení JDK7 (modularizace, podpora dalších jazyků, výkonnost a optimalizace pro multicore procesory). Další poměrně významnou novinkou je to, že Java HotSpot a JRockit se spojí - tj. z obou dvou produktů by měly být vzaty ty nejlepší věci a výsledkem by měl být jednotné řešení pro "OracleSun" distribuci Javy.

Object Teams - modularity / Stephan Herrmann

Tato přednáška byla velmi teoreticky orientovaná - celý princip Object Teams jednoduše řečeno spočívá v rozbití dědičnosti na úrovni tříd a její redefinice na úrovni instancí. Hlavní mantrou byla modularizace systému, nicméně konkrétní praktické přínosy tohoto přístupu mi unikaly. V současné chvíli je mi (z vlastní zkušenosti) jasný problém toho jak používáme (zneužíváme) dědičnost popř. vztah implements v Javě a je mi naprosto jasná motivace pro použití nečeho jako jsou Traits ve Scale, ale vlastní přístup metodiky Object Teams bych asi z dnešní přednášky aplikovat nedokázal. V podstatě jde o to, aby konkrétní třída a její instance (např. Person) mohla získat další vlastnosti za běhu při vstupu do kokrétního rozsahu platnosti (scope) - např. v rámci konkrétního bloku kódu se dokázala persistovat, monitorovat své změny, dokázala držet další dodatečné informace atd. Jako myšlenka je to skutečně výborné, nicméně, zdá se mi, že implementace ve Scale je daleko přímočařejší a pochopitelnější.

ObjectTeams jsou v současnosti incubator projektem Eclipse.org. Pro to abyste mohli vyvíjet projekt s použitím ObjectTeams budete potřebovat speciální kompilátor a speciální podporu v IDE (tj. Eclipse). To v mém případě poměrně značně diskvalifikuje ObjectTeams jako takový.

Rapid Server Side Java Development Using Spring Roo / Christian Tzolov (Tom Tom)

TomTom (vyrobce GPS navigací / mapového SW) používá Javu - zajímavé, kde všude na Javu narazíte. V průběhu přednášky proběhla praktická ukázka Roo v STS prostředí. Nemůžu se dočkat podpory v IntelliJ Idea (podle tweetu intelliole by toto již mělo být v nejnovější Idee s s AspectJ pluginem k dispozici) - tahle věc může skutečně v produktivitě Java programátorů značně pomoci.

Klíčová je ovšem také možnost rozšiřitelnosti Roo pro vlastní technologie - dokážu si jeho použití představit i v případě customizace našeho CMS řešení pro zákazníka. V praktické ukázce vytvořil Christian během hodiny jednoduchou dotazovací aplikací proti jejich RESTovému rozhranní. Pár fíčurek ze Springu 3.X (RestTemplate) se mi fakt líbilo, teď jen najít čas na otestování migrace našich knihoven z verze Springu 2.5.X.

Meet Complex Event Processing - emerging paradigm to build sophisticated, event-driven applications / Waldemar Kot

Zajímavý náhled to úplně odlišné domény. Tato přednáška za zabývala analýzou a zpracováním rozsáhlých toků dat (událostí) z různých zdrojů v reálném čase. Termín CEP (Complex event processing?) představuje způsob jako pomocí deklarativních zápisů v CQL (obdoba SQL s odlišnými podmínkovými konstrukty) reagovat na konkrétní trendy / stavy / kombinace událostí z různých zdrojů. Jednoduchý náhled na princip toho, jak to může fungovat, najdete zde. V konečném důsledku jsou vlastní možnosti dotazování nad neustále proudícími dat velmi impresivní.

Škoda jen, že byla celá přednáška zakončena odkazem na Oracle CEP Server s tím, že pokud bychom se chtěli něčemu podobnému věnovat, vyžadovalo by to implementaci aplikační logiky ve speciálním vývojovém prostředí pro speciální aplikační server od koho jiného, než od Oracle. Licenční podmínky jsem na webu ani nikde nenašel.

Nicméně princip se zdá poměrně přenositelný a snad existují i OS alternativy pro více "lightweight" použití, než je to od Oracle.

JSF 2.0, Myth and Reality / Ed Burns

Na tuhle přednášku jsem šel s cílem podívat se, co nového se událo v oblasti JSF, které jsem již relativně dávno odepsal. Pozoruhodně i ona přednáška se odehrávala v duchu, víme co bylo špatně a konečně jsme to opravili. Bylo zajímavé si poslechnout jaké byly důvody, které vedly k oněm "chybám", nicméně se mi zdá, že toto už skutečně nemůže přesvědčit odpadlíky jako jsem já. Může snad jen utěšit ty, kteří JSF používají a dlouho čekali na opravu věcí, které je musely neskutečně štvát. Jen pro rekapitulaci toho, co zaznělo jako největší výtky vůči JSF 1.X na přednášce:

  • Too much configuration - odvolání se na cílovou verzi platformy (1.0 pro JDK 1.4), convetion over configuration nebyla v době návrhu "módní"
  • Nesplňuje DRY (tj. plno věcí musel člověk udžovat v syncu ručně) - dědictví po Struts,
  • Nedebugovatelné - chybové hlášky závisely na vendorovi (implementaci)
  • Over-engineered - cílem byla maximální flexibilita, a ponechání si volné únikové cesty, kdyby některou fíčuru neodhadli
  • Pomalý a plýtvající - nafukování state objektů, prý více-méně obecný problém všech web-frameworků
  • Hard to learn - záleží z jakého prostředí člověk přichází, přestup ze Struts je lehký

Všechny uvedené poroblémy by mělo řešit JSF 2.0 s tím, že současné výhody (velká komunita, component market, encapsulation model) by měly zůstat zachovány. V JSF 2.0 v kombinaci se Servlet 3.0 by měly zmizet všechny XML (vše řešeno anotacemi a convention over configuration). Existuje podpora různých prostředí (environments) pro nastavení různých chování v nich (development vs. production). Ještě dále se rozšířily možnosti "extension points", které jako jediné, pokud si dobře pamatuji umožňovaly ručně pořešit průšvihové chování starších specifikací JSF.

Gradle - A Better Way To Build / Hans Dockter

Gradle je v podstatě kombinace Mavenu (ve své deklarativní podstatě) a Antu (v jednoduché možnosti "skriptování") využívající vlastnosti Groovy jako dynamického jazyka pro jednoduchou tvorbu DSL. Hans na jednoduchých příkladech prokázal že možnost customizace Gradle buildu je skutečně za hranicemi toho, co je možné s vynaložením přiměřeného úsilí dosáhnout v Mavenu. Na druhou stranu už na první pohled bylo jasné, že ani imperativní "programování" v Antu se s ním nemůže rovnat. Skutečně jsem byl velmi mile překvapen z toho, co a jak se v Gradle dělá.

Hans Dockter mluvil o plánované podpoře paralelních a distribuovaných buildy, současné podpoře paralelního běhu testů, restartu JVM po běhu X testů atd. Skutečně možnosti Gradle už na první pohled vypadaly velmi zajímavě. Na ukázkách rozšíření byla citelná velmi silná podpora lifecycle eventů, na které je možné jednoduše navěsit closures upravující chování v daném místě. Velmi hezká je také práce s více modulovými projekty - je možné jednoduše buildovat artefakt a ty, na kterých je tento artefakt závislý (nebo, které na něm závisí). Součástí je i obousměrná integrace s Antem.

V současné době mám jen pár věcí, které musím dál prozkoumat před tím, než bych začal Gradle propagovat pro vnitrofiremní použití - integrace s IDE (tj. aby např. Idea automaticky při změně build scriptu načetla deklarované závislé knihovny, správně identifikovala adresáře se zdrojovými soubory, správně pochopila závislosti mezi moduly atp.), podpora práce s SCM (slyšel jsem, že tady má Gradle ještě mezeru), podpora release cyklu a podobné "drobnosti". Ne vždy nadšení z přednášky obstojí realitě života, nicméně alespoň pro tuto chvíli nadšený jsem.

Get 'em before they get you, Vaclav Pech

Opakování pro ty, kdo nebyli na pražském setkání CZJUG. Nicméně bylo příjemné si jej poslechnout znovu - Václav je prostě skvělý řečník.

Závěrem

Na GeeConu se nás Čechů sešlo víc - Lukáš Křečan stihl svůj příspěvek na blogu i dřív než já, Vašek Pech tu přednášel, Míra Kopecký je jedním z organizátorů. Je fajn mít skvělou konferenci tak "kousek od domu". Těším se co přinese zítřek.