Tipy pro Java EE

Z FI WIKI
Přejít na: navigace, hledání

Tento článek se snaží zrekapitulovat základní přehled o Java EE a shrnout některé tipy, doporučené postupy a návrhové vzory pro Java EE.

  • Tvorba aplikací na platformě Java EE je poměrně komplikovaný proces, kde je třeba kombinbovat celou řadu znalostí, nástrojů a knihoven.
  • Základem úspěchu je mít v těchto věcech všeobecný přehled.
  • Celý proces výrazně ulehčila Java EE verze 5.
  • Bohužel se však v praxi můžete setkat s konzervativním přístupem a s používáním starších verzí J2EE (1.4 nebo dokonce 1.3).

Základní zásady

  • Vždy se snažíme všechno řešit co nejjednodušeji.
  • Musíme mít na paměti, že existuje velmi málo opravdu univerzálních řešení, každá metodika, technologie nebo nástroj se k něčemu hodí a k něčemu ne.
  • Dodržujeme konvence a obecné zásady.
  • Minimalizace závislostí, snaha o co největší autonomii komponent (zvýšená znovupoužitelnost, snazší údržba). Bacha na cyklické závislosti.

Nástroje

  • Hodně času, energie a peněz ušetří používání vhodných nástrojů.
  • V současnosti mají v oblasti Java EE nejlepší podporu NetBeans.

Metodika

Extrémní programování

  • http://www.extremeprogramming.org/, http://en.wikipedia.org/wiki/Extreme_Programming
  • Vhodné pro týmy 2 - 10 lidí
  • Minimalizace nákladů na změnu
  • Čtyři hodnoty: Komunikace, jednoduchost, zpětná vazba, odvaha.
  • Základní postupy:
    • jednoduchý návrh;
    • testování (programování řízené testy);
    • refaktoring
    • párové programování;
    • společné vlastnictví kódu;
    • nepřetržitá integrace;
    • 40hodinový týden;
    • zapojení zákazníka.
  • Základní pravidlo: všechno dělat maximálně jednoduše, žádné funkce navíc.

Klasické Objektové Orientované Metodiky

Architektura

  • Aplikace by měla vždy mít dobře oddělenou aplikační a prezentační logiku, ať už fyzicky (vícevrstvé aplikace), nebo logicky.

Databázová vrstva

  • Přesněji Integration tier, neboli vrstva integrace dat.
  • Zajišťuje přístup k datům, data bývají obvykle uložena v databázi

Relačně orientovaný přístup

  • Pracujeme s relačním modelem dat, na veškerá data se díváme jako na tabulky
  • JDBC, RowSet, Jakarta Commons DBUtils [1]
  • Absence typové kontroly, horší míra abstrakce, větší riziko vzniku chyby a jejího pozdního odhalení, obtížný refaktoring.
  • Snadnější implementace univerzálních komponent, lepší podpora pro data binding (pro JSF i Swing), potenciálně vyšší výkon (záleží ale na konkrétní situaci).

Objektový přístup s relační databází

  • Nejčastěji nějaký ORM nástroj (například Java Persistence API, Hibernate, JDO)
  • Dříve také Entity EJB.
  • Větší míra abstrakce a lepší zapouzdření, lepší typová kontrola, jednodušší odhalení chyb, snadný refaktoring
  • Složitější implementace univerzálních komponent.

Objektová databáze

  • Např. Caché
  • Není mainstream, pro určité třídy aplikací může mít význam.
  • Je otázka, jestli se někdy stane mainstreamem.

Návrhové vzory pro vrstvu perzistence dat.

Aplikační vrstva

  • Zajišťuje aplikační logiku
  • Různé možnosti
    • Obyčejná knihovna tříd
    • Vhodný proprietární aplikační framework (např. Spring)
    • EJB
    • Spring
  • Komunikace s klienty
    • Lokální rozhraní
    • RMI/IIOP
    • WebServices
    • JMS

Návrhové vzory pro vrstvu aplikační logiky.

Prezentační vrstva

  • Poskytuje UI pro uživatele
  • Základním rozhodnutím je typ klienta.

Textové UI

  • velice efektivní
  • dnes málo sexy
  • špatná podpora v Javě

Grafické UI

Webové UI

  • Univerzální dostupnost, snadné použití
  • Méně komfortu (lze částečně kompenzovat použitím AJAXu)
  • JavaServlets, JSP, JSF, různé MVC rámce (např. Apache Struts apod.)

Návrhové vzory pro prezentační vrstvu (např. notifikace změn). Zajímavý trend je DataBinding.