Chtěl bych se s vámi všemi podělit o to, které technologie používáme pro psaní java web aplikací.
Začněme tím co teď aktuálně používáme:
- Hibernate – ORM – persistentní vrstva – stará se o ukládání objektů do relační databáze. Jedná se de-facto o standard.
- AndroMDA – Model Driven Architecture – nástroj, který nám z UML modelu (který obsahuje tagged values pro hibernate) generuje XML mapování pro hibernate a kostry objektů pro javu. Je to výborné hlavně když řešíte vazby mezi objekty. Opravdu to docela ušetří čas.
- Maven – zatím jej používáme jen u části projektů, ale plánujeme, že časem zcela nahradí ant (u nás :-). Takové chytré "bildítko". Používáme stále verzi 1.0.x.
- Freemarker – docela povedený šablonovací systém. Teď jej používáme pro generování tiskových sestav (pro UJAC) a jako "view" vrstvu u našeho frameworku.
- UJAC – generátor PDF – používáme jej pro generování PDF dokumentů z javy.
- OGNL – nástroj pro volání metod přes "reflection". Používáme jej pro vazbu mezi vizualizací a datovým modelem – přistupujeme pomocí toho k "properties" objektu.
- Tomcat 5.0 – náš JSP kontainer. Sice prý není nejrychlejší, nám ale stačí.
- USR – uživatelský systém – používáme jej k přihlašování/odhlašování. Jedná se o náš „proprietární“ systém, který používá i IInfo (slunecnice.cz, navrcholu.cz, root.cz, …).
- PicoContainer – Inversion of Control (IoC) nebo také Dependency Injection (jiný název pro totéž). Nic jiného z něj nepoužíváme.
- JUnit – Unit Testing framework
- Eclipse a NetBeans jako naše IDE pro editaci zdrojáků.
- Poseidon UML – jako UML kreslítko pro AndroMDA.
- Subversion – naše úložiště zdrojáků.
- CruiseControl – Continuous Integration system. No není sice ideální, ale funguje (občas).
- xstream – Jednoduchá serializace objektů (skupiny objektů včetně cyklických závislostí) do a z XML. Pro používání je velmi jednoduché.
- xom – alternativní API pro XML DOM. Pokud jste někdy pracovali přímo s DOM tak určitě oceníte tuto knihovnu. Pracuje se s ní výrazně lépe (také se Vám zdá, že DOM je ukázka jak nedělat API?).
časem bychom chtěli (a pracujeme na tom) používat i tyto technologie:
- MyFaces – implementace JavaServerFaces. Toto bychom používali jako prezentační vrstvu (teď máme napsaný vlastní framework).
- Facelets – toto je náhrada "render" vrstvy v MyFaces. Ještě není jisté jak toto bude fungovat (aneb scháze praktické zkušenosti v projektu).
- Seam – toto je dalo by se řící "controller" vrstva, která je hezky integrovaná s Hibernate a JSF. Opět schází zkušenosti.
- jBPM – toto je "Business Processing System" (jistě už jste slyšeli o jazyku BPEL). Možná bychom mohli toto používat pro definici business procesů v našich aplikacích. Uvidíme jak to nakonec dopadne. AndroMDA má modul pro jBPM a jBPM vyžaduje Hibernate.
- Continuum – Continuous integration system (opět) – tento je ovšem dobře integrován s maven a přidání projektu je narozdíl do CruiseControl snadné (tam to trvá 5 minut). Uvidíme jak bude fungovat.
Tak to je snad všechno. Když na to koukám, není ta java příliš jednoduchá?
Aktualizováno: zapomněl jsem na freemarker, UJAC a OGNL