J2EE - Java 2 Enterprise Edition
Úvod
Co je to J2EE? Jedná se o přístup (sadu pravidel, technologií, metod, doporučení), jak provádět design, vývoj, nasazení a provozování vícevrstvých aplikací pomocí jazyka Java formou několika základních komponent.
Patří sem:
- Platforma J2EE - Standartizovaná platforma poskytující běhové prostředí pro J2EE aplikace
- Soubor testů kompatibility J2EE - Sada testů ověřující, zda je určitá platforma J2EE v souladu se standartem
- Referenční implementace J2EE - Implementace J2EE určená pro prototypování J2EE aplikací; poskytuje definici J2EE platformy
- J2EE BluePrints - množina nejlepších osvědčených a doporučených postupů při vývoji vícevrstvých aplikací
J2EE patří do rodiny Java Editions:
- J2ME - Java 2 Micro Edition - edice určená pro použití na zařízeních jako jsou mobilní telefony, pagery, PDA,...
- J2SE - Java 2 Standart Edition - základ jazyka Java, JFC (Java Foundation Classes -- AWT, Swing a jiné komponenty pro uživatelské rozhraní), IO služby, applety, atd.
- J2EE - Java 2 Enterpise Edition - nadstavba nad J2SE pro rozsáhlé vícevrstvé podnikové aplikace
J2EE verze
- 5.0
- zapracování nových rysů z J2SE 5.0 (anotace, ...)
- EJB 3.0
- 1.4
- Webové služby
- J2EE Management
- 1.3
- Enterprise Java Beans (EJB) 2.0
- Základní podpora XML
J2EE - Systémová architektura
Použit je distribuovaný víceúrovňový aplikační model. To znamená, že celá aplikace je rozdělena do několika vrstev. Samotná prezentační vrstva v rámci webového prohlížeče, appletu nebo Javovské aplikace je oddělena od logiky na straně serveru v podobě JavaServer pages nebo Java Servletů. Poslední vrstvou je business logika umístěna rovněž na straně serveru (např. EJB). Tyto vrstvy jsou propojeny pomocí J2EE API, které zajišťuje rozhraní a komunikaci mezi nimi. Rozhraní každé vrstvy je standartizované, což umožňuje programátorům znajícím základní principy J2EE, aby mohli jednoduše vyvýjet J2EE aplikace.
Tento přístup přináší:
- důraz na rozšiřitelnost, udržovatelnost, ...
- jednoduché principy programování
- Typicky 3-4 vrstvé webové aplikace s tenkým klientem
Platforma J2EE
Jedná se o snahu vytvořit jednoduchý standard pro vývoj a nasazení rozsáhlých aplikací. J2EE platforma byla vytvářena tak, aby podchytila a podpořila širokou škálu požadavků při vývoji aplikace.
J2EE platforma je založená na vícevrstvém distribuovaném aplikačním modelu. Díky tomu mohou odlišné části aplikace běžet na různých typech zařízení. J2EE architektura definuje klientskou vrstvu, střední vrstvu (může jich být i více) a backendovou vrstvu.
Klientská vrstva - podporuje řadu typů klientů (které mohou být umístěny jak před, tak za podnikovým firewallem).
Střední vrstva - podporuje klientské služby prostřednictvím Web kontejnerů a business logiku prostřednictvím Enterprise JavaBeans (EJB).
Backendová vrstva - slouží k umožnění přístupu a komunikaci s existujícími informačními systémy.
Takto definovaná platforma J2EE přináší:
- Zjednodušení architektury a vývoje
- Technologický standartd
- pro všechny vrstvy a zahrnuté služby
- Jednotná specifikace nasazení aplikace
- Standard specifikace pro použité nástroje
- Návrhové vzory (Design patterns) (= blueprints)
- nejlepší praktiky pro J2EE
- Rozdělení problému na menší části
- Integrace s existujícími IS
- Umožňuje volbu serverů, nástrojů a komponent
Komponenty a kontejnery
J2EE aplikace může být složena z několika komponent hrajících různou roli:
- Klientské komponenty - zpravidla se jedná o programy napsané v jazyku Java (obvykle typu GUI), které běží na počítači uživatele. Nabízejí podobnou funkcionalitu jako typické aplikace bězící na PC, ale mají navíc přistup k prostředkům střední vrstvy J2EE aplikace.
- např. klientské aplikace, applety
- Webové komponenty - běží na straně serveru a odpovídají na požadavky klienta. Často generují HTML kód, prostřednictvým kterého aplikace komunikuje s uživatelem. Mohou být také využity ke generování dat např. ve formě XML, které jsou posléze zpracovávány dalšími komponetami.
- Servlety and JSP stránky
- Business komponenty - zajišťují business logiku aplikace a práci s daty
- Enterprise Java beans
Komponenty zajišťují:
- Zobrazení
- Business logiku
Kontejnery
Kontejnery zajišťují běhovou podporu pro J2EE komponety. Kontejner je část serveru, která poskytuje úplné aplikační prostředí, v němž řídí životní cyklus nasazených entit (servletů, JSP stránek, komponent EJB) a poskytuje jim různé služby.
- rozhraní mezi komponetou a platformově závislým prostředím
- komponety jsou nasazeny v kontejnerech
- kontejnery zajišťují pro komponenty různé služby
Typy kontejnerů:
- Kontejner klientské aplikace
- Webový kontejner
- EJB kontejner
Kontejnery zajišťují:
- synchronizaci
- bezpečnost
- dostupnost
- rozšiřitelnost
- persistenci
- transakce
- řízení životního cyklu
J2EE - Aplikační servery
Největší dodavatelé serverů podporují J2EE 1.4
Komereční
- BEA Weblogic Server
- IBM Websphere Application Server
- Sun Java System Application Server
- Oracle Application Server
Open-source
- JBoss Application Server
- JOnAS
Struktura J2EE aplikace
Od verze J2EE 1.4 má J2EE aplikace standartizovanou podobu nasazení a managementu. Díky tomu může jakýkoliv nástroj pro správu J2EE aplikace pracovat s libovolným aplikačním serverem. Také proces nasazení je pro každý aplikační server shodný.
Při vzniku J2EE aplikace je vytvořen .ear archiv, který má např. následující strukturu:
- aplikace.ear
- META-INF/
application.xml (kontext aplikace, ejb, web)
- web_komponenty.war
- webové komponenty (html, JSP, obrázky)
- WEB-INF/
- classes/ (class soubory servletů)
- lib/ (knihovna pomocných jar souborů)
web.xml (kontext servletů, cesty class souborů)
jboss-web.xml (definice virtual host)
- ejb_componenty.jar (EJB komponenty)
- class soubory EJB komponent
- META-INF/
ejb-jar.xml (kontext EJB, cesty class souborů)
Vývojové role
J2EE platforma definuje několik rolí podílejících se na životním cyklu vývoje aplikace a jejího nasazení. Role byly definovány, aby napomáhaly k identifikaci úkolů vykonávaných různými stranami během vývoje, nasazení a běhu J2EE aplikace.
- J2EE Product Provider - společnost, která navrhuje a vytváří jednotlivé API J2EE platformy a další části definované ve specifikaci J2EE. Jde typicky o poskytovatele operačních systémů, databázových systémů, aplikační serverů, webových serverů, atd., kteří se zabývají implementací J2EE na základě specifikace Java 2 Platform, Enterprise Edition.
- Tool Provider - zabývá se vytvářením nástrojů pro vývoj a nasazení J2EE aplikací.
- Application Component Provider - vyváří webové komponenty, enterpise beany, applety nebo klientské aplikace, které jsou používány v J2EE aplikacích.
- Enterprise Bean Developer - vytváří soubory EJB JAR obsahující enterpise beany, a to následujícími kroky:
- píše a kompiluje zdrojové kódy
- specifikuje tzv. "deployment descriptor" - popis, jak beanu nasadit
- vytvoří soubor EJB JAR jako balíček souborů .class a deployment descriptoru
- Web Component Developer - výsledkem jeho práce vzniká soubor WAR obsahující webové komponenty. Provádí následující činnosti:
- píše a kompiluje zdrojové kódy servletů
- vytváří JSP a HTML soubory
- specifikuje deployment descriptory
- vytváří balíčky složené z .class. .jsp a .html souborů a deployment descriptoru, vznikne tak soubor WAR
- Application Client Developer - vyvíjí klientskou část J2EE aplikace
- Application Assembler - sestavuje jednotlivé části (komponenty) aplikace dohromady, vznikne tak Enterprise Archive (.ear file)
- Application Deployer and Administrator - stará se o nasazení a běh J2EE aplikace, konfiguraci a administraci infrastruktury
Přehled technologií J2EE
J2EE popisuje a nabízí celou řadu technologií, které se dělí např. podle vrstvy, v jaké se použijí (webová, business, integrační). Kromě toho jsou definovány i další podpůrné technologie, sloužící např. k práci s databází, zasílání zpráv, práci s daty, zajištění bezpečnosti a mnoho dalších.
- Webová vrstva
- Servlety - Java třídy generující dynamický obsah stránek
- JavaServer Pages (JSP) a JSP Standard Tag Library (JSTL) - HTML stránky používající jazyk Java pro generování dynamického obsahu
- JavaServer Faces (JSF) - zjednodušení vývoje uživatelského rozhraní
- Business vrstva
- Enterprise Java Beans (EJB) - definuje komponenty na straně serveru a jejich kontakt s aplikačním světem
- Integrační vrstva
- Přístup k databázi -- JDBC - rozhraní umožňující jednotný přístup k různým relačním databázím
- Java Data Objects -- JDO - persistence založená na objektovém modelu
- Propojení s dalšími systémy -- JCA - rozhraní SPI pro připojení adaptérů zpřístupňujících jiné existující systémy
- XML
- Zpracování XML -- JAXP, JAXB - pro práci s XML dokumenty a pro jejich XSLT transformace
- Webové služby -- JAX-RPC, SAAJ, JAXR
- Služby na úrovni platformy
- Jmenná a adresářová služba -- JNDI
- Transakce -- JTA, JTS
- Bezpečnost -- JAAS
- Zasílání zpráv -- JMS
- Management
Odkazy
Domovská stránka J2EE
BEA Weblogic Server
JBoss Application Server
Portál zabývající se programováním v Javě
Vývojové prostředí Eclipse