No Slide Title
Download
Report
Transcript No Slide Title
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.