Java EE

Da Wikipedia, l'enciclopedia libera.

In informatica la Java Platform, Enterprise Edition o Java EE (conosciuta, prima della versione 5, col nome di Java 2 Enterprise Edition o J2EE) è un insieme di specifiche le cui implementazioni vengono principalmente sviluppate in linguaggio di programmazione Java e ampiamente utilizzata nella programmazione Web.

I software che implementano tale specifica vengono detti Referencing Runtimes Java EE. Precedentemente si chiamavano application server. Il cambio di nome da application server a referencing runtime è dovuto al fatto che, con l'architettura a microservizi, viene lanciato una applicazione Java autonoma, senza necessità di avere application server. L'implementazione può essere totale (in tal caso detta Full Platform) o limitata al Web Profile, ovvero il sottoinsieme delle specifiche che è stato pensato appositamente per le applicazioni web[1].

Inizialmente, la specifica incoraggiava la creazione di applicazioni che seguono una architettura multi-tier. Tale architettura aveva come scopo la separazione delle funzionalità relative alla visualizzazione delle pagine web da quelle per la gestione della logica di business e del salvataggio delle informazioni sulla base dati. Recentemente, con tecnologie come Eclipse MicroProfile, WildFly Swarm e Payara Micro, è possibile sviluppare anche microservizi. Ciò ha comportato anche un cambiamento del nome che viene dato alle implementazioni: prima si chiamavano application server, adesso referencing runtimes.

Questo insieme di specifiche è stato creato inizialmente da Sun Microsystems, portato avanti da Oracle, e nella seconda metà del 2017 trasferito alla Eclipse Foundation, col nome di Eclipse Enterprise for Java.[2]

Specifiche di Java EE[modifica | modifica wikitesto]

L'insieme di specifiche detto Java EE include molte tecnologie che estendono le funzionalità di base della piattaforma Java. L'elenco che segue non riporta tutte le componenti, ma solo quelle di maggiore importanza. Le uniche componenti che richiedono strettamente l'uso di un referencing runtime sono quelle enterprise, cioè quelle che hanno bisogno, ad esempio, delle transazioni distribuite e delle code distribuite. Le componenti per il web e per la base dati possono essere usate anche all'interno di un semplice web server.

Specifiche per i web service[modifica | modifica wikitesto]

In Java EE è possibile realizzare sia web service di tipo REST, che di tipo SOAP. Le specifiche sono:

Specifiche web[modifica | modifica wikitesto]

Le componenti che rientrano in questa categoria sono quelle legate alla visualizzazione delle pagine web. Nel caso in cui si vogliano usare solo le componenti lato web, non è necessario ricorrere ad un complesso referencing runtime di tipo full profile, ma è sufficiente usare un referencing runtime Web Profile o un più snello Web Server.

Specifiche enterprise[modifica | modifica wikitesto]

In questa categoria ci sono le componenti che sono specifiche di Java EE. L'uso di queste componenti è richiesto solamente in applicativi di medie e grandi dimensioni.

  • Contexts and Dependency Injection che permettono di usare l'inversione di controllo in modo molto simile a come si fa con Spring framework e forniscono la maggior parte delle funzionalità che viene fornita dagli Enterprise JavaBeans;
  • Gli Enterprise JavaBeans definiscono un sistema a componenti distribuito che rappresentava il cuore della specifica Java EE. Tale sistema, infatti, forniva le tipiche caratteristiche richieste dalle applicazioni enterprise, come scalabilità, sicurezza, persistenza dei dati e altro. Molte di tali caratteristiche sono oggi disponibili anche con Contexts and Dependency Injection;
  • Il Java Message Service descrive un sistema per l'invio e la gestione di messaggi;
  • Java EE Security API definisce la gestione degli utenti, delle password, dei gruppi e dell'autenticazione.

Specifiche per l'interazione con la base dati[modifica | modifica wikitesto]

Questa categoria contiene le tecnologie che permettono la persistenza dei dati all'interno di una base dati relazionale. Anche le componenti di questa categoria possono essere usate al di fuori di un referencing runtime.

Implementazioni certificate[modifica | modifica wikitesto]

Esistono diversi referencing runtimes open source, che vengono spesso usati anche in ambiente di produzione.

Tra quelli open source ci sono:

  • GlassFish, è l'implementazione di riferimento, mantenuta da Oracle. Esiste una versione che ha il supporto commerciale e si chiama Payara
  • WildFly, precedentemente noto come JBoss
  • Apache TomEE, del quale esiste una versione avente supporto commerciale chiamata Tomitribe

Tra quelli commerciali, oltre a quelli riportati sopra:

  • Cosminexus di Hitachi;
  • InforSuite di InforBus;
  • Interstage Application Server di Fujitsu;
  • Jeus di TmaxSoft;
  • WebLogic di Oracle;
  • WebOTX di NEC;
  • WebSphere di IBM;

Microservizi ed Eclipse MicroProfile[modifica | modifica wikitesto]

Eclipse MicroProfile è un progetto per innovare le specifiche di Java EE e renderle più adatte per una architettura a microservizi, detta anche microservice architecture[3]. L'idea è quella di eseguire solo le componenti di Java EE che sono strettamente necessarie per l'applicativo che si sta sviluppando.

Tra le implementazioni disponibili, troviamo:

Critiche[modifica | modifica wikitesto]

Nel dicembre 2016 Gartner, in un rapporto ha dichiarato che le iniziative imprenditoriali informatiche hanno bisogno di nuove caratteristiche e funzionalità e che Java EE non è riuscita a tenere l'andatura. Nel rapporto si consigliava di sviluppare una strategia per gestire l'obsolescenza di Java EE. Si aspettano che per il 2019, meno del 35% degli applicativi aziendali sarà fatto funzionare all'interno di application server Java EE. A tale critica è stato risposto che Java EE continua ad evolvere e sviluppare funzionalità che la rendono più snella, mediante tecnologie come MicroProfile, WildFly Swarm e Payara Micro.[9]

Alternative[modifica | modifica wikitesto]

Diversi altri software forniscono funzionalità simili, tra i quali:

  • Spring framework che ha funzionalità estremamente simili a quelle di Java EE;
  • ASP.NET, che può essere usato con linguaggi quali C# e Visual Basic.net;
  • Akka, scritto in Scala, ma può essere usato anche in Java;
  • Node.js, una piattaforma guidata da eventi per il motore JavaScript di Chrome;
  • Vert.X un insieme di strumenti per lo sviluppo di applicazioni reattive sulla JVM

Note[modifica | modifica wikitesto]

  1. ^ Introducing the Java EE Web Profile
  2. ^ Eclipse Enterprise for Java FAQ
  3. ^ Eclipse MicroProfile, microprofile.io. URL consultato il 29 agosto 2017.
  4. ^ WildFly Swarm, wildfly-swarm.io. URL consultato il 29 agosto 2017.
  5. ^ Open Liberty, openliberty.io. URL consultato il 20 settembre 2017.
  6. ^ Microservices Series: MicroProfile and Apache TomEE, javacodegeeks.com. URL consultato il 20 settembre 2017.
  7. ^ Payara Micro, payara.fish. URL consultato il 20 settembre 2017.
  8. ^ kumuluzEE, ee.kumuluz.com. URL consultato il 20 settembre 2017.
  9. ^ Is Gartner's Report of Java EE's Demise Greatly Exaggerated?, infoq.com. URL consultato il 29 agosto 2017.

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Internet Portale Internet: accedi alle voci di Wikipedia che trattano di internet