JavaEE: che cos'è?
Java EE è una piattaforma basata su Java SE che fornisce un'API e un ambiente runtime per lo sviluppo e l'esecuzione di applicazioni di rete su larga scala, multilivello, scalabili, affidabili e sicure. Tali applicazioni sono chiamate applicazioni aziendali perché risolvono i problemi affrontati dalle grandi aziende. Tuttavia, non sono solo le grandi aziende e gli enti governativi a trarre vantaggio da questi tipi di applicazioni e dai vantaggi offerti da Java EE. Le soluzioni offerte dalla piattaforma Java EE sono utili, e talvolta semplicemente necessarie, per singoli sviluppatori e piccole organizzazioni.Sviluppo JavaEE
Java EE è sviluppato attraverso il Java Community Process (JCP), formato nel 1998. Consente alle parti interessate di partecipare alla definizione delle versioni future delle specifiche della piattaforma del linguaggio Java. La base di questo processo sono le JSR (Java Specifica Richiesta), documenti formali che descrivono le specifiche e le tecnologie che si propone di aggiungere alla piattaforma Java. Tali richieste vengono avanzate dai membri della comunità: sviluppatori e aziende ordinari. Questi ultimi includono Oracle, Red Hat, IBM, Apache e molti altri. Quelli. i ragazzi propongono nuove funzionalità e chicche a titolo oneroso che vorrebbero includere in Java. E poi si procede a una votazione, sulla base della quale si decide cosa includere nella versione successiva. La cronologia delle versioni di Java EE è simile alla seguente:- J2EE 1.2 (dicembre 1999)
- J2EE 1.3 (settembre 2001)
- J2EE 1.4 (novembre 2003)
- Java EE 5 (maggio 2006)
- Java EE 6 (dicembre 2009)
- Java EE 7 (maggio)
- Java EE 8 (agosto 2017)
- Giakarta EE 8 (settembre 2019)
Architettura dell'applicazione Java EE
Una breve introduzione. Per facilitare la comprensione, parliamo della struttura delle applicazioni Java EE e di alcuni termini che utilizzeremo in seguito. Le applicazioni Java EE hanno una struttura che ha due qualità chiave:- Innanzitutto, multilivello. Le applicazioni Java EE sono multilivello e ne parleremo in modo più dettagliato;
- in secondo luogo, la nidificazione. È presente un server Java EE (o server delle applicazioni), con contenitori di componenti posizionati al suo interno. Questi contenitori ospitano (bingo!) componenti.
Livelli di applicazione
Le applicazioni multilivello sono applicazioni suddivise secondo principi funzionali in moduli isolati (livelli, strati). In genere (anche nel contesto dello sviluppo Java EE), le applicazioni aziendali sono divise in tre livelli:- cliente;
- livello medio;
- livello di accesso ai dati.
-
Il livello client è un'applicazione che richiede dati dal server Java EE (livello intermedio). Il server, a sua volta, elabora la richiesta del client e restituisce una risposta. L'applicazione client può essere un browser, un'applicazione autonoma (mobile o desktop) o altre applicazioni server senza interfaccia grafica.
-
Il livello intermedio si divide, a sua volta, nel livello web e nel livello della logica di business.
-
Il livello web è costituito da alcuni componenti che forniscono l'interazione tra i client e il livello della logica aziendale.
A livello web vengono utilizzate le seguenti tecnologie Java EE:
- Tecnologia JavaServer Faces (JSF);
- Pagine server Java (JSP);
- Linguaggio di espressione (EL);
- Servlet;
- Contesti e inserimento delle dipendenze per Java EE (CDI).
-
Il livello della logica aziendale è costituito da componenti che implementano tutta la logica aziendale dell'applicazione. La logica aziendale è un codice che fornisce funzionalità che coprono le esigenze di alcune aree aziendali specifiche (settore finanziario, bancario, e-commerce). Questo livello può essere considerato il cuore dell’intero sistema.
Tecnologie coinvolte a questo livello:
- JavaBean aziendali (EJB);
- Servizi web RESTful JAX-RS;
- Entità API Java Persistence;
- Servizio di messaggistica Java.
-
-
Livello di accesso ai dati. Questo livello è talvolta chiamato livello dei sistemi informativi aziendali (EIS). L'EIS è costituito da vari server di database, sistemi di pianificazione delle risorse aziendali ERP (Enterprise Resource Planning) e altre fonti di dati. Il livello della logica aziendale accede a questo livello per i dati.
A questo livello puoi trovare tecnologie come:
- API di connettività del database Java (JDBC);
- API di persistenza Java;
- Architettura del connettore Java EE;
- API di transazione Java (JTA).
Server applicativi, contenitori, componenti
Diamo un'occhiata alla definizione di Java EE da Wikipedia. Java EE è un insieme di specifiche e relativa documentazione per il linguaggio Java, che descrive l'architettura della piattaforma server per le attività delle medie e grandi imprese. Per comprendere meglio cosa significa un “insieme di specifiche” in questo contesto, tracciamo un’analogia con un’interfaccia Java. L'interfaccia Java stessa è priva di funzionalità. Definisce semplicemente un contratto in base al quale vengono implementate alcune funzionalità. Ma altre classi implementano l'interfaccia. Inoltre, un'interfaccia può avere diverse implementazioni, ognuna delle quali può differire l'una dall'altra in alcuni dettagli. Con le specifiche tutto è esattamente lo stesso. Naked Java EE è solo un insieme di specifiche. Queste specifiche sono implementate da vari server Java EE. Un server Java EE è un'applicazione server che implementa le API della piattaforma Java EE e fornisce servizi Java EE standard. I server Java EE sono talvolta chiamati server delle applicazioni. I dati del server possono contenere componenti dell'applicazione, ciascuno dei quali corrisponde al proprio livello in una gerarchia a più livelli. Il server Java EE fornisce vari servizi a questi componenti sotto forma di contenitore. I contenitori sono l'interfaccia tra i componenti che ospitano e la funzionalità di basso livello indipendente dalla piattaforma che supporta il componente. I contenitori forniscono servizi specifici ai componenti che ospitano. Ad esempio, la gestione del ciclo di vita dello sviluppo, l'inserimento delle dipendenze, la concorrenza, ecc. I contenitori nascondono la complessità tecnica e aumentano la portabilità. Esistono quattro diversi tipi di contenitori in Java EE :-
I contenitori di applet sono implementati dalla maggior parte dei browser. Quando sviluppi applet, puoi concentrarti sul lato visivo dell'applicazione, mentre il contenitore fornisce un ambiente sicuro.
-
L'Application Client Container (ACC) contiene una serie di classi Java, librerie e altri file necessari per implementare funzionalità quali injection, gestione della sicurezza e servizi di denominazione nelle applicazioni Java SE.
-
Il contenitore Web fornisce i servizi principali per la gestione e l'esecuzione dei componenti Web (servlet, componenti EJB Lite, pagine JSP, filtri, ascoltatori, pagine JSF e servizi Web). È responsabile dell'istanziazione, dell'inizializzazione e del richiamo delle servlet e del supporto dei protocolli HTTP e HTTPS. Questo contenitore viene utilizzato per fornire pagine Web ai browser client.
-
Il contenitore EJB (Enterprise Java Bean) è responsabile della gestione e dell'esecuzione dei componenti del modello EJB che contengono il livello della logica aziendale dell'applicazione. Crea nuove entità bean EJB, ne gestisce il ciclo di vita e fornisce servizi quali funzionalità di transazione, sicurezza, concorrenza, distribuzione, denominazione o invocazione asincrona.
-
Le applet sono applicazioni di interfaccia utente grafica (GUI) eseguite in un browser. Sfruttano la ricca API Swing per produrre potenti interfacce utente.
-
Le applicazioni sono programmi eseguiti sul lato client. Sono in genere un'interfaccia utente grafica (GUI) e utilizzati per l'elaborazione batch.
-
Applicazioni Web (costituite da servlet e relativi filtri, ascoltatori di eventi Web, pagine JSP e JSF): vengono eseguite in un contenitore Web e rispondono alle richieste HTTP dai client Web. I servlet supportano anche endpoint di servizi Web SOAP e RESTful.
-
Le applicazioni aziendali (create con Enterprise Java Beans, Java Message Service, Java Transaction API, chiamate asincrone, Time Services) vengono eseguite in un contenitore EJB. Gli EJB gestiti dal contenitore gestiscono la logica aziendale transazionale. È possibile accedervi localmente o in remoto tramite RMI (o HTTP per servizi Web SOAP e RESTful).
Tecnologie
Quindi, abbiamo risolto l'architettura. La struttura generale dovrebbe essere chiara. Nel processo di descrizione dei componenti dell'architettura, abbiamo toccato alcune tecnologie Java EE come EJB, JSP, ecc. Diamo un'occhiata più da vicino a loro. La tabella seguente mostra le tecnologie utilizzate principalmente a livello client:Tecnologia | Scopo |
---|---|
Servlet | Classi Java che elaborano dinamicamente le richieste del client e generano risposte (solitamente pagine HTML). |
Facce server Java (JSF) | Un framework per la creazione di applicazioni Web con un'interfaccia utente. Consente di includere componenti dell'interfaccia utente (ad esempio campi e pulsanti) in una pagina, trasformare e convalidare questi componenti e archiviare questi dati nell'archiviazione lato server. |
Tecnologia Java Server Faces Facelets | È un sottotipo di applicazione JSF che utilizza pagine XHTML invece di pagine JSP |
Pagine server Java (JSP) | Documenti di testo compilati in servlet. Ti consente di aggiungere contenuto dinamico alle pagine statiche (come le pagine HTML) |
Libreria di tag standard Java Server Pages (JSTL) | Una libreria di tag che incapsula le funzionalità principali nel contesto delle pagine JSP. |
Linguaggio di espressione | Una serie di tag standard utilizzati nelle pagine JSP e Facelet per accedere ai componenti Java EE. |
Contesti e inserimento delle dipendenze per Java EE (CDI) | Rappresenta un insieme di servizi forniti dai contenitori Java EE per la gestione del ciclo di vita dei componenti, nonché per l'inserimento di componenti negli oggetti client in modo sicuro. |
Componenti Java Beans | Oggetti che fungono da archivio temporaneo di dati per le pagine dell'applicazione. |
Tecnologia | Scopo |
---|---|
Componenti Enterprise Java Beans (enterprise bean). | Gli EJB sono bean gestiti che contengono le funzionalità principali di un'applicazione. |
Servizi Web RESTful JAX-RS | È un'API per lo sviluppo di servizi web conformi allo stile architettonico REST. |
Endpoint del servizio Web JAX-WS | API per la creazione e l'utilizzo di servizi Web SOAP. |
Entità Java Persistence API (JPA). | Un'API per accedere ai dati negli archivi dati e convertirli in oggetti del linguaggio di programmazione Java e viceversa. |
Bean gestiti Java EE | Bean gestiti che forniscono la logica aziendale dell'applicazione ma non richiedono le funzionalità transazionali o di sicurezza dell'EJB. |
Servizio di messaggistica Java | L'API Java Message Service (JMS) è uno standard di messaggistica che consente ai componenti dell'applicazione Java EE di creare, inviare, ricevere e leggere messaggi. Ciò garantisce una comunicazione distribuita, affidabile e asincrona tra i componenti. |
Tecnologia | Scopo |
---|---|
L'API di connettività del database Java (JDBC) | API di basso livello per l'accesso e il recupero dei dati dagli archivi dati. Un uso tipico di JDBC è scrivere query SQL su un database specifico. |
L'API di persistenza Java | Un'API per accedere ai dati negli archivi dati e convertirli in oggetti del linguaggio di programmazione Java e viceversa. API di livello molto più elevato rispetto a JDBC. Nasconde tutta la complessità di JDBC allo sviluppatore sotto il cofano. |
L'architettura del connettore Java EE | API per la connessione di altre risorse aziendali, come:
|
L'API Java Transaction (JTA) | Un'API per la definizione e la gestione delle transazioni, incluse transazioni distribuite e transazioni su più archivi dati. |
GO TO FULL VERSION