linux.java.net
Dobrou zprávou pro všechny tučňákomilné je čerstvé zprovoznění stránek linux.java.net. Stránky by měli přinášet informace o Javě na Linuxech, řešení problému atd.
Doufejme, že se je podaří naplnit zajímavým obsahem. Více viz. startovací přízpěvek Chrise DiBona.
Mule — open-source Enterprise Service Bus
Před nějakým časem zavedla firma Sonic Software termín "Enterprise Service Bus" (ESB, česky též "Podniková sběrnice služeb). Pod tímto pojmem se skrývá integrační služba, která přijímá přes různé kanály zprávy a ty na základě různých pravidel zpracovávají, případně přeposílají dál; služba typicky bývá napojena přes JCA na konkrétní ERP systém. Jako transportni vstva je obvykle použito JMS, nicméně k dispozici jsou pochopitelně adaptéry pro komunikaci přes webové služby či jiná rozhraní (jinak by to byla houby integrace, že). Podrobnější popis najdete třeba na webu společnosti Fiorano, dokument ve formátu PDF je přístupný po registraci.
Pojem se ujal, Google vám na něj najde spoustu odkazů, přední výrobci software se předhání ve svých ESB řešeních a dnes jsem si všiml i první open-source implementace.
Předevčírem vyšla verze 0.8 na ESB založeného frameworku Mule. Mule je založena na moderním trendu nevnucovat žádná svá rozhraní, jeho ESB zahrnuje přehršel konektorů pro nejrůznější komunikační protokoly. Na podrobnější průzkum nemám momentálně čas, takže zůstanu u prostého shrnutí — tento projekt vypadá velmi zajímavě.
Tutoriál pro Hibernate + XDoclet
Přiměřeně stručný Tutoriál pro Hibernate a XDoclet má na svém webu Mark Eagle. Nejedná se o text určený pro naprosté začátečníky, který by na X stránkách popisoval, k čemu je Hibernate dobrý, najdete tam hlavně pár vzorových tříd proložených XDoclet značkami.
A od téhož pána je navíc k dispozici pro snazší psaní Hibernate tagů XDocletu šablona do Eclipse a WSAD.
Související odkazy:
Co je to Aspect Oriented Programming?
Zkratka AOP je poslední dobou velmi módní, kdekdo to používá a kdo ne, ten to aspoň plánuje či přinejmenším jí věští velkou budoucnost. Člověk se div nebojí otevřít pověstnou konzervu, aby z ní taky nějaký ten aspekt nevykoukl.
Vulgárně řečeno — aspekt je kus kódu, který necháme vyvolat na začátku nebo na konci nějaké metody.
Motivační příklad: představme si třídu, která vykonává nějaký podstatný kus aplikační logiky. Typicky vypadá nějak takto:
public class KusAplikacniLogiky extends ObecnejsiKus {
// data tridy;
// jina pomocna data;
// pretizeni rodicovskych metod
public void provedNecoPodstatneho () {
// autentizace
// autorizace
// dalsi nezajimavy kod
// logovani zacatku operace
// vlastni aplikacni logika — konecne!
// logovani ukonceni operace
// treba jeste neco
}
}
Věru otravné.
Takový kód je mimo jiné nepříjemný i tím, že kolem toho podstatného je spousta omáčky, která nás omezuje ve znovupoužitelnosti. Můžeme si sice říci, že kdybychom vlastní aplikační logiku zapouzdřili do samostatného objektu, jak nám velí Objektově orientované programování; nezaměňovat s Organizací pro osvobození Palestiny, máme vyhráno. Tak jaké sakra aspekty na nás?
Vtip je v tom, že vyhráno můžeme mít víc. Co třeba kdybychom pro znovupoužití toho podstatného nechtěli budovat obalující objekt, který řeší všechnu tu autentizaci, logování a podobně, ale chtěli mít znovupoužitelný celý objektový model?
V tomto právě aspekty pomohou — umožní nám výše uvedený příklad zjednodušit na "to podstatné", a veškerá omáčka se přidává ad hoc dle potřeb prostou konfigurací zkompilované třídy.
Pokud to zní jako magie, je třeba říci, že Java sama o sobě takovéto kejkle přímo nepodporuje, proto AOP frameworky v jazyce Java tyto požadavky řeší oklikou — buď předzpracováním zdrojového kódu nebo úpravami na úrovni výsledného bytecode.
Pár odkazů:
- aspekty mi dnes ráno připoměl článek Introduction to Aspect-Oriented Programming u O'Reillyho
- obsáhlejší úvod do AOP najdete v čtyřdílném článku I want my AOP! na JavaWorldu (a vůbec nevadí, že byl napsán už před dvěma lety)
- zajímá-li vás J2EE server JBoss, určitě nepřehlédněte Aspect-Oriented Programming and JBoss od pánů Billa Burkeho a Adriana Brocka, kromě základních motivačních úvah tam najdeme zejména informace o frameworku JBoss AOP a o tom, jak chystaný JBoss 4 využívá aspektů pro realizaci idey návratu k POJOs neboli obyčejným objektům nesvázaným tunami sofistikovaných API
- AspectJ brings AOP to the Java language na IBM developerWorks — převážně o AspectJ
- máte-li rádi jasné definice, je pro vás prezentace, která se v úvodu pokouší exaktněji objastnit termín "aspekt"
- nikdo snad doufám nebudete natolik zaujatý, aby si na AOP udělal negativní názor proto, že jej chválí i Microsoft (a kromě chválení nabízí i podporu ve svých řešeních)
- a další informace či odkazy na konkretní AOP frameworky si zájemci určitě najdou sami

Hibernate — Java Persistence Framework
U O'Reillyho vyšel jednoduchý a názorný článek zazimujte svá data (dobrá, překlad je trochu násilný) o oblíbené knihovně Hibernate, která programátorovi výrazně zjednoduší práci s persistentními úložišti dat (zejména relačními databázemi) pomocí transparentního namapování Javových objektů na relační struktury použité databáze.
Názorný příklad: mějme hotel pro pro zvířátka, třeba kočky. Pokoje jsou v objektovém modelu reprezentovány třídou Pokoj, kočky Kocka. Chceme-li v takovémto modelu jedno zvíře ubytovat, není třeba řešit připojeni k databázi ani konstrukci SQL dotazu, stačí napsat pouze pokoj.setObyvatel(kocka) (předpokládáme-li, že pokoj a kocka jsou instancemi příslušných tříd.
Kromě toho vám Hibernate nabízí podporu řady nejrůznějších dialektů SQL, nad kterými definuje vlastní jednoduchý dotazovací jazyk. A je-li nejhůř, samozřejmě můžete k databázi přistoupit přímo pomocí SQL dotazu na použitou databázi.
Na první pohled by se dalo říci, ze něco podobného řeší CMP v EJB, ale přeci jenom, není používání J2EE serveru jen kvůli existenci objektově relačnímu mapování tak trochu kanón na vrabce? No... je :)
3x o Java Server Faces
Na (samozřejmě stále vynikajícím a mém oblíbeném) serveru TheServerSide.com vyšel rozhovor s pánem jménem Kito Mann, autorem knihy Java Server Faces in Action (nedávno jsem se zmiňoval o dostupnosti ukázek na TheServerSide.com).
V rozhovoru se dozvíte, co především podle Kito Manna Java Server Faces přináší, kde má ještě své rezervy, co bude dál, jak se to má dohromady s ostatními existujícími webovými frameworky v jazyce Java jako Struts, Tapestry či Webworks, porovnání odpovídajícího webového vybavení poskytovanými technologiemi Java a .NET a leccos dalšího.
Zajímavý je v rozhovoru zmíněný odkaz na Java Server Faces IDE Faces Console od Jamese Holmese, autora populární Struts Console. Faces Console je dostupná zdarma, aktuální verze (z 10. ledna) je 1.0 beta 2.
Nicméně nejen Java Server Faces živ je člověk — na řadě je trochu kritiky. A nikoho jistě nepřekvapí, že pochází z tábora JBoss Group, jejíž vztahy se Sun Microsystems jsou... řekněme rozporuplné.
V článku rázně nazvaném Tapestry vs JSF na JBossím blogu linuxintegrators.com se Andrew C. Oliver pokouší o porovnání fundamentálních ideí Java Server Faces s méně známým frameworkem Tapestry. Konkrétně říká: "Podstatou Tapestry je zjednodušit prezentační vrstvu. Java Server Faces zobecňují komponenty prezentační vrstvy."
Co je lepší? Andrew správně podotýká, že flexibilita a obecnost JSF s sebou pochopitelně přináší i problémy — vytvářet obecná řešení je vždy složité. A klíčová otázka zní — je nutné psát taky, abychom byli kompatibilní s všemi frameworky, které podporují JSF? Proč si raději nezvolit ten jeden jediný, který je pro naše účely nejvhodnější?
Osobně mohu říct, že mě obecnost Java Server Faces trochu děsí, představa, že bych pro každou aplikaci používal značky jako <f:use faces> či <h:command button> a popisoval je ukecanými XML konfiguráky. mi nepřijde úplně lákavá. Na druhou stranu si dokážu představit, že s kvalitními (a zdarma dostupnými) GUI nadstavbami na programátorovi zbudou jen sympatické zobecňující aspekty JSF. Uvidíme.
Java na Marsu
Na CNN vyšel článek, který se zaobírá skutečností, že robot Spirit, který minulý týden úspěšně začal pobíhat po povrhu Marsu, je naprogramován v jazyce Java.
Sice formou na mne toto pojednání působí dojmem klasického PR článku, ale stejně potěší :)