TELECOM LA B ITALIA www.telecomitalialab.com [Tipo Documento] Cod. Doc. DPC 2002.XYZ JADE White Paper Versione: 1.0 Data: 27.03.2003 Riservatezza: Pubblico Numero di pagine: 14 AUTORE: Giovanni CAIRE (RO/SI/D) Laura CONTIN (RO/SI/D) REVISIONE: Fabio BELLIFEMINE (RO/SI/D) APPROVAZIONE: Fabio BELLIFEMINE (RO/SI/D) Executive summary Il presente documento presenta le principali funzionalità e caratteristiche della piattaforma JADE per lo sviluppo di applicazioni peer-to-peer ad agenti. Viene inizialmente fornita una panoramica sulle tecnologie di riferimento. Ci si focalizza quindi su JADE e si descrive il modello funzionale e architetturale della piattaforma, soffermandosi sulle caratteristiche di maggiore rilievo. Infine vengono presentate varie considerazioni e individuati alcuni tra gli ambiti applicativi che potrebbero trarre maggior vantaggio dal suo utilizzo. DT vers. 1 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper Indice 1 Introduzione.............................................................................................................................. 3 2 Le tecnologie di riferimento ...................................................................................................... 3 2.1 Il modello peer-to-peer........................................................................................................... 3 2.1.1 Modelli architetturali di reti peer-to-peer ....................................................................4 2.2 Il paradigma ad agenti ........................................................................................................... 4 2.2.1 Lo standard di riferimento ..........................................................................................5 2.3 Il concetto di middleware ....................................................................................................... 6 2.4 La tecnologia Java................................................................................................................. 6 3 Che cos’è JADE? ..................................................................................................................... 7 3.1 Modello architetturale ............................................................................................................ 8 3.2 Modello funzionale................................................................................................................. 8 3.3 JADE in ambiente mobile .................................................................................................... 10 3.4 Dettagli tecnici ..................................................................................................................... 11 4 La comunità di JADE.............................................................................................................. 12 4.1.1 Il progetto open source ............................................................................................12 4.1.2 Il Board di controllo ..................................................................................................12 5 Perché usare JADE?.............................................................................................................. 12 5.1 Realizzazione di task complessi.......................................................................................... 13 5.2 Pro-attività............................................................................................................................ 13 5.3 Efficienza delle applicazioni multi-party............................................................................... 13 5.4 Interoperabilità ..................................................................................................................... 13 5.5 Efficienza nello sviluppo delle applicazioni.......................................................................... 13 5.6 Riduzione dei costi............................................................................................................... 14 6 Riferimenti .............................................................................................................................. 14 DT vers. 1 RISERVATEZZA: Pubblico Pagina 2 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper 1 Introduzione Il presente documento descrive le principali funzionalità e caratteristiche della piattaforma JADE sviluppata da TILAB in questi anni e attualmente distribuita in Open Source secondo la licenza LGPL. JADE è un middleware basato su Java per lo sviluppo di applicazioni peer-to-peer ad agenti in ambiente fisso e mobile. Per meglio comprendere il significato di questa definizione il capitolo 2 fornisce una panoramica sulle tecnologie di riferimento ed in particolare • il modello di comunicazione peer-to-peer e le differenze con il modello client-server. • il paradigma degli agenti intelligenti e gli standard di riferimento. • il concetto di middleware e i vantaggi di un approccio “orizzontale” nello sviluppo di applicazioni • la tecnologia Java Nel capitolo 3 ci si focalizza su JADE, vengono descritte le principali funzionalità, il modello architetturale e sono presentati alcuni dettagli tecnici. Il capitolo 4 fornisce i dati più significativi relativamente alla comunità che si è radunata in questi anni attorno a JADE e presenta il progetto open source e il board di controllo. Infine nel capitolo 5 sono presentate alcune considerazioni mirate ad evidenziare i vantaggi derivanti dall’uso di JADE nello sviluppo di applicazioni distribuite. 2 Le tecnologie di riferimento 2.1 Il modello peer-to-peer Il modello di comunicazione dominante nel panorama odierno delle applicazioni distribuite è senza dubbio quello “client-server”. Tale modello è basato su una rigida distinzione di ruoli fra i nodi client ed i nodi server: l’intelligenza, la logica applicativa e le informazioni risiedono interamente sui server, mentre ogni client è solo uno strumento per gestire l’interfaccia grafica con l’utente e, in particolare, presentare (render) l’informazione. I nodi server forniscono i servizi, offrono cioè le capabilities, ma non hanno alcuna capacità di iniziativa, sono reattivi ed attendono di essere invocati dai nodi client; questi ultimi, di contro, concentrano tutta l’iniziativa e, tipicamente dietro richiesta dell’utente, richiedono il servizio, lo utilizzano, ma non forniscono alcuna capability. I client possono comparire e scomparire nel tempo, mentre i server devono tipicamente fornire garanzie di stabilità e generalmente rispondono ad un indirizzo fisso e pre-definito. I client comunicano con i server, ma non possono comunicare tra loro. Un tipico esempio di applicazioni basate sul modello client-server sono le applicazioni web dove i client sono i browser (il cui unico compito è quello di reperire, su esplicita richiesta dell’utente, informazioni residenti su siti internet e di presentarle in modo opportuno) e i server sono i siti/portali e contengono tutte le informazioni e la logica applicativa. Esistono peraltro varie classi di applicazioni distribuite che non si adattano bene ad un modello di comunicazione client-server. Se consideriamo ad esempio una chat, dove un messaggio scritto dall’utente X deve essere ricevuto dall’utente Y e viceversa, osserviamo che i nodi attivi sui terminali degli utenti devono essere in grado di comunicare tra loro. Altre applicazioni di questo genere sono ad esempio sistemi di file sharing (come Napster o Gnutella) e giochi multiplayer. Realizzare applicazioni che appartengono a questa classe con un modello client-server è ovviamente possibile (nel caso della chat per esempio il messaggio scritto dall’utente X potrebbe essere inviato ad un server centrale dal quale il client dell’utente Y lo può reperire), ma costituisce sicuramente una forzatura. Infatti il server non è un elemento necessario da un punto di vista logico, ma solo un artefatto implementativo. Un modello di comunicazione cosiddetto “peer-to-peer” in cui tutti i nodi possono comunicare tra loro, ogni nodo può giocare sia il ruolo di iniziatore che quello di risponditore nella comunicazione e dove le risorse e l’intelligenza applicativa sono distribuite sui vari nodi, risulta decisamente più adatto. In un modello peer-to-peer scompare completamente la distinzione di ruoli fra “client” e “server”, lasciando il DT vers. 1 RISERVATEZZA: Pubblico Pagina 3 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper posto unicamente a nodi “peer”, dotati di una combinazione di iniziativa e di capabilities. La logica della applicazione non è più concentrata nel server, ma viene distribuita tra i peer. 2.1.1 Modelli architetturali di reti peer-to-peer Un’altra importante differenza tra i modelli client-server e peer-to-peer riguarda le modalità di discovery dei nodi con cui interagire. Nei sistemi client-server ogni client deve conoscere il server e, per contro, non ha mai necessità di conoscere gli altri client (in quanto non comunicherà mai con loro). Nei sistemi peer-to-peer al contrario chi conosce chi al tempo 0 è del tutto arbitrario. In generale un peer dovrà “scoprire” quali sono gli altri peer con cui comunicare (ad esempio perché offrono i servizi di cui ha bisogno) prima di interagire effettivamente con essi. Di conseguenza i sistemi peer-topeer supportano in generale opportuni meccanismi di discovery (pagine gialle e pagine bianche) che consentono ai vari peer di pubblicare le proprie caratteristiche (ad esempio i servizi offerti) e di identificare altri peer con determinate caratteristiche. Sulla base di questi meccanismi è possibile individuare due fondamentali modelli di rete [3] (Figure 1): • reti P2P pure o decentralizzate • reti P2P ibride o a indice centralizzato Figure 1. Client/Server (a sinistra), P2P puro (a destra), P2P ibrido (a centro) Una rete peer-to-peer pura è completamente decentralizzata e i peer hanno una completa autonomia locale. Nelle architetture peer-to-peer pure, i singoli peer devono saper sfruttare i protocolli messi a disposizione dalla rete per rintracciare altri potenziali partner (ad esempio mediante messaggi di discovery) e comunicare a ciascuno di essi l’elenco delle risorse che sono disposti a condividere. La ricerca della risorsa o servizio di interesse avviene mediante messaggi di query. La comunicazione avviene su canali bidirezionali senza l’intervento di nessun elemento di coordinazione e gestione. Si tratta di reti difficili da gestire e mantenere coerenti per l’assenza di nodi di riferimento. All’aumentare dei nodi aumenta la capacità complessiva del sistema, ma il traffico cresce in maniera esponenziale. Si tratta inoltre di reti non sicure poiché chiunque può entrare nella rete senza alcun meccanismo di controllo. Nelle architetture ad indice centralizzato (peer-to-peer ibrido), invece, sono presenti uno o più nodi speciali (detti nodi indice) che hanno lo scopo di agevolare la ricerca dei peer attivi, mediante servizi di discovery, e la ricerca delle risorse di interesse mediante servizi di content look up. Le reti a indice centralizzato generano tipicamente meno traffico e sono più sicure in quanto richiedono la registrazione dei peer. Tali reti dipendono però dalla disponibilità del nodo indice. Se tale nodo non è disponibile il meccanismo di discovery fallisce. 2.2 Il paradigma ad agenti Sebbene la comunità scientifica ne discuta ormai da tempo, è solo in questi ultimi anni che sta cominciando a trovare riscontri applicativi pratici un nuovo paradigma di sviluppo software denominato “Agent Oriented Programming”. Tale paradigma nasce dalla fusione di alcuni concetti derivanti dagli DT vers. 1 RISERVATEZZA: Pubblico Pagina 4 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper studi sull’intelligenza artificiale con la tecnologia degli oggetti distribuiti. Per quanto non esista una definizione universalmente accettata, il paradigma ad agenti prevede la realizzazione di un’applicazione software come collezione di componenti (dette appunto agenti) • autonome, in grado cioè di svolgere task lunghi e complessi senza la necessità di ricevere istruzioni dall’utente su cosa fare ad ogni passo • proattive, in grado cioè di prendere iniziative anche senza uno stimolo esplicito da parte di un utente • comunicative, in grado cioè di interagire tra loro al fine di raggiungere l’obiettivo globale del sistema. Il modello architetturale di una applicazione realizzata con tecnologia ad agenti è intrinsecamente peer-to-peer in quanto ogni agente è potenzialmente in grado di iniziare una comunicazione con ogni altro agente nel sistema, ogni agente ha una sua logica e delle sue risorse interne, ogni agente è in grado sia di offrire che di utilizzare servizi e gli agenti necessitano di opportuni meccanismi di discovery per identificare con quali altri agenti interagire; in ottica peer-to-peer ogni agente è quindi un peer. • • • In particolare, inoltre, il paradigma degli agenti pone l’accento sugli aspetti di comunicazione asincrona – preserva l’autonomia degli agenti che possono gestire in base alla loro logica interna come e quando gestire i messaggi che gli arrivano loosely coupled – non è necessaria alcuna conoscenza delle caratteristiche interne dell’interlocutore per poter interagire con esso semanticamente comprensibile – ricevendo un messaggio, un agente può attribuirgli il corretto significato e dedurre l’intenzione in base alla quale quel messaggio è stato inviato. 2.2.1 Lo standard di riferimento Per sfruttare appieno le potenzialità della tecnologia ad agenti, nel 1996 varie aziende (tra cui TILAB) nel mondo dell’ICT hanno dato vita a FIPA (Foundation for Intelligent Physical Agents) [2], una iniziativa internazionale non-profit con l’obbiettivo di produrre specifiche per l’interoperabilità tra agenti realizzati da produttori diversi e con tecnologie diverse. Essendo focalizzate sugli aspetti di interoperabilità, le specifiche FIPA non trattano la struttura interna di un agente, ma definiscono un linguaggio di comunicazione tra gli agenti detto ACL (Agent Communication Language) e delle modalità di interazione con i servizi di pagine bianche e pagine gialle mediante i quali un agente può trovare gli altri agenti con cui deve interagire per raggiungere i propri obiettivi. In particolare il linguaggio ACL è derivato dalla teoria degli atti comunicativi: la comunicazione avviene attraverso lo scambio di messaggi asincroni corrispondenti all’esecuzione di ben precise azioni (al pari delle azioni “fisiche” quali la scrittura su un file o la computazione di un valore) dette “comunicative” quali INFORM, PROPOSE, REQUEST…Oltre all’intenzione comunicativa, che esprime in modo esplicito che cosa un agente si aspetta dal suo interlocutore, un messaggio ACL contiene • le indicazioni sul mittente e i destinatari, • alcuni campi (ad esempio un identificatore di conversazione) che supportano l’implementazione di interazioni lunghe e complesse quali aste, negoziazioni e deleghe di task, • il contenuto vero e proprio del messaggio ovvero ad esempio il fatto del quale si informa il destinatario (se l’intenzione comunicativa è INFORM) o l’azione richiesta al destinatario (se l’intenzione comunicativa è REQUEST), • le indicazioni sul “content language” (ovvero la sintassi con cui è espresso il contenuto) e sulla ”ontologia” (ovvero il vocabolario dei termini utilizzati nel contenuto e il loro significato) utilizzati. Gli agenti che prendono parte ad una conversazione dovranno chiaramente “parlare” lo stesso content-language e “conoscere” la stessa ontologia per capirsi effettivamente. DT vers. 1 RISERVATEZZA: Pubblico Pagina 5 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper 2.3 Il concetto di middleware Il termine middleware sta ad indicare l’insieme del software (librerie, framework, toolkit) che semplifica e rende più veloce lo sviluppo di applicazioni fornendo dei servizi generici, utili per una molteplicità di applicazioni. Se consideriamo ad esempio un’applicazione distribuita, quando due nodi attivi su host diversi devono comunicare, dovranno aprire una connessione di rete, trasferire i dati opportunamente formattati e infine chiudere la connessione. L’implementazione di queste operazioni è tipicamente complessa e alle volte può anche richiedere più tempo rispetto all’implementazione della logica applicativa vera e propria. Peraltro tali operazioni sono sostanzialmente indipendenti dall’applicazione che le attiva e possono quindi essere implementate da un middleware riutilizzabile da tutte le applicazioni che hanno l’esigenza di trasferire dati. Ossia ogni applicazione non deve realizzare ex-novo la propria soluzione di comunicazione ma può riusare la soluzione fornita dal middleware, che sta appunto nel middle fra applicazione e strati di basso livello (sistema operativo, driver di rete, hardware). La genericità e la trasversalità rispetto a vari domini applicativi suggeriscono il nome di approccio “orizzontale” in contrapposizione allo sviluppo “verticale” di una soluzione ad-hoc per uno specifico dominio applicativo come evidenziato in Figure 2. Applicazioni Middleware OS / HW Figure 2. Approccio "verticale" (a sinistra) e "orizzontale" (a destra) Da un middleware per applicazioni basate sul modello peer-to-peer ci si può aspettare ad esempio il supporto alla comunicazione simmetrica tra i peer, al discovery dei peer e alla sicurezza (autenticazione dei peer, comunicazioni sicure). Da un middleware per applicazioni basate sul paradigma degli agenti in aggiunta ci si può aspettare ad esempio il supporto alla gestione del ciclo di vita (attivazione/terminazione degli agenti), all’esecuzione di interazioni complesse come aste e negoziazioni e alla gestione della semantica e del significato dei messaggi. 2.4 La tecnologia Java La tecnologia Java ha rappresentato in questi anni una vera e propria rivoluzione nel mondo dell’Information Technology grazie alle feature avanzate e altamente orientate alla programmazione ad oggetti del suo linguaggio di programmazione, ma soprattutto alle sue caratteristiche di portabilità su hardware e sistemi operativi diversi. Considerate le differenze tra i device esistenti, la tecnologia Java è oggi suddivisa in quattro edizioni con diversi livelli di funzionalità supportate e requirements sulle risorse del device (Figure 3). • Java 2 Enterprise Edition (J2EE) – per ambienti server e applicazioni business • Java 2 Standard Edition (J2SE) – per ambienti desktop computer • Java 2 Micro Edition (J2ME) – per device portatili e suddivisa a sua volta in due configurazioni − CDC (profilo Personal Java) per PDA, set top boxes… − CLDC (profilo MIDP) per telefoni cellulari • Java card – per ambiente SIM/smart-card. DT vers. 1 RISERVATEZZA: Pubblico Pagina 6 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper Figure 3. La tecnologia Java 3 Che cos’è JADE? JADE [1] è un middleware sviluppato da TILAB per la realizzazione di applicazioni distribuite ad agenti con architettura di comunicazione peer-to-peer. L’intelligenza, l’iniziativa, l’informazione, le risorse ed il controllo possono essere completamente distribuiti sia su terminali mobili sia sulla rete fissa e l’ambiente può evolvere dinamicamente nel tempo con peer, che in JADE sono denominati appunto ‘agenti’, che nascono, appaiono e scompaiono nel sistema secondo le possibilità e necessità del contesto applicativo ed in modo pressoché trasparente al programmatore di applicazioni. La comunicazione fra peer, siano essi sulla rete mobile o su quella fissa, è completamente simmetrica ed attivabile con iniziativa di qualunque parte. JADE è interamente realizzato in linguaggio Java e alla base del suo sviluppo sono i seguenti principi fondamentali: • Interoperabilità – JADE è conforme alle specifiche dello standard FIPA (2.2.1). Di conseguenza un agente JADE può interoperare anche con peer che non usano il run-time di JADE. • Uniformità e portabilità - JADE fornisce alle applicazioni un insieme di API indipendente sia dallo strato di rete sia dalla versione di JVM. In particolare, l’ambiente run-time fornisce le stesse API sia per ambiente J2EE, per J2SE, e J2ME. In linea teorica, il programmatore potrebbe decidere al deployment-time l’ambiente Java di esecuzione. • Semplicità d’uso - La complessità del middle-ware viene nascosta al programmatore fornendo alle applicazioni API molto semplici da usare. DT vers. 1 RISERVATEZZA: Pubblico Pagina 7 di 14 TELECOM LA B ITALIA Vers: Cod.: DPC 2002.XYZ 1.0 Data: 27.03.2003 Titolo: JADE White Paper • Filosofia pay-as-you-go -. Il programmatore non è obbligato ad usare tutte le funzionalità offerte da JADE e queste, se non usate, non aggiungono overhead computazionale, né complessità di utilizzo. 3.1 Modello architetturale JADE include sia le librerie di classi Java per la realizzazione degli agenti sia l’ambiente runtime che fornisce i servizi di base descritti in 3.2 e che deve essere attivo su un device affinché sia possibile eseguire uno o più agenti su quel device. Ogni istanza del run-time di JADE è detta container (“contenitore” di agenti) e l’insieme di tutti i container è detto piattaforma e costituisce uno strato omogeneo che nasconde completamente agli agenti (ovvero alle applicazioni) la complessità e l’eterogeneità degli strati sottostanti (hardware, sistemi operativi, tipi di rete, JVM). Come evidenziato in Figure 4, JADE è compatibile con l’ambiente J2ME CLDC/MIDP1.0, ed è già stato testato con prove in campo eseguite su rete GPRS per diversi terminali commerciali, tra cui: Nokia 3650, Motorola Accompli008, Siemens SX45, PalmVx, Compaq iPaq, Psion5MX, HP Jornada 560. L’occupazione in memoria della libreria JADE in ambiente MIDP è di circa 100 KB, ma può ridursi fino all’ordine di 50 KB utilizzando la tecnica del ROMizing, ossia compilando JADE con la Java Virtual Machine stessa. La ridotta occupazione in termini di memoria ne consente l’installazione su praticamente tutti i telefoni cellulari purchè java-enabled. La versatilità di JADE è tale che non solo esso è stato integrato in ambienti con risorse limitate come i terminali mobili, ma anche in architetture complesse come .NET o J2EE [4] dove JADE diventa un servizio per eseguire applicazioni multiparty e pro-attive. Applicazione distribuita costituita da un insieme di agenti JADE LAYER Container Container Container Container JA D E JAV A V M J2EE J2S E In te rn e t LAYER PersonalJava C L D C W ire le s s e n v iro n m e n t Figure 4. L’architettura di JADE 3.2 Modello funzionale Dal punto di vista funzionale, JADE fornisce i servizi di base necessari alle applicazioni distribuite peer-to-peer in ambiente fisso e mobile. JADE permette ad ogni agente di scoprire (discover) dinamicamente altri agenti e comunicare con essi in modalità peer-to-peer. Dal punto di DT vers. 1 RISERVATEZZA: Pubblico Pagina 8 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper vista dell’applicazione, ogni agente è identificato da un nome e fornisce un insieme di servizi. Esso può registrare e modificare i propri servizi e/o cercare agenti che ne forniscano altri, gestire il proprio ciclo di vita e, soprattutto, comunicare con tutti gli altri peer. La comunicazione tra gli agenti si basa sullo scambio asincrono di messaggi, un modello di comunicazione ormai universalmente accettato per comunicazioni distribuite e loosely-coupled1, ossia fra entità eterogenee e non accoppiate. Per comunicare, un agente invia semplicemente un messaggio ad una destinazione. Non c’è alcuna dipendenza temporale fra i due in quanto mittente e destinatario potrebbero anche non essere disponibili nello stesso istante; addirittura il destinatario potrebbe anche non esistere, o non esistere ancora, o potrebbe essere non direttamente noto al mittente (es. questo messaggio è per tutti gli agenti interessati al tema “calcio”). Il destinatario può quindi non saper nulla circa il mittente né il mittente circa il destinatario. Questa modalità non va a discapito della sicurezza in quanto, per le applicazioni che lo richiedono, JADE fornisce strumenti di autenticazione e verifica dei ‘diritti’ dei singoli agenti. Quando necessario, l’applicazione ha quindi la possibilità di verificare l’identità del mittente di un messaggio e inibire le azioni per cui esso non è abilitato (es. un agente può essere abilitato a ricevere messaggi dall’agente del capo ma non a trasmetterne). Tutti i messaggi scambiati fra gli agenti sono incapsulati in un envelope che contiene solo le informazioni necessarie al livello di trasporto e che permette, ad esempio, di cifrare separatamente il contenuto del messaggio. La struttura dati del messaggio è conforme al linguaggio ACL definito da FIPA [2] e permette di rappresentare informazioni di supporto all’interazione, quali timeout per le risposte, variabili di contesto e, soprattutto, permette di riferire a conversazioni parallele in corso. Il supporto alla conversazione è una funzionalità importante di JADE che fornisce alle applicazioni scheletri di pattern tipici di interazione, associati a task specifici, quali la negoziazione, le aste e la delega di task. Usando questi scheletri (ossia classi astratte Java), il programmatore viene esulato dal gestire sincronizzazioni, timeout, condizioni di eccezione e, in generale, tutto quanto non strettamente connesso alla normale logica applicativa. Per aumentare la scalabilità o per ambienti a risorse vincolate, JADE offre l’opportunità di parallelizzare diversi task, eseguendoli all’interno di uno stesso thread. Diversi task elementari, quali ad esempio la comunicazione tra agenti, possono poi essere combinati tra loro per realizzare task più complessi, che vengono così strutturati come macchine a stati finiti concorrenti. In ambiente J2SE e PersonalJava, JADE fornisce inoltre la capacità di mobilità del codice e dello stato di esecuzione. Un agente può cioè interrompere la propria esecuzione su un host, migrare su un host remoto e riprendere l’esecuzione dallo stesso punto dal quale era stata interrotta. Questa funzionalità consente ad esempio di distribuire al runtime il carico computazionale movendo agenti su macchine più scariche in modo del tutto trasparente alle applicazioni. La piattaforma include anche un servizio di naming e di pagine gialle distribuite e federabili in modo, ad esempio, da poter gestire domini di servizi di agenti. Un’altra feature molto importante è costituita dalla disponibilità di una ricca suite di strumenti grafici di supporto alle fasi di debugging e di gestione/monitoring delle applicazioni. Utilizzando tali strumenti è possibile ad esempio simulare delle conversazioni remote, ‘sniffare’ conversazioni fra agenti, monitorare i task eseguiti da uno specifico agente e il suo stato nel ciclo di vita. Per quanto riguarda la gestione ed il monitoring delle applicazioni messe in campo è inoltre possibile controllare gli agenti presenti nel sistema, attivare, sospendere, terminare agenti anche su macchine remote, controllare i servizi pubblicati nelle pagine gialle e generare opportuni log. 1 Una nota tecnica di Gartner [3] prevede che il MOM ( Message-Oriented-Middleware) entro il 2004 sarà la forma dominante di middleware di comunicazione per applicazioni mobili il mercato business. DT vers. 1 RISERVATEZZA: Pubblico Pagina 9 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper Queste funzionalità e, soprattutto, la possibilità di attivare (sia da codice che tramite console) in modo remoto, anche su terminali mobili J2ME, dei task, delle conversazioni, ed anche dei peer, rende JADE particolarmente adatto alla esecuzione di applicazioni distribuite, machine-to-machine, multiparty, ad agenti intelligenti pro-attivi. 3.3 JADE in ambiente mobile Come già anticipato, il run-time di JADE può essere eseguito su una vasta gamma di device variabile dai server ai telefoni cellulari con l’unico requisito di supportare Java MIDP1.0. Per far fronte alle limitazioni di memoria e processing power dei device mobili e alle caratteristiche delle reti wireless (GPRS in particolare) in termini di banda, latenza, connettività intermittente e variabilità degli indirizzi IP, ed al contempo per essere efficiente quando eseguito su host nella rete fissa, JADE è configurabile in modo da adattarsi alle caratteristiche dell’ambiente di deployment. L’architettura di JADE infatti è completamente modulare e attivando alcuni moduli piuttosto che altri è possibile di volta in volta far fronte a requisiti diversi in termini di connettività, capacità di memoria e capacità elaborativa. In particolare, un modulo denominato LEAP consente di ottimizzare i meccanismi di comunicazione per device con risorse limitate su reti wireless. Attivando tale modulo un container JADE viene “splittato” come rappresentato in Figure 5: un front-end effettivamente attivo sul terminale mobile e un back-end attivo nella rete fissa. Un elemento architetturale, detto mediator, deve essere preventivamente attivato ed ha il compito di istanziare e mantenere i back-end (che sono sostanzialmente delle entry nel mediator stesso). Per far fronte a problemi di carico è possibile mettere in campo vari mediator ciascuno dei quali può contenere vari back-end. Ogni front-end è collegato al relativo back-end mediante una connessione permanente. È importante far notare che il fatto che un agente sia in esecuzione su un container normale o sul front-end di un container splittato è del tutto trasparente per l’agente stesso in quanto le funzionalità offerte e le API per accedervi non cambiano. • • • • • L’approccio descritto presenta numerosi vantaggi: Parte delle funzionalità del container sono delegate al back-end e ciò consente di rendere il frontend estremamente lightweight in termini di memoria e capacià di processing richieste. Il back-end maschera agli altri container (siano essi normali o “splittati”) l’effettivo indirizzo IP assegnato al device wireless. Ciò consente di nascondere al resto della piattaforma un eventuale cambio di indirizzo. Il front-end è in grado di riconoscere una caduta della connessione col back-end (dovuta ad esempio all’assenza di campo) e di riattivarla automaticamente. Sia il front-end sia il back-end implementano un meccanismo di store-and-forward per cui i messaggi che non possono essere trasmessi a causa di una temporanea disconnessione vengono bufferizzati e consegnati non appena la connessione viene ristabilita. Alcune informazioni che i container si scambiano (ad esempio per reperire il container sul quale si trova l’agente destinatario di un messaggio) sono gestite unicamente dal back-end. Questo approccio, unitamente all’utilizzo di una codifica bit-efficient delle comunicazioni tra front-end e back-end, consente di ottimizzare l’uso della risorsa radio. DT vers. 1 RISERVATEZZA: Pubblico Pagina 10 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper J A D EA P I s “ S p l i t c onta i ne r” FrontEnd B a c k End J A D EA P I s C onta i ne r B a c k End M e di a tor c o n n e s s io n e b id ire z io n a le p e rm a n e n te FrontEnd Figure 5. Architettura di JADE per l'ambiente mobile 3.4 Dettagli tecnici La tabella seguente riassume le principali caratteristiche tecniche di JADE. Nome JADE – Java Agent Development Framework Produttore TILAB Sito Web http://jade.cselt.it/ Linguaggio Java, piattaforme J2EE, J2SE, J2ME CLDC/MIDP1.0 Disponibilità Open Source con licenza LGPL. TILAB può rilasciare licenze commerciali per scopi specifici. Caratteristiche tecnico-funzionali Applicazioni distribuite multi-party con comunicazione peer-to-peer. Gestione ciclo di vita degli agent. Pagine bianche e pagine gialle con possibilità di creare grafi di federazione al run-time. Strumenti grafici di supporto alle fasi di debugging, monitoring e gestione Supporto alla migrazione del codice e dello stato dell’agente Supporto per protocolli di interazione complessi (es. contract-net) Supporto per gestione del contenuto dei messaggi, incluso XML e RDF Supporto all’integrazione in pagine JSP attraverso una tag library Conforme allo standard FIPA DT vers. 1 RISERVATEZZA: Pubblico Pagina 11 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper Supporto alla sicurezza a livello di applicazione (attualmente solo in ambiente J2SE) Protocolli di trasporto selezionabili anche al run-time, attualmente disponibili Java-RMI, protocollo proprietario JICP, HTTP, IIOP. Ambienti di rete È già stato utilizzato in ambiente di rete BlueTooth, WLAN, GPRS, Internet Terminali Tutti i terminali con pJava o J2ME-MIDP1.0, in particolare già testato su Nokia 3650, Motorola Accompli008, Siemens SX45, PalmVx, Compaq iPaq, Psion5MX, HP Jornada 560. Tabella 1 - Sommario caratteristiche di JADE 4 La comunità di JADE Sebbene il copyright di JADE sia oggi interamente posseduto da TILAB, al suo sviluppo contribuisce una comunità in continua crescita imperniata su due componenti principali: il progetto open source e il board di controllo. 4.1.1 Il progetto open source Tutti i sorgenti di JADE sono distribuiti in open source con licenza LGPL [5]. La licenza LGPL permette il pieno sfruttamento di JADE, anche in ambito di business, con il vincolo che ogni modifica ed ogni lavoro derivativo di JADE deve essere restituita alla comunità con la stessa licenza. Non esistono invece vincoli restrittivi sulle applicazioni e/o ogni altro tipo di software che usa JADE. TILAB, in quanto originatore del progetto, ha il diritto esclusivo di rilasciare licenze commerciali su JADE. Intorno a questo progetto si è formata una comunità di utilizzatori molto numerosa, che conta più di mille iscritti (molti dei quali sono contact point di gruppi interni ad un’azienda o ad un’università) e ha fatto registrare picchi di centinaia di download giornalieri. Gli iscritti provengono in parte dall’ambiente accademico (JADE è infatti largamente utilizzato a scopi didattici), da centri R&D di leader mondiali come Motorola, HP, Siemens e Rockwell Automation o da piccole start-up, quali Mobile Tribe e Acklin, che puntano su JADE come tecnologia abilitante per lo sviluppo del loro business. In particolare Motorola e Siemens hanno contribuito, nell’ambito di un progetto europeo IST denominato Leap [6], agli sviluppi che hanno consentito il porting di JADE in ambiente J2ME/MIDP. Il progetto è supportato da un sito web dal quale è possibile downloadare il codice, reperire la documentazione segnalare eventuali problemi e trovare link utili oltre che da due mailing-list per gli sviluppatori che fungono da forum di discussione. 4.1.2 Il Board di controllo Allo scopo di diffonderne l’uso il più possibile in particolare in ambiente telco, lo sviluppo di JADE (inizialmente gestito privatamente da TILAB) è recentemente passato sotto il controllo di un board aperto. Il board è oggi costituito da TILAB (presidente) e da Motorola, ma altri key players del settore e principalmente manifatturiere e operatori hanno manifestato il proprio interesse ad entrare. 5 Perché usare JADE? Nel seguito vengono analizzati i punti di forza di JADE. Alcuni di questi, quali la realizzazione di task complessi o la pro-attività degli agenti, possono riflettersi in un vantaggio importante per alcuni ambiti applicativi particolari; altri, quali l’efficienza nello sviluppo di applicazioni, sono invece di validità più generale. DT vers. 1 RISERVATEZZA: Pubblico Pagina 12 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper 5.1 Realizzazione di task complessi La comunicazione peer-to-peer abilita lo sviluppo di applicazioni in cui sia richiesta la realizzazione di compiti lunghi e complessi, quali la contrattazione, il coordinamento tra numerosi agenti e il reperimento di informazioni distribuite. L’utente di un’applicazione sviluppata su JADE può fornire all’agente i criteri secondo cui svolgere un determinato task e quindi delegarlo completamente o in parte. Molti ambiti applicativi possono trarre vantaggio da questa potenzialità, includendo i settori più disparati, come ad esempio: l’approvvigionamento delle aziende (supply chain management), pronto intervento (per la gestione di un’emergenza), trasporti (fleet management), aste, turismo (realizzazione di pacchetti personalizzati), solo per citarne alcuni. 5.2 Pro-attività Gli agenti di JADE sono in grado di comunicare con altri agenti, senza che questo comporti alcun intervento umano. Questa capacità, che viene generalmente identificata come proattività, rende JADE l’ambiente naturale per lo sviluppo di applicazioni machine-to-machine (m2m). Gli esempi di applicazioni che si potrebbero portare al riguardo sono numerosissimi, includendo ad esempio l’automazione industriale, il controllo del traffico e la gestione di reti di comunicazioni. 5.3 Efficienza delle applicazioni multi-party La applicazioni multi-party realizzate in architettura peer-to-peer sono intrinsecamente più efficienti di quelle realizzate in architettura client-server, in quanto i server possono rappresentare un collo di bottiglia e un punto critico per l’erogazione del servizio: un crash del server o l’attacco di un virus possono infatti bloccare anche per giorni un servizio. Inoltre JADE è particolarmente efficiente per quanto riguarda i tempi di comunicazione tra agenti. Inoltre il fatto che l’intelligenza, l’informazione e l’iniziativa siano distribuite consente la realizzazione di processi in cui l’ownership sia distribuita tra i peer, distribuendo in modo opportuno le azioni a cui ciascun agente è abilitato. Infine JADE consente di introdurre elementi di personalizzazione per cui il comportamento di ciascun agente può essere basato su un modello utente che risiede sul terminale e che può essere aggiornato dinamicamente sulla base delle indicazioni fornite dall’utente o grazie alla capacità di apprendimento automatico degli agenti. Gli ambiti applicativi in cui possono essere utilizzati servizi multi-party sono molteplici, tra cui: giochi multiplayer persistenti, car pooling, taxi collettivo, knowledge management, coordinamento della forza lavoro e vari tipi di organizer (es. meeting organizer, per concordare data e luogo di una riunione, evening organizer per accordarsi con gli amici per le attività della serata). 5.4 Interoperabilità JADE è disponibile per tutte le versioni di JAVA, da J2EE a J2ME, abilitando il ‘porting’ di applicazioni tra i vari ambienti e la comunicazione bidirezionale tra agenti che risiedono su reti di tipo diverso, siano essi fisse o mobili. Questo consente, ad esempio, all’agente che risiede su un server di rete (inteso in questo contesto come uno dei ‘peer’) di reperire informazioni su un cellulare. JADE non solo garantisce l’interoperabilità tra reti e terminali eterogenei, ma anche tra piattaforme ad agenti diverse, purchè conformi allo standard FIPA. A questo proposito, TILAB ha partecipato a bake-off organizzati da FIPA in cui è stata verificata l’interoperabilità con altri middleware. 5.5 Efficienza nello sviluppo delle applicazioni Il middleware è stato progettato in modo da semplificare tutti gli aspetti di comunicazione e trasporto messaggi, rendendo trasparenti allo sviluppatore i dettagli di più basso livello e DT vers. 1 RISERVATEZZA: Pubblico Pagina 13 di 14 TELECOM LA B ITALIA Cod.: DPC 2002.XYZ Vers: 1.0 Data: 27.03.2003 Titolo: JADE White Paper consentendogli di concentrarsi solo sulla logica dell’applicazione. Questo si riflette in una maggiore efficienza nello sviluppo delle applicazioni: Siemens ha stimato che l’utilizzo di JADE riduce mediamente i tempi del 30% rispetto allo sviluppo in ambiente JAVA. 5.6 Riduzione dei costi La riduzione dei tempi di sviluppo delle applicazioni potrebbe determinare una riduzione dei costi delle applicazioni stesse. Il risparmio maggiore è però relativo all’acquisto e manutenzione dei server: il loro utilizzo potrebbe essere infatti limitato a qualche funzione specifica (es. mediator e localizzazione), delegando i peer allo svolgimento di molte delle funzioni tradizionalmente assegnate a server potenti e costosi. In alcuni casi si può addirittura ipotizzare la realizzazione di servizi in architetture serverless. 6 Riferimenti [1] JADE Web Site, http://jade.cselt.it [2] FIPA Web Site, http://www.fipa.org [3] M. Pezzini - Do MOM, ORBs and Data Access Middleware Suit Mobile? Gartner Research Note Number: T-14-3936, 20 September 2001 [4] BlueJADE, http://sourceforge.net/projects/bluejade [5] Licenza LGPL, http://www.opensource.org/licenses/lgpl-license.php [6] LEAP Web Site, http://leap.crm-paris.com/ DT vers. 1 RISERVATEZZA: Pubblico Pagina 14 di 14