Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

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

V tomto Java tutoriálu si objasníme, k jakým rámcovým změnám došlo za posledních pár let v oblasti JavaEE. Uděláme si také přehled, jaké aplikační servery jsou nám k dispozici. Přehled bude obecný a služby (technologie) si zde nebudeme podrobně popisovat.

Historie JavaEE (Jakarta EE) ve zkratce

Zkratka Java EE představuje Java Enterprise Edition (v překladu Java podniková edice). Historie JavyEE je identická jako SE. Původně JavuEE vlastnila firma Sun, která byla koupena firmou Oracle a ta nad ní získala kontrolu. Dříve se Java EE jmenovala J2EE (verze 1.2, 1.3, 1.4), pak došlo k přejmenování na Java EE (verze 5, 6, 7, 8 ) a nyní se technologie jmenuje Jakarta EE (k roku 2020/21 verze 8, 9). JavaEE totiž zjevně pro firmu Oracle nebyla tak lukrativní a dva roky zpět se jí firma rozhodla zbavit.

K odchodu JavyEE od Oracle došlo už někdy kolem roku 2017 nebo 2018 a došlo k přesunu JavaEE pod Eclipse foundation (nadaci). Došlo také k přejmenování nejdříve na JavaEE Jakarta a poté na Jakarta EE. K přejmenování pravděpodobně muselo dojít kvůli tomu, že Oracle nechtěl uvolnit licencovaná pojmenování a označení (lze tomu rozumět - tyto věci si Oracle vždy hlídal, např. viz. licenční podmínky JavaSE 11 a vyšší).

Jakarta EE je pokračováním JavaEE neboli jejím nástupcem (novější verze Java EE). Došlo k tomu přibližně v té době, kdy přešlo NetBeans z Oracle pod Apache.

Pro zájemce je historie JavaEE podrobně vyjádřena zde na wiki.

Co je JavaEE (Jakarta EE)?

Jedná se o souhrn standardů, specifikací, popis, norem a chování pro různé služby, charakterem typicky podnikové a webové. Tyto specifikace vezmou do ruky programátoři a vytvoří z nich knihovny (*.jar) a aplikační server.

Z pohledu programátora (developera) je JavaEE tedy pouze nástavba (rozšíření) nad jeho Java SE, která dodává pouze nějaké knihovny navíc (jenž obsahují další tisíce objektů, metod, konstant) a aplikační server.

Aplikační server

Aplikační server je program, něco jako JVM, ale pro EE projekty, který umožňuje dané služby spustit či spustit nahrané (uploadnuté) projekty, které dané služby využívají. Danému aplikačnímu serveru se pak tyto knihovny přidají a server se vydá. Takový server jeho autoři pak mohou nechat certifikovat od Oracle pro EE řešení (toto ovšem platilo pouze do JavaEE8). Ne všechny aplikační servery jsou certifikované.

Aplikační servery nemají vlastní JVM a používají JVM z nastavené JavaSE v našem OS. Ne všechny aplikační servery obsahují všechny služby (technologie). Některé se mohou specializovat pouze na některé služby, např. web, EJB, atd. Dokonce některé služby, knihovny a jejich objekty, spustíme i bez aplikačního serveru čistě na JavaSE. Oracle a nyní i Jakarta EE má svůj vlastní aplikační server známý jako GlassFish.

Kompatibilita aplikačních serverů

Samotný zdrojový kód by měl být naprosto přenositelný, a to i včetně importů různých objektů. Ovšem problém je u různých aplikačních serverů. Různé objekty jsou totiž uloženy do různých knihoven (*.jar), takže pokud budeme dávat identické či podobné knihovny v různých aplikačních serverech do classpath, nemusí vždy fungovat. Co se týče vyexportované samotné aplikace (*.jar, *.war, *.ear), tak v ideálním případě a teoretické rovině by měla být také přenositelná. Většinou to tak ale není. Pokud něco vyvíjíme pro daný aplikační server, tak je nejlepší vyvíjet přímo na daném aplikačním serveru v dané konkrétní verzi.

Výčet aplikačních serverů si uvedeme na konci článku.

Standardy aplikačních serverů

Dále v EE existuje přímo standard pro 2 typy (profily) aplikačních serverů:

  • WEB Profile - Obsahuje pouze technologie pro využití pro web
  • PLATFORM (Full) Profile - Obsahuje všechny technologie

Pravděpodobným důvodem pro vznik těchto profilů bylo, aby JVM aplikačního serveru nemuselo načítat všechny knihovny a objekty, což by zabralo zbytečnou paměť a systémové zdroje. WEB aplikační server by měl být rychlejší, než robustní PLATFORM server.

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

Jak už jsme zmínili výše, existují aplikační servery, které se specializují na jednu službu (u některých se lze setkat s označením webový kontejner). Jedním z příkladů jsou např. servery rodiny TomEE (webový server Tomcat je jeden z nich, pokud chceme pouze EJB server, pak můžeme použít OpenEJB, atd.)

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

Stejně tak specializované servery by měly být rychlejší než aplikační servery s WEB neb FULL profilem.

Verze JavaEE Rok vydání Seznam podporovaných technologií vč. JSR Verze GlassFish
J2EE (verze 1.2, 1.3, 1.4) opravdu dávno    
Java EE5 2006 podporované technologie SailFin 2.0, 2.1, 2.1.1
Java EE6 2009 podporované technologie 3.0, 3.1, 3.1.1, 3.1.2, 3.1.2.2
Java EE7 2013 podporované technologie 4.0, 4.1, 4.1.1, 4.1.2
Java EE8 2017 podporované technologie 5.0, 5.1
Jakarta EE8 2019 podporované technologie 5.0, 5.1
Jakarta EE9 2020 podporované technologie 6.0

Pozn.: JavaEE8 co se týče služeb a specifikací je identická s Jakarta EE8.

Jakarta EE vs. Spring

Kdysi by se dalo prohlásit, že framework Spring je konkurentem JavaEE, ale to už moc neplatí. Např. v dobách J2EE, JavaEE ve verzi EJB 1.0, 2.0 měl Spring beany mnohem lepší a mělo jej smysl preferovat. Nicméně vývojáři EE se inspirovali Springem, a vytvořené EJB 3.0 už byly mnohem lepší. Nyní si každý vyvíjí na svém písečku a Spring se s JavouEE (Jakartou EE) mohou vzájemně v některých projektech doplňovat. Spring zatím nemá svůj aplikační server a slouží prakticky pouze jako knihovny třetí strany bežících na JVM nebo jiných aplikačních serverech.

Kompatibilita JavaSE a EE

Připomeňme si, že je vhodné před používáním aplikačního serveru prostudovat dokumentaci nebo web aplikačního serveru a zjistit jakou verzi JavaSE (mělo by být jedno, zda se jedná o Oracle JDK nebo OpenJDK), Java EE nebo Jakartata EE podporuje. Doporučuje se vždy aplikační server z určité doby spouštět na JavaSE z dané doby. Rozhodně nezkoušejte spuštění např. JavaEE5 na Java SE15, či Jakartu EE9 na JavaSE6. V teoretické rovině by mělo být funkční řešení spustit starší verzi EE na novější JavaSE (např. již citovaný JavaEE5 na JavaSE15), ale ani to nemusí fungovat, pokud budeme používat novější rozšíření jazyka. Dále nezapomeňme na problém chyb v Java SE, které mohou vést k chybám v EE a také naopak. Tyto chyby se někdy velmi těžce hledají či se téměř najít nedají.

Programovací prostředí (IDE)

Co se týče IDE (vývojových prostředí), existují pro Jakarta EE prakticky pouze tato hlavní IDE:

Samozřejmě používání IDE není povinné, vyvíjet lze projekty teoreticky i s poznámkovým blokem, ale pak si musíme všechno manuálně sami vytvořit (strukturu adresářů), nastavit konfigurační soubory atd. Tudíž nepoužívat IDE prakticky nedává smysl. Které z nich je nejlepší nelze říci, neboť je to dost subjektivní záležitost a podobná diskuze by pravděpodobně jen vyvolala flamewar.

Aplikační servery JavaEE a Jakarta EE

Jak jsme uvedli, tak jako si můžeme vybrat jakou JavaSE chceme (originál Oracle, či Oracle OpenJDK, či jiné IBM, AutoAdaptJDK, atd..), stejně si můžeme vybrat tzv. EE implementaci (aplikační server). Ty jsou:

Dále zde máme tzv. neúplné aplikační servery (není tím myšleno aplikační server WEB profile). Jedná se o servery soustřeďující se na jednu specifickou činnost, tzn. podporující jednu nebo několik technologií v EE:

Výzva

A na konec malá výzva. Pokud někdo znáte ještě další servery podporující jednu, více nebo všechny EE technologie, jenž nejsou v článku zmíněny, můžete na ně pod článkem navrhnout link a já je do článku přidám.


 

Předchozí článek
Kvíz - Odkazy, převod MD do HTML, metody POST v JavaEE
Všechny články v sekci
JEE - Java Enterprise Edition
Článek pro vás napsal Robert Michalovič
Avatar
Uživatelské hodnocení:
1 hlasů
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