Hlavní navigace

Názor ke zprávičce Java 17 a OpenJDK 17 s hotovým Vector API a plánovaným koncem Applet API od Saljack - Vy nevíte, co chcete, ale nedáte pokoj, dokud...

  • 20. 9. 2021 15:43

    Saljack

    Vy nevíte, co chcete, ale nedáte pokoj, dokud to nemáte. Java EE z doby před osmi lety se vám pro dnešek nelíbí. OK. Tak jak podle vás měla dnešní Java EE vypadat? Já jsem jedno řešení navrhoval – vykašlat se na Java EE jako zastřešující standard a nechat jednotlivé technologie zvlášť, ať si každý používá takové technologie, které mu vyhovují. To se vám také nelíbí. Tak co tedy chcete?
    Ne já stále tvrdím to samé, že Oracle zabil Java EE svojí neschopností a tvrdím to od začátku. Vy stále akorát mixujete minulost (Java EE před 8 lety) a současné moderní frameworky.
    Rozdíl mezi aplikačním serverem a frameworkem je v tom, že při vývoji aplikace pro aplikační server se teoreticky vůbec nestaráte o implementace toho, co vám poskytuje aplikační server. Napíšete jednu aplikaci, tu jednou spustíte pod Weblogicem, JPA bude implementovat Hibernate a data budou v Oracle SQL. A pak tu samou aplikaci, bez změny jediného bitu, nasadíte na JBoss, JPA bude implementováno EclipseLinkem a databáze bude PostgreSQL.
    Naprosto nepodstatný detail. Stejně tak to může udělat i ve Spring Bootu. Chcete Jetty dáte závislost na Jetty starter. Chcete EclipseLInk vyměníte Hibernate za EclipseLink atp. Chcete jiné JMS dáte jiný starter atp. A z velké části, že to jde udělat takto snadno můžeme všichni děkovat právě Java EE. A myslíte, že většina vývojářů ví na čem Spring Boot vevnitř běží, ani náhodou. Takže ani u frameworků se nestaráte na čem to ve skutečnosti běží.

    Když pro psaní aplikace použijete framework Spring, tak ho nevyměníte bez přepsání půlky souborů. Když budete psát Spring Boot aplikaci s embedded webovým serverem, musíte si do runtime závislostí přidat nějakou implementaci JPA. Když budete chtít implementaci JPA změnit, musíte přinejmenším znovu sestavit aplikaci s jinými závislostmi.
    Právě, že implementaci JPA přídávat nemusíte (tedy ne přímo) ale přidáváte Spring Data JPA. Co je za tím vás stejně jako u Java EE na AS nemusí zajímat. Máte API a to používáte. To že když to vyměníte za jinou implementaci to musíte přebuildit je daň za to, že jsou všechny závislosti zabalené ve FatJaru. I když i tohle by šlo obejít za runtime. Klidně může vzniknout Jirsák Boot, který bude v základu obsahovat Undertow, EclipseLink atp. a představte si, že by s tím mohli běžet i ostatní Spring Boot aplikace a nemusel v nich měnit skoro nic kromě pár změn v pom.xml.