Ak začínate čítať nejaký článok, tak si vždy pravdepodobne podvedome kladiete otázku: “O čom to vlastne bude? Aké informácie to môže priniesť?” V tomto jednom prípade vám to poviem presne: pokúsim sa vám načrtnúť, čo je to Java EE (načrtnúť rukou človeka, ktorý sa sám ešte Java EE učí). Možno ste už o tom počuli, možno ste videli inzeráty, kde hľadajú programátorov znalých Java EE a možno máte pocit, že by ste o tom jednoducho mali vedieť viac, lebo vás to skôr alebo neskôr neminie. Na dôvode nezáleží, podstatné je, že sa so mnou v tomto článku pokúsite pochopiť, čo Java EE je (a ja si to s vami skúsim zrekapitulovať).
Takže kde začať? No, napríklad názvom. Java EE je skratka od Java Enterprise Edition. To je celkom vhodne zvolený názov, lebo už sám o sebe hovorí, že je to Java do enterprise prostredia (teda prostredia veľkých firiem). Čo to ale znamená „Java do prostredia“. Java ako taká predstavuje vývojovú platformu, programovací jazyk, ale tiež sadu štandardov. Podľa týchto štandardov na jednej strane vedia programátori vyvíjať kód a na strane druhej sa podľa nich dá vytvoriť prostredie pre spúšťanie takého kódu. Štandard teda predstavuje dohodu medzi dvoma stranami (rozhranie), ktoré im umožňuje pomerne nezávislú formu spolupráce. V prípade Javy je nutné, aby sa hovorilo o štandardoch, pretože pre každý operačný systém existuje rôzna implementácia týchto štandardov (od rôznych firiem/organizácii). A všetky tieto implementácie Javy musia byť navonok rovnaké, aby vedeli spúšťať rovnaký kód. Ako to ale celé súvisí s Java EE?
Java je teda behové prostredie postavené na sade štandardov. Jave EE rozširuje túto sadu o množstvo ďalších, ktoré sú práve určené pre enterprise prostredie. Java EE je teda v podstate vylepšená Java o množstvo nových vlastností. Niekde úplne dole v Jave EE je tradičná Java Runtime Environment, na ktorom je naskladaných mnoho vrstiev, knižníc a modulov, až dostanete … server. Áno. Java EE je hlavne o serveroch, ktoré sú schopné obslúžiť množstvo požiadaviek zamestnancov, alebo zákazníkov veľkých firiem. Týchto serverov (čo sú v podstate implementácie Java EE) je celkom dosť (omnoho viac ako je implementácií Java SE). Stačí vymenovať len Tomcat, Glassfish alebo JBoss AS (nie všetky ale implementujú celú sadu štandardov). Mnoho z nich je zadarmo a teda rovnako ako pri Java SE sa môžete pustiť do vývoja bez nejakých veľkých finančných prostriedkov.
Ok. Takže Java EE je v podstate server. Čo sa ale s takým serverom dá robiť? Viete pre neho vyvíjať aplikácie, ktoré sú následne na tento server nasadené. Java EE je rozdelená do dvoch hlavných vrstiev: web tier a business tier. Web vrstva obsahuje UI, teda používateľské rozhranie, ktoré je možné vidieť. Ide o JSP, JSF stránky a servlety. Všetko sú to technológie, ktoré sú určené na komunikáciu po sieti, pričom tie prvé dve sú na generovanie web stránok. Web tier je teda to, čo obsahuje kód generujúci stránky (zjednodušene povedané).
Pod web tier je business tier, ktorá je plná Enterprise Bean-ov. Enteprise Bean je trieda, ktorá vlastne reprezentuje obchodnú logiku na serveri. To znamená, že je to kód, ktorý obsahuje procesy domény (ako sa počíta DPH pre ekonomickú oblasť, ako sa spracováva transakcia pre bankovú oblasť atď.). Enterprise Bean je vlastne obyčajná Java, ktorá môže byť špeciálne oanotovaná, alebo môže implementovať rôzne rozhrania – v závislosti od množstva štandardov, ktoré sa používajú.
Po business tier je už len vrstva perzistencie, teda uchovania údajov. Tá už oficiálne nepatrí do Java EE a reprezentuje rôzne databázy, sieťové služby, súborové systémy a podobne. Java EE je teda hlavne o UI a obchodnej logike.
Ako si teda viete predstaviť takú Java EE aplikáciu? Môže byť uložená v troch rôznych súboroch: .jar, .war a .ear. Ten prvý reprezentuje klasickú java knižnicu, ale v Java EE v ňom môže byť uložené Enterprise Beans. .war znamená „web archive“ a obsahuje triedy a súbory pre UI vrstvu. A .ear znamená „enterprise archive“ a môže obsahovať všetko, čo sa do Java EE zmestí. Teda súbory a knižnice pre UI aj business tier vrstvu. Výsledok programovania v Java EE je teda knižnica, ktorá sa nasadí do aplikačného servera a spustí v ňom.
Niekoľkokrát som spomenul, že Java EE server je vlastne implementácia niekoľkých špecifikácií postavená na Jave SE. O aké špecifikácie ide? Tu je krátky zoznam niektorých z nich:
- JPA – Java Persistence Api – object-relation mapovanie
- JTA – Java Transaction Api – podpora transakcií naskrz celým serverom a rôznymi perzistenými úložiskami
- CDI – Context and Dependency Injection – implementácia Dependency Injection vzoru na prepájanie Enterprise Beanov
- JAX-WS – Java Api for XML Web Services – štandard pre vytváranie SOAP služieb
- JAX-RS – Java Api for RESTful Web Services – štandard pre vytváranie REST sieťových služieb
- Servlety – štandard umožňujúci serveru spracovávať a odpovedať na rôzne požiadavky prichádzajúce po sieti
- JSP – JavaServer Pages – v podstate statická web stránka, ktorá je pred odovzdaním klientovi spracovávaná na základe špeciálnych značiek
- JSF – JavaServer Faces – mladší brať predchádzajúcej technológie, ktorá je za pomoci servletov používaná na ako súčasť MVC vzoru
- JACC – Java Authorization Contract for Containers – štandard, ktorý umožňuje na autentifikáciu v aplikácii používať iný modul (cez rozhranie servera)
- JASPIC – Java Authentication Service Provider Interface for Containers – to isté, ako predchádzajúci prípad ale pre autorizáciu
- a mnoho ďalších….
Java EE nie je technológia, ktorá sa dá v svete výpočtovej techniky dlhodobo ignorovať. Tak ako sa skôr alebo neskôr stretnene s C++, .Net-om, PHP alebo XML či UML, skôr alebo neskôr narazíte aj na ňu. V prípade, že by vás zaujímalo viac, tak na stránke Oraclu si je možné k nej stiahnuť tutorial: http://docs.oracle.com/javaee/6/tutorial/doc/.