Java 2 Platform Enterprise Edition (J2EE) 1.3 Il modello delle applicazioni multi-tier n e l c o r s o Applet • An applet is a program written in the JavaTM programming language that can be included in an HTML page, much in the same way an image is included. When you use a Java technology-enabled browser to view a page that contains an applet, the applet's code is transferred to your system and executed by the browser's Java Virtual Machine (JVM). • An applet is a small program that is intended not to be run on its own, but rather to be embedded inside another application. • La classe Applet deve essere la super class di ogni applet • Applet è una sottoclasse di java.awt.Panel Container, componenti e connettori • Componenti – vari tipi con caratteristiche molto diverse • Container – infrastructure per le componenti – gestiscono l’interazione con i clienti provvedendo servizi trasparenti ad entrambi (es. transaction) – permettono di precisare il comportamento delle componenti al momento dell’installazone invece che nel loro codice • Connettori – definiscono un’API per collegarsi a servizi software esistenti anche di altra natura J2EE consiste di • J2EE Platform – lo standard per la piattaforma per ospitare le applicazioni J2EE, specificata come un insieme di API e “politiche” – occorre procurarsi l’implementazione, ≠ J2SE • J2EE Compatibility Test Suite – un insieme di test per verificare che una realizzazione sia compatibile con lo standard • J2EE Reference Implementation – l’implementazione di riferimento, per mostrare le caratteristiche di J2EE e per provvedere una definizione operazionale della piattaforma – non adatta per un uso reale, la useremo nel corso • Sun Blueprints Design Guidelines for J2EE – descrivano un modello standard di programmazione per applicazioni multi-tier Fine lezione Applicazioni distribuite multi-tier • esempi o presentation tier n e l c o r s o Enterprise Information System Componenti • una componente J2EE è una unità software self-contained, sviluppata indipendentemente, e poi assemblata in una applicazione J2EE con le sue classi e file collegati e che comunica con altre componenti • diversi tipi di componenti client: applicazioni client, applet (si possono usare anche i Javabeans al loro interno) strato Web server: Java Servlet e JavaServer Pages (JSP) strato server: Enterprise JavaBeans (EJB) (enterprise beans) • tutte scritte in Java e compilate come al solito • la differenza tra le componenti J2EE e le classi Java è che le componenti J2EE sono sviluppate indipendentemente, assemblate in un’applicazione J2EE, controllando per vedere se sono fatte bene ed in accordo alla specifica, installate, eseguite e gestite da un server J2EE (container) Cliente: Web • consiste di due parti – pagine Web dinamiche create dalle componenti sullo strato Web server – Web browser, che mostra le pagine ricevute dal server Web • Applets – le pagine ricevute dallo strato Web possono contenere applet (piccolo programmi Java con interfaccia grafica che sono eseguiti sun una Java VM installata nel Web browser) – occorre un plug-in ed una politica di sicurezza per eseguirle Cliente: Applicazione • viene eseguito su una macchina client • permette di trattare i casi che richiedono un’interfaccia utente più ricca di quella che può essere fornita da pagine HTML • tipicamente hanno un’interfaccia creata usando le API Swing o Abstract Window Toolkit (AWT), ma è anche possibile un’interfaccia a linee di comando • accedono direttamente agli enterprise beans che girano nello strato server (business) Cliente: JavaBeans Component • lo strato client (ma anche quello server) può includere componenti basate sull’architettura a componenti JavaBeans (≠ Enterprise java Beans) • ma queste non sono considerate componenti J2EE Cliente: comunicazioni con il server J2EE • il cliente comunica con lo strato business in esecuzione sul server J2EE, o direttamente, o, come nel caso di un cliente su un browser, per mezzo di JSP pages o servlets in esecuzione sullo strato Web Server tier (1) • Web components – servlet ricevono richieste dal browser e costruiscono risposte in forma di pagine html – JSP come le servlet ma text-based, permettono di creare in modo più naturale i contenuti delle pagine • Business Components – Enterprise JavaBeans [perchè questo nome ???] * gestiscono la logica del Business, cioè come il sistema risolve i problemi del Business considerato (bancario, commercio al dettaglio, finanziario) * un enterprise bean ˚ riceve i dati dal client, li processa, se necessario, e li manda allo strato enterprise per immagazzinamento ˚ può anche recuperare dati immagazzinati, li processa, se necessario, e li manda indietro al client Server tier (2) • Tre tipi di Enterprise JavaBeans – session bean * rappresenta una conversazione tempornea con un cliente * quando il cliente finisce la sua esecuzione, il session bean ed i suoi dati sono persi – entity bean * rappresenta dei dati persistenti immagazzinati in una riga di una tabella di un database * se il cliente termina, o se il server si spegne, il framework sottostante (container) assicura che il dato contenuto nel bean sia salvato – message-driven bean * combina le caratteristiche di un session bean e di un JMS (Java Message Service) message listener, permettendo alle componenti business di ricevere messaggi asincroni JMS Server tier (3) Enterprise Information System Tier • gestisce il sistema informativo aziendale e include sistemi, come – – – – un enterprise resource planning (ERP) mainframe transaction processing database systems e altri sistemi legacy • le componenti delle applicazioni J2EE possono aver bisogno di accedere a tali sistemi, per esempio per recuperare le informazioni contenute in un database J2EE Containers (1) • le applicazioni multitiered, sopratutto se il client è thin, sono difficili da scrivere, poichè occorre trattare le transazioni, gestire lo stato, il multithread, ... ed altri complicati dettagli a basso livello • J2EE aiuta poichè – permette di organizzare la logica del sistema in componenti riusabili – il server fornisce vari servizi per gestire le problematiche più comuni attraverso containers per ogni tipo di componenti – così lo sviluppatore può concentrarsi solo sul risolvere i problemi del business considerato J2EE Containers (2) • prima che una componente J2EE possa essere eseguita, deve essere assemblata in un’applicazione J2EE e installata in un contenitore appropriato • l’assemblaggio richiede di specificare i setting dei container, ciò permette di specializzare il supporto fornito dal server J2EE, che include servizi come la sicurezza, gestione delle transazioni, connetività remota, ... – il modello di sicurezza J2EE permette di configurare una componente, così che le risorse del sistema sono accedute solo dagli utenti autorizzati – il modello delle transazioni permette di specificare quali metodi fanno parte di una transazione, così che siano eseguiti come una singola unità – JNDI lookup services fornisce un’interfaccia unificata per accedere a differenti servizi di naming e directory – il modello della connetività remota gestisce le comunicazioni a basso livello tra i clienti e gli enterprise beans; dopo che un enterprise bean è stato creato un cliente invoca i suoi metodi, come se fossere nella stessa VM J2EE Containers (3) • I containers gestiscono anche servizi non configurabili – – – – life cycle degli enterprise beans collegamento ai database persisrtenza dei dati accesso alle API della piattaforma J2EE (dopo) Tipi di contenitori gestisce l’esecuzione delle applet Web browser + Java Plug-in girano assieme sul client gestisce l’esecuzione delle componenti dell’applicazione cliente le applicazioni client e i loro container girano sul cliente La parte run-time di un prodotto J2EE gestisce l’esecuzione delle componenti Web gestisce l’esecuzione degli enterprise beans Enterprise beans e il loro contenitore girano sul server J2EE Sviluppo e ruoli relativi (1) l’uso di moduli riusabili permette di fattorizzare lo sviluppo e l’installazione di un’applicazione tra diversi ruoli, così che persono o ditte diverse possano eseguire diferenti parti del processo • J2EE Product Provider – una ditta che progetta e rende disponibile per l’acquisto la piattaforma J2EE, le sue API e quanto altro definito dalla J2EE Specification • Tool Provider – ditta o persona che crea strumenti per lo sviluppo, l’assemblaggio, e l’impacchettamento Sviluppo e ruoli relativi (2) • Application Component Provider – ditta o persona che crea componenti dei vari tipi da usare nelle applicazioni J2EE – Enterprise Bean Developer * scrive e compila il codice sorgente * specifica il deployment descriptor * impacchetta assieme i file .class e il deployment descriptor in un file EJB JAR (.jar) – Application Client Developer * scrive e compila il codice sorgente * specifica il deployment descriptor per il client * impacchetta assieme i file .class e il deployment descriptor in un file EJB JAR (.jar) – WEB component Developer * simile Sviluppo e ruoli relativi (3) • Application Assembler – ditta o persona che riceve i file JAR dai component provider e li assembla in una application ottenendo un file J2EE EAR (.ear). – può editare i deployment descriptor direttamente (sono XML) o usare tool specifici – per produrre un file EAR contenente l’applicazione J2EE * assembla i file EJB JAR creati precedentemente in un’applicazione J2EE (file EAR) * specifica il deployment descriptor per l’applicazione J2EE * verifica che il contenuto dei file EAR sia ben formato ed in accordo con la specifica J2EE Sviluppo e ruoli relativi (4) • Application Deployer e Administrator – ditta o persona che configura ed installa l’applicazione J2EE, ammistra le macchine e la rete dove l’applicazione gira, e supervisiona l’ambiente di runtime – durante la configurazione segue le istruzioni dei fornitori di componenti per risolvere eventuali dipendenze dall’esterno, specifica i setting di sicurezza, e assegna gli attributi per le transazioni – durante l’installazione muove le componenti dell’applicazione sul server e genera le classi e le interfaccie richieste dai container Sviluppo e ruoli relativi (5) • per installare e configurare un’applicazione il Deployer esegue le seguenti attività – aggiunge l’applicazione (file EAR creato precedentemente) al server J2EE – configura l’applicazione J2EE per il suo ambiente operazionale modificando il suo deployment descriptor – controlla che il contenuto del file EAR sia ben formato e che segua la specifica J2EE – Deploys (installa) il file EAR nel server J2EE J2EE API (1) quelle necessarie per sviluppare applicazion J2EE • Enterprise JavaBeans Technology – in seguito • Java Servlet Technology • JavaServer Pages Technology • Java Message Service (JMS) – è uno standard per scambio di messaggi – permette alle componenti delle applicazioni J2EE di creare, mandare, ricevere, e leggere messaggi (comunicazione affidabile, loosely coupled e asincrona) • Java Transaction API (JTA) – fornisce un’interfaccia standard per delimitare le transazioni • JavaMail API – per mandare notificazioni per e-mail * API per mandare la posta * SPI per usare il sistema di posta (una sua realizzazione è inclusa per mandare posta usando Internet) J2EE API (2) • J2EE Connector Architecture – è usata per creare resource adapters che supportino l’accesso ai sistemi informativi delle imprese – un resource adapter è una componente software che permette alle applicazioni J2EE di accedere ed interragire con i sottostanti gestori delle risorse – tipicamente ci sarà un diverso resource adapter per ogni tipo di database o di sistema informativo aziendale • Java Authentication & Authorization Service (JAAS) – fornisce un modo per le applicazioni J2EE per autenticare ed autorizzare specifici gruppi di utenti ad eseguirle • Java API for XML Processing – serve per sviluppare i tools (i deployment descriptors sono scritti in XML) • Java Naming and Directory Interface (JNDI), JDBC – forniti da J2SE Riferimenti su J2EE • il sito http://java.sun.com/j2ee/ • specification Java™ 2 Platform Enterprise Edition Specification, v1.3 j2ee-1_3-fr-spec.pdf • Enterprise JavaBeans Specification, Version 2.0 ejb-2_0-fr2-spec.pdf • overview http://java.sun.com/j2ee/overview.html • guida semplificata http://java.sun.com/j2ee/sdk_1.2.1/techdocs/guides/j2eeoverview/cover.fm.html • tutorial http://java.sun.com/j2ee/tutorial/ Altre “tecnologie” Java (1) • non legate ad una particolare variante della piattaforme – JavaSpaces Technology * simple unified mechanism for dynamic communication, coordination, and sharing of objects between Java technology-based network resources like clients and servers - it is a Jini technology service. – Jini Network Technology * an open architecture for creating highly adaptive network-centric services for both hardware and software. – Project JXTA * a set of open, generalized peer-to-peer protocols that allow any connected device (cell phone, PDA, or PC to server) on the network to communicate and collaborate. – Sun ONE Active Server Pages * server-side software for deploying dynamic web sites and applications based on Active Server Pages (ASP or .asp) using the Apache, Sun ONE or Zeus Web servers running on a variety of platforms. Altre “tecnologie” Java (2) JAIN APIs rapid development of telecommunication products and services Java Dynamic Management Kit lets you build and distribute network management intelligence for applications, networks and devices. Java Management Extensions (JMX) a platform-independent and open technology for managing and monitoring applications in any industry. Java Metadata Interface (JMI) a dynamic, platform-neutral infrastructure that enables the creation, storage, access, discovery, and exchange of metadata Java Shared Data Toolkit a development library to add collaboration features to applets and Java applications Java Technology for Service Providers a Java architecture for software development in end-to-end service driven networks Jiro Technology simplifies storage management and reduces the costs and complexity of overseeing a highly distributed environment. OSS through Java Initiative produces a standard set of Java technology-based APIs that help jumpstart the implementationof end-to-end services on next-generation wireless networks and leverage the convergence of telecommunications and Internet-based solutions Esercizi 1] Presentare dei sistemi/prodotti software che possano ragionevolmente essere realizzati utilizzando la tecnologia J2EE 2] Presentare dei sistemi/prodotti software che non possano ragionevolmente essere realizzati utilizzando la tecnologia J2EE 3] Presentare dei sistemi/prodotti software che possano ragionevolmente essere realizzati utilizzando la tecnologia J2EE a 4 tier 4] Presentare dei sistemi/prodotti software che possano ragionevolmente essere realizzati utilizzando la tecnologia J2EE a 3 tier 5] Quale pensate sia la vita media di un sistema J2EE ? Esercizi 6] Trovare le parole inglesi usate in questi slide, e darne la traduzione letterale ed in questo ambito. 7] Trovare le sigle usate in questi slide, darne la forma espansa, e precisare che cosa significano in questo ambito. 8] Cosa significa una sigla avente forma XX ? 9] Elencare i termini usati in questi slide non conosciuti a priori, e precisare che cosa significano in questo ambito. 10] Qual’è la differenza tra Enterprise Java Beans e Java Beans ? 11] Vi piacerebbe avere delle altre API nella J2SE ? 12] Come progetto del corso dovrete sviluppare un’applicazione J2EE; proponete una modalità per il suo svolgimento distribuendo i vari ruoli tra i gruppi di studenti e gli studenti membri di ogni gruppo.