1. INTRODUZIONE
Applicazione web, ovvero Web Application, è l’espressione che in generale viene impiegata
per indicare tutte le applicazioni distribuite web-based. Più precisamente viene impiegata in
ambito del software engineering, dove con il termine web-app si descrive un’applicazione
accessibile via web per mezzo di un network, come ad esempio una intranet o la rete Internet.
Questo modello applicativo è divenuto piuttosto popolare alla fine degli anni novanta, in
considerazione della possibilità per un client generico di accedere a funzioni applicative,
utilizzando come terminale normali web browser.
Infatti l’opportunità di aggiornare ed evolvere a costo ridotto il proprio applicativo, senza
essere costretti a distribuire numerosi aggiornamenti ai propri clienti attraverso supporti fisici,
ha reso la soluzione piuttosto popolare per molti produttori software.
I client finalizzati unicamente alla funzione di collegarsi ai terminali di web application,
vengono chiamati thin client.
Quando le prime applicazioni client-server cominciarono ad essere rilasciate nel panorama
informatico, da metà circa degli anni ottanta, questi sistemi richiedevano che per ognuno di
essi fosse installata la parte client direttamente sulla workstation di ciascun utente. In breve
qualunque aggiornamento, patch o modifica dell’applicativo lato server si trasformava nella
esigenza di installare le versioni aggiornate su tutte le workstation degli utenti dell’applicativo
stesso. Questo tipo di problematiche inducevano ovviamente, in modo diretto, un onere
economico non indifferente per il produttore del software, e di conseguenza un costo
periodico di adeguamento per tutti gli utenti di questo tipo di applicazione informatica.
Di contro, le web application generano il loro output in modo dinamico pilotando un front-
end composto da documenti web, destinati quindi ad un semplice web browser. Le prime
web-app consistevano infatti nella generazione di pagine standard HTML / XHTML;
successivamente, con l’evolversi delle tecnologie associate e soprattutto con la nascita di
nuovi standard, si cominciarono a distribuire attraverso di esse documenti in formati ancora
più “neutri”, come l’XML. In breve ogni singola pagina web viene inviata al client come se
fosse un documento statico, ma la sequenza delle pagine può fornire un’esperienza interattiva,
poiché l’input dell’utente è restituito attraverso gli elementi interni della pagina stessa.
Durante la sessione il web browser interpreta e visualizza le pagine e dunque diventa il client
universale per tutte le web application, indipendentemente dal produttore del software.
Più di recente attraverso le web-app vengono spesso passati flussi di dati in formati SGML
(Standard Generalized Markup Language, che è uno standard per la descrizione logica dei
documenti), generici o custom, direttamente ad altre applicazioni che, in virtù dell’uso di
questo tipo di output, sono sempre accessibili attraverso un comune web browser.
La parte dinamica lato client di questi sistemi informatici è sempre affidata a linguaggi
standard, come ad esempio JavaScript, che sono inclusi in tutti i browser. Il crescente
successo conseguito da librerie esperte, ormai veri e propri framework come AJAX, oppure
plug-in, come Flash Player, consente oggi di arricchire le interfacce utente in modo completo
ed efficiente.
3
2. J2EE
Java EE (Java Enterprise Edition) è la versione enterprise della piattaforma java. È costituita
da un insieme di specifiche che definiscono le caratteristiche e le interfacce di un insieme di
tecnologie pensate per la realizzazione di applicazioni di tipo enterprise e mission critical.
Chiunque può realizzare un'implementazione di tali specifiche e produrre application server
compatibili con le specifiche Java EE.
2.1 Enterprise JavaBean (EJB)
Gli Enterprise JavaBean definiscono un sistema a componenti distribuito che rappresenta il
cuore della specifica Java EE. Tale sistema fornisce le caratteristiche richieste dalle
applicazioni enterprise, come scalabilità, sicurezza e persistenza dei dati.
Gli EJB sono i componenti che implementano la logica di business, lato server, all'interno
dell'architettura Java EE. Le specifiche per gli EJB definiscono diverse proprietà che questi
devono rispettare, tra cui la persistenza, il supporto alle transazioni, la gestione della
concorrenza e della sicurezza e l'integrazione con altre tecnologie.
Le specifiche EJB intendono fornire una metodologia standard per implementare la logica di
funzionamento delle applicazioni di tipo enterprise, applicazioni cioè che forniscono servizi
via Internet. Per realizzare applicazioni di questo tipo è necessario affrontare una serie di
problematiche tecniche che possono rivelarsi molto complesse e laboriose da risolvere. Gli
Enterprise JavaBean intendono fornire una soluzione a questi problemi in modo da
semplificare lo sviluppo di questo tipo di applicazioni.
Le specifiche EJB descrivono in dettaglio come realizzare un application server che fornisca
le seguenti funzionalità:
•
Persistenza;
•
Transazioni;
•
Programmazione ad eventi tramite il JMS (Java Message Service);
•
Servizio di directory per elencare e nominare gli EJB (Java Naming e Directory
Interface);
•
Sicurezza (Java Cryptography Extension e Java Authentication e Authorization Service).
Tipi di Enterprice JavaBean:
•
EJB di Entità (Entity EJB): il loro scopo è di inglobare gli oggetti sul lato server che
memorizzano i dati. Gli entity bean forniscono la caratteristica della persistenza dei dati:
•
Persistenza gestita dal contenitore (CMP): il contenitore si incarica della
memorizzazione e del recupero dei dati relativi a un oggetto utilizzando una tabella
di un database;
•
Persistenza gestita dal bean (BMP): in questo caso è il bean a occuparsi del
salvataggio e del recupero dei dati a cui fa riferimento, il salvataggio può avvenire in
4
un database o con qualsiasi altro meccanismo perché è il programmatore che si
incarica di realizzare il meccanismo della persistenza dei dati.
•
EJB di sessione (Session EJB): gestiscono l’elaborazione delle informazioni sul server.
Generalmente sono una interfaccia tra i client e i servizi offerti dai componenti
disponibili sul server. Ne esistono di due tipi:
•
con stato (stateful): i bean di sessione con stato sono oggetti distribuiti che
posseggono uno stato. Lo stato non è persistente, però l’accesso al bean è limitato ad
un unico client;
•
senza stato (stateless): I bean di sessione senza stato sono oggetti distribuiti senza
uno stato associato, questa caratteristica permette un accesso concorrente alle
funzionalità offerte dal bean. Non è garantito che il contenuto delle variabili di
istanza si conservi tra diverse chiamate ai metodi del bean.
•
EJB guidati da messaggi (Message driven EJBs): sono gli unici bean con
funzionamento asincrono. Tramite il Java Message Service (JMS), si iscrivono a un
argomento (topic) o a una coda (queue) e si attivano alla ricezione di un messaggio
inviato all’argomento o alla coda a cui sono iscritti. Non richiedono una instanziazione
da parte del client.
2.2 Java DataBase Connectivity (JDBC)
JDBC (Java DataBase Connectivity) è un connettore per database che consente l’accesso alle
basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java,
indipendentemente dal tipo di DBMS utilizzato. È costituita da una API, raggruppata nel
package java.sql, che serve ai client per connettersi a un database. Fornisce metodi per
interrogare e modificare i dati. È orientata ai database relazionali ed è Object Oriented. La
piattaforma Java 2 Standard Edition contiene le API JDBC, insieme all’implementazione di
un bridge JDBC-ODBC che permette di connettersi a database relazionali che supportino
ODBC. Quest’ultimo driver è in codice nativo e non in Java.
L’architettura di JDBC, così come quella di ODBC, prevede l’utilizzo di un driver manager,
che espone alle applicazioni un insieme di interfacce standard e si occupa di caricare a run-
time i driver opportuni per pilotare gli specifici DBMS. Le applicazioni Java utilizzano le
JDBC API per parlare con il JDBC driver manager, mentre il driver manager usa le JDBC
driver API per parlare con i singoli driver che pilotano i DBMS specifici. Esiste un driver
particolare, il “JDBC-ODBC Bridge”, che consente di interfacciarsi con qualsiasi driver
ODBC in ambiente Windows.
JDBC ammette che esistano diverse implementazioni e vengano utilizzate dalla stessa
applicazione. L’API fornisce un meccanismo che carica dinamicamente i driver appropriati e
li registra nel JDBC Driver Manager. Esso funge da fabbrica di connessioni.
Le connessioni JDBC supportano la creazione e l’esecuzione delle istruzioni. Queste possono
essere comandi SQL come INSERT, UPDATE O DELETE, interrogazioni come SELECT o
stored procedure. I tipi di istruzioni supportati sono:
•
Statement: l’istruzione viene inviata al database di volta in volta;
•
Prepared Statement: l’istruzione viene compilata una sola volta, in modo che le
chiamate successive siano più efficienti;
5