1. diel - Úvod do Java Enterprise Edition (JEE)
Vítam vás u prvého dielu seriálu tutoriálov o tvorbe webových / podnikových aplikácií v Jave. V tomto dieli si predstavíme technológii Java Enterprise Edition, ktorá sa skrátene označuje ako JEE alebo niekedy J2EE. Predpokladom je dobrá znalosť JAVYS (štandardná edícia) a základná znalosť HTML a CSS.
Technológie Java Enterprise Edition
Java Enterprise Edition by sa dalo preložiť ako podniková edícia Javy. Názov je trochu zavádzajúci a to hneď z niekoľkých dôvodov:
- Štandardná edícia Javy sa samozrejme používa v podnikoch úplne rovnako, ako JEE. Naopak JEE nie je nijako viazaná na komerčnú sféru a veľmi jednoducho v nej môžeme naprogramovať napr. Osobné webový blog.
- JEE nie je iná verziu Javy, ale iba sada knižníc do Javy SE (štandardná edícia). To je určite dobrá správa, v JEE teda budete programovať úplne rovnako, ako v JSE. Oracle v skutočnosti dodáva iba rozhranie a existuje hneď niekoľko implementácií JEE (viď ďalej).
- JEE je zameraná na tvorbu webových aplikácií v Jave. Podľa môjho názoru by bol výstižnejší názov webová edície, ale s tým už nič neurobíme.
Pôvodný názov vznikol preto, že JEE obsahuje veľa hotových riešení, ktoré možno použiť pre rozsiahle webové aplikácie. V praxi je JEE asi najrozšírenejšie podnikové technológie, používa ju obrovské množstvo veľkých firiem a zahŕňa v sebe veľké množstvo rôznych pokročilých technológií, z ktorých sa výsledná aplikácia skladá. Z predošlej vety by malo vyjsť najavo, že sa jedná naozaj o robustné riešenie, ktoré uspokojí dopyt po náročných aplikáciách ako veľké štátne registre, bankové aplikácie a podobne. Skúsený programátor v JEE sa má dobre, na druhú stranu taký človek musí niečo vedieť.
Charakteristiky podnikových aplikácií
Podnikovú aplikácií sa zvyčajne myslia aplikácia, ktorá:
- Obsluhuje veľké množstvo užívateľov naraz
- Pracuje s veľkým množstvom dát v databáze
- Komunikuje s ďalšími systémami
- Je robustný a bezpečná
Java Enterprise Edition sa snaží poskytnúť čo najviac štandardných a kvalitných komponentov, ktoré uľahčia tvorbu práve takýchto aplikácií. Ctí tzv. Trojvrstvovú architektúru, kde je aplikácia rozdelená na databázovú vrstvu, vrstvu obchodnej logiky a vrstvu prezentačné.
Webové aplikácie
JEE funguje rovnako ako napr. Konkurenčné ASP.NET alebo PHP na architektúre klient-server. Aplikácia v JEE je teda program, ktorého výstupom je HTML stránka. Java tu beží na strane servera, čo je rozdiel oproti JSE, kde naše Java aplikácie bežala priamo na počítači klienta. Aby sme lepšie pochopili, ako JEE funguje, ukážme si najprv obyčajný statický web.
Statický web (bez JEE)
Takýto web ste určite už niekde videli, HTML stránky sú jednoducho uložené na serveri. Akonáhle klient (užívateľ s prehliadačom) pošle požiadavku na server, server mu jednoducho vráti presne tie stránky, čo má uložené.
Gaficky vyzerá komunikácia asi nejako takto:
Dynamický web (s JEE)
Statický web sa ťažko spravuje a má veľké obmedzenia. Preto začali vznikať serverové jazyky, ktoré umožňujú HTML stránku ešte pozmeniť predtým, než je klientovi odoslaná. Možno tak vytvoriť aktívne prvky, ako napr. Diskusné fóra, prihlasovanie užívateľov, nahrávanie obsahu pomocou editora a podobne.
JEE teda beží na serveri, na základe požiadaviek od klienta vygeneruje webovú stránku (jej obsah zvyčajne načíta za databázy, ktorá beží opäť na serveri) a pošle ju klientovi. Ten vidí už len výsledné HTML, v ktorom nie je po Jave ani pamiatky (teda okrem toho, že stránka má inú príponu).
Graficky by situácia vyzerala takto:
Aplikačné servery
JEE beží na tzv. Aplikačnom serveri. To je softvér, ktorý beží na serveri a ktorý spracováva HTTP / HTTPS požiadavky klientov, spravuje spojenie s databázou v tzv. Connection poole, odosiela emaily a podobne. Práve jednotlivé aplikačné servery poskytujú implementáciu rozhrania JEE. My budeme vyvíjať v IDE NetBeans, ktoré priamo v sebe obsahuje opnesource aplikačný server GlassFish. Medzi aplikačné servery patrí napr .:
- JBoss Application Server - Asi najznámejšia aplikačný server, ktorý je opensource.
- GlassFish - Jednoduchý aplikačný server od Oracle.
- WebSphere Application Server - Robustný komerčné riešenia pre veľké aplikácie od IBM.
- WebLogic Server - Komerčné aplikačný server od Oracle.
Komerčné riešenie sa snaží poskytovať maximálny výkon, stabilitu a podporu. Preto dokonca používajú vlastné Java Virtual Machine. K niektorým open source serverom je možné dokúpiť komerčný podporu.
Technológie v JavaEE
Nakoniec si spomenieme niektoré technológie, ktoré sú v JEE obsiahnuté.
- JSP (Java Server Pages) - Technológia umožňuje vkladať špeciálne direktívu do HTML kódu, ktorá spustí Java kód. Na dané miesta v stránke sa tak vloží dáta, ktorá získala Java napr. Z databázy.
- JSF (Java Server Faces) - Konkurenčné a modernejšie technológie k JSP. Celá webová stránka je reprezentovaná ako XML súbor. Web sa skladá z už pripravených komponentov (formuláre, tabuľky, zoznamy), ktoré možno jednoducho plniť dátami z Javy.
- JDBC (Java DataBase Connectivity) - JDBC a JPA poznáme už z nášho seriálu o Javas. JDBC je štandardné rozhranie pre prácu s rôznymi typmi databáz v ich jazyku SQL.
- JPA (Java Persistence API) - JPA je rozhranie, umožňujúce objektovú prácu s dátami. S databázou nekomunikujeme priamo v SQL, ale pomocou medzivrstvy ORM. Pracujeme teda iba s objektmi. Konkrétne implementácií je Hibernate.
- EJB (Enterprise Java Beans) - Komponenty obchodnej logiky.
- Spring framework - Okrem štandardných riešení z Javy Enterprise Edition sa tiež uchytilo niekoľko frameworkov tretích strán. Medzi najznámejšie patrí Spring. Jedná sa o konkurencii napr. K JSF.
Vidíme, že JEE v sebe obsahuje niekoľko konkurenčných technológií, ktorými ide rôznymi prístupmi dôjsť k rovnakému riešeniu. Je vždy na konkrétnej firme a projektu, ktorú technológiu používa. Dôvodom pre staršie technológie môže byť firemná politika alebo že bol napr. Konkrétny projekt vytvorený pred vznikom JSF a oplatí sa ho teda udržiavať v JSP.
Ďalšie diely seriálu budú rozdelené do niekoľkých sekcií podľa technológií, kde sa vždy pokúsime vytvoriť ten istý web s použitím rozdielnych prístupov.