IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2ee, Java EE a Jakarta EE - Vývoj podnikové Javy

V minulej lekcii, Blog v JEE - Detail článku , sme upravili detailné stránku článkov.

V tomto Java tutoriálu si objasníme, k akým rámcovým zmenám došlo za posledných pár rokov v oblasti JavaEE. Urobíme si tiež prehľad, aké aplikačné servery sú nám k dispozícii. Prehľad bude všeobecný a služby (technológie) si tu nebudeme podrobne popisovať.

História JavaEE (Jakarta EE) v skratke

Skratka Java EE predstavuje Java Enterprise Edition (v preklade Java podniková edícia). História JavyEE je identická ako SE. Pôvodne JavuEE vlastnila firma Sun, ktorá bola kúpená firmou Oracle a tá nad ňou získala kontrolu. Predtým sa Java EE volala J2EE (verzia 1.2, 1.3, 1.4), potom došlo k premenovaniu na Java EE (verzia 5, 6, 7, 8) a teraz sa technológia volá Jakarta EE (k roku 2020/21 verzie 8, 9) . JavaEE totiž zjavne pre firmu Oracle nebola tak lukratívne a dva roky späť sa jej firma rozhodla zbaviť.

K odchodu JavyEE od Oracle došlo už niekedy okolo roku 2017 alebo 2018 a došlo k presunu JavaEE pod Eclipse foundation (nadáciu). Došlo tiež k premenovaniu najskôr na JavaEE Jakarta a potom na Jakarta EE. K premenovaniu pravdepodobne muselo dôjsť kvôli tomu, že Oracle nechcel uvoľniť licencovaná pomenovanie a označenie (možno tomu rozumieť - tieto veci si Oracle vždy strážil, napr. Viz. Licenčné podmienky Javas 11 a vyššie).

Jakarta EE je pokračovaním JavaEE čiže jej nástupcom (novšia verzia Java EE). Došlo k tomu približne v tom čase, kedy prešlo NetBeans z Oracle pod Apache.

Pre záujemcov je história JavaEE podrobne vyjadrená tu na wiki.

Čo je JavaEE (Jakarta EE)?

Jedná sa o súhrn štandardov, špecifikácií, opis, noriem a správanie pre rôzne služby, charakterom typicky podnikové a webové. Tieto špecifikácie vezmú do ruky programátori a vytvorí z nich knižnice (*.jar) a aplikačný server.

Z pohľadu programátora (developera) je JavaEE teda iba nadstavba (rozšírenia) nad jeho Java SE, ktorá dodáva len nejaké knižnice navyše (ktorý obsahujú ďalšie tisícky objektov, metód, konštánt) a aplikačný server.

Aplikačný server

Aplikačný server je program, niečo ako JVM, ale pre EE projekty, ktorý umožňuje danej služby spustiť alebo spustiť nahrané (uploadnuté) projekty, ktoré dané služby využívajú. Danému aplikačnému serveru sa potom tieto knižnice pridajú a server sa vydá. Takýto server jeho autori potom môžu nechať certifikovať od Oracle pre EE riešenie (toto však platilo len do JavaEE8). Nie všetky aplikačné servery sú certifikované.

Aplikačné servery nemajú vlastné JVM a používajú JVM z nastavenej Javas v našom OS. Nie všetky aplikačné servery obsahujú všetky služby (technológie). Niektoré sa môžu špecializovať len na niektoré služby, napr. Web, EJB, atď. Dokonca niektoré služby, knižnice a ich objekty, spustíme aj bez aplikačného servera čisto na Javas. Oracle a teraz aj Jakarta EE má svoj vlastný aplikačný server známy ako GlassFish.

Kompatibilita aplikačných serverov

Samotný zdrojový kód by mal byť úplne prenositeľný, a to aj vrátane importov rôznych objektov. Avšak problém je u rôznych aplikačných serverov. Rôzne objekty sú totiž uložené do rôznych knižníc (*.jar), takže ak budeme dávať identické alebo podobné knižnice v rôznych aplikačných serveroch do CLASSPATH, nemusí vždy fungovať. Čo sa týka vyexportované samotnej aplikácie (*.jar, *.war, *.ear), tak v ideálnom prípade a teoretickej rovine by mala byť tiež prenositeľná. Väčšinou to tak ale nie je. Ak niečo vyvíjame pre daný aplikačný server, tak je najlepšie vyvíjať priamo na danom aplikačnom serveri v danej konkrétnej verzii.

Výpočet aplikačných serverov si uvedieme na konci článku.

Štandardy aplikačných serverov

Ďalej v EE existuje priamo štandard pre 2 typy (profily) aplikačných serverov:

  • WEB Profile - Obsahuje iba technológie pre využitie pre web
  • PLATFORM (Full) Profile - Obsahuje všetky technológie

Pravdepodobným dôvodom pre vznik týchto profilov bolo, aby JVM aplikačného servera nemuselo načítavať všetky knižnice a objekty, čo by zabralo zbytočnú pamäť a systémové zdroje. WEB aplikačný server by mal byť rýchlejší, než robustné PLATFORM server.

Aplikační server (AS)
   ├── PLATFORM profile
   └── WEB profile

Ako už sme spomenuli vyššie, existujú aplikačné servery, ktoré sa špecializujú na jednu službu (u niektorých sa možno stretnúť s označením webový kontajner). Jedným z príkladov sú napr. Servery rodiny Tomom (webový server Tomcat je jeden z nich, ak chceme iba EJB server, potom môžeme použiť OpenEJB, atď.)

SPECIALIZOVANÉ SERVERY (NEÚPLNÉ APLIKAČNÍ SERVERY - pro jednu či více služeb)
   ├── Tomcat  (Servlet, JSP, WebSocket, Authentication Service)
   ├── OpenEJB (služba EJB - enterprise java beans)
   ├── mnoho dalších

Rovnako tak špecializované servery by mali byť rýchlejší ako aplikačné servery s WEB neb FULL profilom.

verzia JavaEE rok vydania Zoznam podporovaných technológií vr. JSR verzia GlassFish
J2EE (verzia 1.2, 1.3, 1.4) naozaj dávno
Java EE5 2006 podporované technológie Sailfin 2.0, 2.1, 2.1.1
Java EE6 2009 podporované technológie 3.0, 3.1, 3.1.1, 3.1.2, 3.1.2.2
Java EE7 2013 podporované technológie 4.0, 4.1, 4.1.1, 4.1.2
Java EE8 2017 podporované technológie 5.0, 5.1
jakarta EE8 2019 podporované technológie 5.0, 5.1
jakarta EE9 2020 podporované technológie 6.0
Pozn .: JavaEE8 čo sa týka služieb a špecifikácií je identická s Jakarta EE8.

Jakarta EE vs. Spring

Kedysi by sa dalo vyhlásiť, že framework Spring je konkurentom JavaEE, ale to už moc neplatí. Napr. v časoch J2EE, JavaEE vo verzii EJB 1.0, 2.0 mal Spring Bean oveľa lepšie a malo ho zmysel preferovať. Avšak vývojári EE sa inšpirovali Spring, a vytvorené EJB 3.0 už boli oveľa lepšie. Teraz si každý vyvíja na svojom piesočku a Spring sa s JavouEE (Jakartou EE) môžu vzájomne v niektorých projektoch dopĺňať. Spring zatiaľ nemá svoj aplikačný server a slúži prakticky iba ako knižnice tretej strany bežiacich na JVM alebo iných aplikačných serveroch.

Kompatibilita Javas a EE

Pripomeňme si, že je vhodné pred používaním aplikačného servera preštudovať dokumentáciu alebo web aplikačného servera a zistiť akú verziu Javas (malo by byť jedno, či sa jedná o Oracle JDK alebo OpenJDK), Java EE alebo Jakarty EE podporuje. Odporúča sa vždy aplikačný server z určitej doby spúšťať na Javas z danej doby. Rozhodne neskúšajte spustenie napr. JavaEE5 na Java SE15, či Jakarta EE9 na JavaSE6. V teoretickej rovine by malo byť funkčné riešenie spustiť staršiu verziu EE na novšie Javas (napr. Už citovaný JavaEE5 na JavaSE15), ale ani to nemusí fungovať, ak budeme používať novšie rozšírenia jazyka. Ďalej nezabudnime na problém chýb v Java SE, ktoré môžu viesť k chybám v EE a tiež naopak. Tieto chyby sa niekedy veľmi ťažko hľadajú či sa takmer nájsť nedajú.

Programovacie prostredie (IDE)

Čo sa týka IDE (vývojových prostredí), existujú pre Jakarta EE prakticky iba tieto hlavné IDE:

Samozrejme používanie IDE nie je povinné, vyvíjať možno projekty teoreticky aj s poznámkovým blokom, ale potom si musíme všetko manuálne sami vytvoriť (štruktúru adresárov), nastaviť konfiguračné súbory atď. Preto nepoužívať IDE prakticky nedáva zmysel. Ktoré z nich je najlepší nemožno povedať, lebo je to dosť subjektívna záležitosť a podobná diskusia by pravdepodobne len vyvolala flame war.

Aplikačné servery JavaEE a Jakarta EE

Ako sme uviedli, tak ako si môžeme vybrať akú Javas chceme (originál Oracle, či Oracle OpenJDK, či iné IBM, AutoAdaptJDK, atď ..), rovnako si môžeme vybrať tzv. EE implementáciu (aplikačný server). Tie sú:

Ďalej tu máme tzv. Neúplné aplikačné servery (nie je tým myslené aplikačný server WEB profile). Jedná sa o servery sústreďujúci sa na jednu špecifickú činnosť, tzn. podporujúce jednu alebo niekoľko technológií v EE:

Výzva

A na koniec malá výzva. Ak niekto poznáte ešte ďalšie servery podporujúce jednu, viac alebo všetky EE technológie, ktorý nie sú v článku spomenuté, môžete na ne pod článkom navrhnúť link a ja ich do článku pridám.

V budúcej lekcii, Blog v JEE - Úprava článku a dokončenie projektu , implementujeme úpravu článku a dokončíme náš blog.


 

Predchádzajúci článok
Blog v JEE - Detail článku
Všetky články v sekcii
Java Enterprise Edition (JEE)
Preskočiť článok
(neodporúčame)
Blog v JEE - Úprava článku a dokončenie projektu
Článok pre vás napísal Robert Michalovič
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity