close

Java EE

Vai alla navigazione Vai alla ricerca

Java Platform, Enterprise Edition o Java EE (precedentemente noto come Java 2 Platform, Enterprise Edition o J2EE fino alla versione 1.4; tradotto informalmente come Java Enterprise ) è una piattaforma di programmazione, parte della piattaforma Java, per lo sviluppo e l'esecuzione di software applicativo .nel linguaggio di programmazione Java . Supporta architetture distribuite N-tier e fa affidamento su componenti software modulari in esecuzione su un server delle applicazioni . La piattaforma Java EE è definita da una specifica . Simile ad altre specifiche di Java Community Process(JCP), Java EE è anche informalmente considerato uno standard perché i fornitori devono soddisfare determinati requisiti di conformità per dichiarare che i loro prodotti sono conformi a Java EE ; standardizzato da JCP.

Java EE ha varie specifiche API come JDBC , RMI , e-mail , JMS , Web Services , XML , ecc. e definisce come coordinarle. Java EE configura anche alcune specifiche univoche di Java EE per i componenti. Questi includono Enterprise JavaBeans , servlet , portlet (secondo la specifica Java Portlets), JavaServer Pages e varie tecnologie di servizi Web. Ciò consente allo sviluppatore di creare un'applicazione aziendale portatile su più piattaforme e scalabile, integrandosi anche con le tecnologie precedenti. Altri vantaggi aggiuntivi sono, ad esempio, che il server delle applicazioni può gestire transazioni, sicurezza, scalabilità, concorrenza e gestione dei componenti distribuiti, il che significa che gli sviluppatori possono concentrarsi maggiormente sulla logica aziendale dei componenti piuttosto che sulle attività di manutenzione di basso livello.

Storia

La specifica J2EE originale è stata sviluppata dalla società Sun Microsystems .

  • J2EE 1.3 è stato sviluppato nell'ambito del Java Community Process . JSR 58 specifica J2EE 1.3, l' SDK J2EE 1.3 è stato inizialmente rilasciato come beta nell'aprile 2001 .
  • La versione beta dell'SDK J2EE 1.4 definita in JSR 151 è stata rilasciata da Sun nel dicembre 2002 .
  • La specifica Java EE 5 è stata sviluppata sotto JSR 244 e la versione finale è stata l'11 maggio 2006 .
  • La versione Java EE 6 è conforme alla specifica JSR 316 ed è stata rilasciata il 10 dicembre 2009.
  • La versione Java EE 7 la cui specifica è JSR 342 , datata 28 maggio 2013.
  • La versione Java EE 8 è stata rilasciata il 31 agosto 2017 e segue la specifica JSR 366 .

A partire dal 24 aprile 2018, Java EE è gestito dalla Eclipse Foundation. La Eclipse Foundation è stata costretta a rimuovere la parola Java dal nome perché Oracle possiede il marchio "Java". Il 26 febbraio 2018 è stato annunciato che il nuovo nome di Java EE sarebbe stato Jakarta EE.

Architettura Java EE

L'architettura Java EE si basa su tre concetti chiave:

  • Servizi : consentono al programmatore di concentrarsi sulla propria logica aziendale e di utilizzare questi servizi per la propria applicazione. Questi servizi possono avere funzionalità di sicurezza, comunicazioni di rete, registrazione, integrità dei dati, ecc. Questi servizi sono forniti da un container.
  • Contenitori : sono ambienti di runtime; vale a dire, un programma in esecuzione e la tua applicazione è costruita su di esso come se fosse un plug-in o la cassetta per una console di gioco. Esistono vari tipi di contenitori e il loro raggruppamento forma un server delle applicazioni.
  • Componenti : sono oggetti Java che contengono la logica di business dell'applicazione e utilizzano i servizi forniti dal container. Esistono diversi tipi di componenti e, a seconda del tipo, vengono distribuiti in un container o in un altro.


Questi tre concetti consentono a Java EE di definire un'architettura a più livelli :

  • Livello client : con componenti che vengono eseguiti sulla macchina client (come un browser, uno smartphone o un computer desktop)
  • Livello Web : viene eseguito sul server Java EE o sul server delle applicazioni e comunica con il livello Web (livello client?) e il livello aziendale in modo tale da trasformare le informazioni nel formato appropriato (ad esempio HTML).
  • Livello server/aziendale: fornisce i dati e mantiene le informazioni del livello client e contiene il livello aziendale. Funziona anche sul server delle applicazioni.
  • Livello dati : dove i dati sono persistenti, ad esempio un database.


Questa architettura cerca di renderla indipendente evitando le dipendenze tra i livelli.


L'uso di questi livelli ci consente, durante lo sviluppo, di dividere la nostra applicazione in diversi livelli. Il modello più tipico è l' MVC Controller View Model in cui i livelli di presentazione, business e accesso ai dati sono separati. Un'architettura a più livelli promuove la separazione a più livelli delle responsabilità. Nel caso particolare dei 3 livelli, la presentazione è separata dalla logica di business, e questa dai dati. Il livello di presentazione non accede direttamente al database, ma solo attraverso il livello aziendale. L'architettura multi-tier introduce molti importanti miglioramenti all'interno della progettazione dell'applicazione, inclusa la flessibilità attraverso un'adeguata separazione tra il livello di presentazione e la logica aziendale.

Componenti

Per costruire applicazioni di componenti basate su JEE, sono stati definiti diversi componenti:

  • Componenti client : sono tutti quelli che vengono eseguiti sulla macchina client e ci sono due tipi, applicazioni client e client web. I client Web sono noti come Thin Client e sono pagine Web generate dinamicamente da componenti Web con linguaggi come HTML o XML che vengono inviate alla macchina client in risposta a una richiesta, in cui sarà presente un browser Web che verrà incaricato di mostrare i contenuti al cliente. Anche quel sito Web può avere un'applet integrata. In questo caso, si connettono direttamente al livello web del server JEE, che ha il compito di accedere al livello aziendale. D'altra parte, le applicazioni client o Smart Client, anch'esse eseguite sul client, offrono un'interfaccia più ricca non basata su un browser web. In questo caso "saltano" la connessione con il livello web e sparano direttamente contro il livello aziendale.
  • Componenti Web: vengono eseguiti nel contenitore Web del server JEE e sono servlet, pagine Web dinamiche come JSF e/o JSP e JavaBeans. I servlet sono classi Java che elaborano dinamicamente le richieste dei client e generano risposte appropriate. Il JSP è un servlet ma più orientato alla presentazione, è più facile per il programmatore. JSF è un'evoluzione di JSP ma con un'interfaccia utente più potente poiché supporta, ad esempio, Ajax. Infine, i Javabean sono componenti server che incapsulano la logica aziendale di un'applicazione.
  • Componenti del livello aziendale : sono quelli che implementano la logica aziendale e vengono eseguiti nel livello aziendale. Sono gli EJB Enterprise Java Beans. Esistono tre tipi di EJB, sessione di entità e guidati da messaggi. Le tecnologie di base di questo livello sono gli EJB, gli api-Rest o quelli di persistenza
  • Componenti del livello dati : non sono componenti java di per sé, ma piuttosto 3party. Ci consente di sfruttare le caratteristiche di tali servizi. Per questo, Java EE ci fornisce un'API per la connettività con il database, un'altra per la persistenza per poter salvare le informazioni, API per le transazioni, ecc.

Sicurezza e persistenza

Persistenza: i dati e le informazioni sono fondamentali nelle applicazioni odierne. Le organizzazioni e le applicazioni devono salvare i dati perché devono archiviare informazioni sulla propria attività. Oggi vedremo che tutto deve essere archiviato e tutto deve essere recuperabile per sfruttare tali informazioni. Qualsiasi applicazione odierna deve avere informazioni archiviate e deve essere in grado di recuperarle in qualsiasi momento. Nel mondo di java ci sono diversi modi per archiviare le informazioni, dalla cosa più semplice che sarebbe serializzare una serie di dati in qualche tipo di file come salvarli in formato json, xml, salvarli in formato binario come con protocolbuffer o anche nel peggiore dei casi con l'API serializzabile java o nel caso più professionale con l'utilizzo di database o datastore.

Quest'ultimo caso, che è il più comune, presenta un problema, poiché quando si parla di database, in molti casi si fa riferimento a database relazionali, dove i dati sono archiviati in tabelle. Tuttavia, java è un linguaggio orientato agli oggetti e lavorare con questi due concetti può avere i suoi piccoli problemi poiché abbiamo bisogno di qualcosa che ci converta tra oggetti e relazioni che abbiamo nel nostro database relazionale.

Esistono diversi modi per farlo, ad esempio utilizzando JDBC che consente di specificare query SQL.

C'è un meccanismo che è responsabile di fare questo per noi, gli ORM , che sono librerie che ci permettono di convertire tra oggetti ed entità relazionali. Le due tecnologie più diffuse al riguardo sono JPA (un'API che permette la memorizzazione persistente delle informazioni semplicemente etichettando ciascuno degli elementi che dobbiamo ricordare) e Hibernate , che è uno degli ORM più utilizzati.

Sicurezza . La sicurezza è un aspetto fondamentale delle applicazioni aziendali. La sicurezza in Java EE si basa su Java Authentication and Authorization Service (JAAS). JAAS separa il sistema di autenticazione dall'applicazione Java EE tramite l'uso di un'API ben definita implementata dal server delle applicazioni.

Struttura generale di controllo e gestione delle API

Le API Java EE includono diverse tecnologie che estendono la funzionalità delle API Java SE di base .

javax/ejb.*

L' API Enterprise JavaBeans definisce un insieme di API che un contenitore di oggetti distribuito supporterà per fornire persistenza , RPC (utilizzando RMI o RMI-IIOP ), controllo della concorrenza, transazioni e controllo dell'accesso per gli oggetti distribuiti.

javax/denominazione

I pacchetti javax.naming, javax.naming.directory, javax.naming.event, javax.naming.ldap e javax.naming.spi definiscono l' API JNDI (Java Naming and Directory Interface).

java.sql

Pacchetti java.sqle javax.sqldefinire l' API JDBC .

javax/transazione.*

Questi pacchetti definiscono la Java Transaction API ( JTA ).

javax/xml.*

Questi pacchetti definiscono l' API JAXP .

javax/jms.*

Questi pacchetti definiscono l' API JMS .

javax/persistenza

Questo pacchetto fornisce le classi e le interfacce per gestire l'interazione tra provider di persistenza, classi gestite e client JPA ( Java Persistence API ).

Vantaggi

Uno dei vantaggi di Java EE è che puoi iniziare con un costo minimo o nullo. L'implementazione Java EE di Oracle Corporation può essere scaricata gratuitamente e sono disponibili molti strumenti open source per estendere la piattaforma o semplificare lo sviluppo.

Esempi di strumenti di sviluppo Java open source di terze parti sono:

Server applicativi certificati

Server applicativi Java EE certificati 5

  • JOnAS , un server delle applicazioni open source di ObjectWeb.
  • JBoss , inizialmente sviluppato da JBoss Inc e successivamente acquisito da Red Hat . Esiste una versione open source supportata dalla community e una versione enterprise.
  • Sun Java System Application Server Platform Edition 9.0, basato su GlassFish .
  • Oracle WebLogic Application Server 10.0 (precedentemente BEA Systems).
  • SAP NetWeaver Application Server , Java EE 5 Edition di SAP .
  • JEUS 6, un server di applicazioni specifico per Linux di TmaxSoft.
  • Apache Geronimo 2.0
  • IBM WebSphere Application Server .
  • Contenitori Oracle per Java EE 11.
  • GlassFish , un server di applicazioni open source di Sun.
  • Apache OpenEJB tramite Apache Geronimo.

Server applicativi certificati J2EE 1.4

Server applicativi certificati J2EE 1.3

  • Server delle applicazioni Macromedia JRun .

Vedi anche

Riferimenti

Collegamenti esterni