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.