pátek 25. června 2004

Editorial

Jak se naučit programovat, věčné to téma na dišputace mezi programátory. Nedávno jsem se podivoval nad produktivitou 500 řádků kódu za den. Naštěstí 500 řádků kódu bylo moc i na Tomáše Koubu (Java.NET) a pustil se do seriozního hledání o produktivitě kódu (LOC - line of code) ve spotu Rychlost programování.

V každém případě lze považovat za hvězdu programátora, který vyprodukuje 100 řádek zdrojového kódu za den. Samozřejmě myslím tím kód odladěný a plně funkční. Programátora, který 100 řádek kódu napíše a odladí za dva dny je programátor průměrný, ale neměl by mít se svými nadřízenými se svou produktivitou žádný problém.

Trochu z jiného soudku, velký malý pomocník jménem Ant je neocenitelným dělníkem většiny projektů. Nad novými vlastnostmi verze 1.6 se sešly články

Neméně zajímavou se stala oficiální tisková zprava Eclipse Foundation o oficiálním vypuštění verze 3.0, na jejímž vývoji se pracovalo přes patnáct měsíců. Očekávaný den D nastane 30.června 2004, stejně jako si školáci ponesou svá vysvědčení, tak i verze 3.0 bude oceněna a vysvědčení ji vystaví uživatelé.

čtvrtek 24. června 2004

Hibernate Synchronizer - hibernujeme v Eclipse

Pokud využíváte služeb O/R frameworku Hibernate, pak se dříve nebo později bude hodit pomocník, který práci usnadní. Dobrým sluhou může být plug-in Hibernate Synchronizer do vývojového prostředí Eclipse.

Hibernate Synchronizer toho opravdu umí hodně

  • Generování kódu (POJO objekty, DAO objekty atd.) z mapovacích hbm.xml souborů.
  • XML editor s code asistentem pro hibernatovské soubory
  • Vytváření šablony pro generování kódu
  • Definování akcí, na které je možno navěsit specifické činnosti
  • samozřejmostí jsou i Wizards

Plug-iny do Eclipse určené k práci s Hibernate se staly námětem k článku Jamese Elliotta Working with Hibernate in Eclipse. V článku je kromě zevrubně pospaného (včetně instalace) Hibernate Synchronizeru možné nalézt i odkazy s krátkým popisem plug-inu HiberClipse a Hibernator

Související články

středa 23. června 2004

J2EE vzory:DAO - odstínění zdroje dat

Návrhový vzor DAO (Data Acess Object) patří k základním J2EE vzorům, které je dobré pochopit, pokud chcete tvořit flexibilní, nejen, webové aplikace. Pokud se děsíte slovního spojeni J2EE vzor, tak vás mohu uklidnit, J2EE je jen kategorie, do které byl DAO zařazen. V tomto povídání volně navážu na spot ORM letem světem

Smysl

Zavádí rozhraní mezi zdrojem dat a jejich konzumenty, izoluje logiku pro získání dat do jedné vrstvy.

Motiv

Stejně jako jsou různorodé aplikace jsou různorodé zdroje dat, které aplikace využívají. Mezi ty klasické patří relační databáze, objektové databáze atd. Není neobvyklé, že aplikace využívají další mnohem specifičtější zdroje jako webové služby.

Tyto a samozřejmě další zdroje dat mají určitý způsob pro získávání dat. V relačních databázích to je jazyk SQL, pro jejich O/R kolegy to je obdoba SQL. Zdroje dat se nám můžou v rámci nasazení měnit, aplikace musí umět spolupracovat jak s MySQL tak Oracle databází, webové služby jsou nahrazeny XML soubory.

S takto různorodými zdroji dat to v praxi dopadá tak, že v tom horším případě existuje v aplikační logice plno rozboček když databáze Oracle tak. V tom lepším případě máme persistentní vrstvu, která nás odstiňuje, ale co když ji např. z výkonnostních důvodů potřebujeme změnit? Dalším problémem je roztroušení logiky pro získání dat takřka po všech čertech a z toho plynoucí problémy.

Řešením těchto problému jsou DAO (Data Acess Object), které zavádí rozhraní pro práci s daty a zároveň implementují potřebnou logiku. Aplikační vrstva pak využívá služeb DAO vrstvy, která ji odstiňuje od zdroje(ů) dat a zároveň koncentruje všechnu logiku pro získání dat.

Diagram tříd v DAO schématu

Diagram tříd znázorňuje rozhraní IDao, které dále využívá aplikační logika odstíněná od konkrétní DAO implementace, která zapouzdřuje jednotlivé datové zdroje. Přenos dat mezi DAO a aplikační logikou mohou zprostředkovat například POJO objkety. Volba konkrétního DAO objektu v závislosti na prostředí může obstarat IoC framework viz. (Dagblog 17.05.2004)J2EE vzory: Inversion of Control a Dependency Injection nebo implementace vzoru Factory.

Pro další studium DAO:

pondělí 21. června 2004

Tiles - opravdu chytré šablony pro JSP

Při tvorbě uživatelského rozhraní webových aplikací jsou vývojáři konfrontování s oddělením aplikační a prezentační logiky. Samotné oddělení prezentační a aplikační logiky je téma tak otřískané, že se jím nebudu v tomto článku zabývat.

Druhým neméně závažným problémem při tvorbě GUI je oddělení vlastního obsahu od jeho uspořádání. Předesílám, že nemám na mysli, prezentační vlastnosti, které nám umožňuje separovat CSS.

Dříve nebo později nastane situace, kdy bude rozvržení stránky tzv. layout nutné změnit. V produkčním nasazení to bývá nejčastěji při specifických požadavcích zákazníka např. na začlenění webové aplikace do portálu či intra/extra netu. V takových případech musíme pohlídnout pravdě do očí a layout změnit.

Ono se to řekne změnit layout, ale představme si co to všechno obnáší? Kromě problémů ryze technických jako paralelního udržování několika verzí GUI, to přináší i přepsání velkého množství prezentačního kódu. Tyto problémy jsou způsobeny mícháním vlastního obsahu s jeho rozvržením, který je tolik typický pro webové aplikace.

Řešení těchto problému je založeno právě na striktním oddělení obsahu a jeho rozvržení, kterého je dosaženo pomocí mechanismu šablon. Co je to vlastně ta šablona? Šablona není nic prostšího než struktura, kterou lze opsat.

V šabloně definujeme vlastní strukturu, kterou může například tvořit rozvržení jednotlivých komponent stránky tedy ovládací prvky, záhlaví, datová část, navigace atd. Šablonu, kterou máme připravenu, všechny stránky opíšou a přidají vlastní obsah např. seznam objednávek.

Pomocí šablon není problém rozebrat a seskládat stránku na atomické části a umožnit změnu rozvržení na jednom místě. Jednotlivé atomické části jsou pak znovupoužitelné v rámci aplikace či aplikací a snižují redundanci kódu.

Když jsem přemýšlel o tomto článku, tak mě intuice vedla k šablonovacímu systému SMARTY, který popisuje Štěpán Kouba v seriálu SMARTY - chytré šablony pro PHP na serveru Interval.cz.

S odstupem času nejsou SMARTY tím pravým zástupcem šablonovacího systému neboť se snaží spíše o oddělení aplikační a prezentační logiky, což je sice základní premisa, ale není to co by nám umožňovalo oddělit rozvržení od obsahu.

Měrou vrchovatou mé očekávání naplnily až Tiles patřící pod MVC framework Struts. "Dlaždice" nabízejí mnohem více možností než jsem popsal, samozřejmá je podpora internacionalizace, definice šablony v XML atd. Pokud hledáte šablonovací systém pro JSP tak by Tiles mohly být tou pravou volbou a pokud váháte tak doporučují přečíst sérii článků Chucka Cavanesse Programming Jakarta Struts: Using Tiles, Part 1.