MokaByte Numero 22 - Settembre 1998
Foto
Jini, il nuovo collante universale  .. 
di 
Giovanni Puliti
Arriva l'ultimo tassello della JavaTechnology, ed il cerchio si chiude

 






 

Sun ha rilasciato le specifiche della nuova rivoluzione  tecnologica della IT: dopo Java arriva  Java2, ovvero il naturale proseguimento e completamento del discorso iniziato qualche anno fa. Adesso è ancora presto per stabilire se le promesse saranno rispettate, ma sulla carta Sun ha in mano qualcosa di veramente grosso. Vediamo perché e di cosa di tratta


L'Antefatto
Un mese fa, in pieno clima vacanziero, mentre mi accingevo a leggere le mie ultime mail prima di partire per le vacanze, ricevo una mail da un mio collaboratore, il quale tutto allarmato mi avverte dell’ennesima rivoluzione tecnologica in casa Sun……
Anche se ero sul punto di partire, non ho potuto resistere  (e chi avrebbe potuto) dall’andare sulla home page del sito Sun per vedere di cosa si trattasse.
Ebbene devo dire che, pur con le poche informazioni di cui al momento si può disporre, sembra che in effetti si tratti di qualcosa di interessante. L’elemento  incriminato si chiama Jini, ed anche se  non rappresenterà effettivamente una rivoluzione tecnologica, probabilmente contribuirà a far fare un notevole passo in avanti al settore della IT.
L’obiettivo principale dichiarato di  Jini è quello di risolvere una serie di problemi legati  ad uno degli aspetti più importanti  della informatica moderna, quella dell’interconnessione di reti locali e di device differenti.
Quello che promette Jini e che in effetti potrebbe rappresentare la soluzione a tutto questo, è una visione ed organizzazione differente di oggetti come computer, device, reti di calcolatori, strumenti dell’informatica di consumo.

Di cosa si tratta
Nel leggere le poche pagine messe a disposizione da Sun, il mio interesse per tale  tecnologia è aumentato ulteriormente quando ho iniziato a capire che Jini non è una nuova trovata pubblicitaria, un ulteriore package da aggiungere al classpath, ma è praticamente il proseguimento ed il completamento del progetto Java stesso, progetto iniziato qualche anno da Gosling e compagni.
Allora fu introdotto un nuovo linguaggio ed una nuova tencologia che fra le sue innumerevoli novità aveva quella di essere rivolta non solo ai computer ma anche al settore dell’elettronica di massa. Ormai dovrebbe essere noto che una macchina fotografica o un telefono cellulare possano includere una JVM e possano essere programmati in modo equivalente a come si fa con un personal computer.
Quello che forse allora era rimasto in sospeso, o  meglio di cui si sentiva la mancanza, era un modo per rendere più omogeneo questo mondo di oggetti interconnettibili fra loro: e infatti relativamente semplice sia scrivere un software per gestire una JavaCard o un altro Java-Device e creare un mondo aperto rivolto a qualsiasi tipo di oggetto, mancano ad oggi gli strumenti che con la stessa semplicità rendano questo mondo realmente autonomo.

Lasciando da parte Java per un momento, dove tale carenza non è molto grave grazie agli strumenti messi a disposizione dal linguaggio, il problema dell’interconnessione di reti e device attualmente rappresenta una delle maggiori problematiche nel settore della gestione e manutenzione.
Quanti di voi hanno perso ore preziose nel cercare di far funzionare un nuovo device inserito nel computer, o di rendere attiva una connessione di rete, o infine di far funzionare in una rete di calcolatori un device nuovo.
Quante volte ci siamo scontrati con il plug and play (presto rinominato plug and pray) constatando le sue limitazioni.
Ebbene proviamo ad immaginare una situazione in cui in un certo circuito (il bus del pc, una rete locale o una struttura composita come una intranet), l’inserimento di un nuovo componente sia immediatamente accolto dalla comunità che ne richiede gentilmente i suoi servizi. Proviamo ad immaginare che il meccanismo di plug e de-plug sia del tutto automatico, e sia sopratutto automatico il processo di riconoscimento (delle funzionalità) e di interfacciamento del nuovo oggetto. SI potrebbe pensare ad esempio ai JavaBeans, in cui incapsulamento ed introspezione automatica, ci permettono di utilizzare oggetti come scatole nere di cui non si conosce il funzionamento e l’implementazione, ma di cui si può ottenere in maniera automatica l’interfaccia.
L’obiettivo di Jini dovrà essere proprio questo, ovvero essere il collante necessario per permettere la convivenza fra oggetti differenti e provvedere  a tutte le operazioni per l’aggiunta di un nuovo elemento e la sua gestione.
Come sempre seguendo la filosofia di Java, il tutto è stato realizzato mantenendo un elevato grado di astrazione, ed è proprio per questo motivo che non viene fatto riferimento ad termini come device o periferiche: il ruolo fondamentale invece è giocato dal concetto di servizio. Data l’eterogeneità della struttura che si può formare, viene a perdere di significato il riferimento all’oggetto specifico collegato alla rete, e contemporaneamente acquista valore pensare a cosa è possibile fare (quali servizi ottenere dalla rete). Il cosa fà piuttosto il chi è: volendo fare della fiolosofia da quattro soldi, se ci si pensa questo è una conferma del fatto che effettivamente non è l’abito che fa il monaco; un antico desiderio della società moderna, ovvero basare il valore di una persona per quello che è in grado di fare, piuttosto di come appare ai nostri occhi.
Vediamo quindi di entrare un po’ più dello specifico di Jini cercando di capire cosa esso sia e come funzioni. Premetto che tutte le informazioni che sono riuscito a reperire sono relative alla documentazione che Sun ha rilasciato, dato che per il momento non è possibile utilizzare nessun software di prova.

 

Le origini di Jini
Il tutto nasce da una idea di Bill Joy (al solito), che nel periodo precedente al 1994 avanzò una proposta di un nuovo progetto che doveva basarsi essenzialmente su tre punti
Un linguaggio eseguibile su ogni piattaforma. Una Virtual Machine strettamente legata a tale linguaggio e che ne endeva possibile l’esecuzione multipiattaforma.  Un sistema fortemente orientato alla rete che permettesse a VM distribuite fra loro di collaborare ed interagire

La risposta a tutto questo in parte è stata data nel 1995 con il linguaggio Java, che in effetti ricalca i primi due punti. Il framework necessario per l’interazione fra VM distribuite (il punto 3), è stato portato avanti come progetto di ricerca da Sun ed ha portato alla realizzazione di Jini. E’ per questo che esso può essere considerato il normale completamento del linguaggio e della tecnologia.

Tecnologia di Jini
La tecnologia di Jini può essere suddivisa in due sezioni separate fra loro, una dedicata all’infrastruttura vera e propria del sistema, ed una orientata alla programmazione.
L’infrastruttura di Jini ha il compito di gestire la registrazione di un nuovo componente nella rete e di come questo può essere trovato.
  


Figura 1:la nuova configurazione della tecnologia Java con l'introduzione di Jini 
A tale scopo si possono identificare alcuni elementi: il primo è detto Discovery & Join,  il cui scopo è quello di gestire e di risolvere tutte le problematiche legate alla registrazione di un nuovo componente alla rete:  in particolare al momento della prima registrazione, quando cioé la rete non ha conoscenza precedente delle caratteristiche dell’oggetto. 
Il secondo elemento fondamentale è detto Lookup, che può essre pensato come una specie di bollettino informativo di tutti i servizi disponibili in rete. Ogni volta che un nuovo device viene collegato alla rete, la coppia  Discovery & Join che lo ha trovato, provvede ad inviare un messaggio (contenente l’interfaccia dell’oggetto stesso) al Lookup: questo a sua volta invia indietro al nuovo componente una interfaccia con la quale il componente deve presentarsi alla rete esponendo i suoi servizi. 
 A questo punto l’oggetto ha scoperto la rete, ed inizia a scaricare verso il Lookup tutte le sue caratteristiche in modo che possano essere utilizzate i suoi servizi.
Il Lookup in particolare contiene non solo tutte le informazioni relative ai servizi disponibili in ogni istante in rete, ma anche la serie di informazioni, software e driver necessari per utilizzare tali servizi (cioé per manovrare i rispettivi device).
Esempio tipico (e solitamente causa di complicazioni piuttosto fastidiose in rete) è la gestione di una stampante condivisa. Quando la stampante si registra presso il Lookup, provvede ad inviare non solo la sua interfaccia (le caratteristiche della stampante stessa), ma anche il driver necessario per permettere ad una applicazione qualsiasi di utilizzare la stampante.
Quando ad esempio un word processor necessiterà di tale stampante, eseguendo un semplice download dal Lookup, sarà in grado di utilizzare la stampante senza la necessità di nessuna installazione preventiva.
Al momento della registrazione presso il lookup da parte della stampante essa potrà anche inviare informazioni (non indispensabili ma utili) relative alle sue caratteristiche, oppure software di corredo (help, wizard etc.)  in modo che il client possa lavorare in modo del tutto automatico.

Leasing
Il concetto di leasing in Jini è del tutto simile a quello al quale siamo abituati a pensare nella vita di tutti i giorni: se dobbiamo stipulare un contratto di questo tipo per l’utilizzazione di un certo bene, si procede in  genere alla contrattazione di tempi e costi,  e poi alla stipulazione del contratto.
In Jini esiste un meccanismo del tutto simile in cui oggetti negoziano l’utilizzazione di determinati altri oggetti: ad esempio quando un oggetto si registra presso la rete, tale registrazione viene effettuata per un determinato periodo di tempo. Prima dello scadere del tempo massimo, la negoziazione deve essere effettuata nuovamente.
Se un oggetto viene scollegato dalla rete, il contratto scade automaticamente, e l’oggetto sparisce dalla lista degli oggetti disponibili in Lookup: questo sistema permette  in modo molto semplice ed automatico il cosiddetto garbage collecting distribuito.
In genere si è abituati ad immaginare tale meccanismo applicato alla gestione locale della memoria,  ma si deve tener presente sia che Java è un linguaggio fortemente orientato alla computazione distribuita, sia che segue il modello ad oggetti, secondo il quale non vi è molta differenza dal punto di vista logico fra un vettore ed una stampante.

Transazioni
Come si è potuto vedere fino ad adesso uno degli aspetti fondamentali della architettura gestita da Jini è il continuo scambio di messaggi. Tale meccanismo si basa quindi su una sicura gestione delle transazioni (in maniera simile alle transazioni che troviamo in un sistema di database distribuito).
Una transazione in questo caso è costituta da una serie di eventi, ed è da considerarsi valida solo se se tutti sono arrivati al destinatario. Se la transazione viene interrotta a metà, deve essere riconfigurato lo stato precedente all’inizio della transazione stessa.
In Jini il concetto di transazione è etremamente importante, per cui una serie di API sono state appositamente scritte per la gestione di questo aspetto.
Tutte le volte che un oggetto inizia una transazione, un apposito Transaction Manager (TM) viene allocato: ogni ulteriore oggetto coinvolto nella transazione viene registrato presso il gestore  della transazione e da esso gestito. Questo permette di interrompere la transazione ed effettuare così un rollbak globale di rete, nel caso in cui uno solo degli oggetti conivolti  invii  un messaggio di errore al TM.
 

Conclusione
Anche se non ci siamo addentrati nello specifico e non sono stati affrontati i dettagli tecnici di questa nuova invenzione (dati i pochi dati in mio possesso non ho ritenuto opportuno procedere oltre),  è chiaro fin d’ora che Jini possa diventare una cosa molto importante. Da un lato infatti abbiamo una tecnologia  nuova volta a risolvere alcuni dei maggiori problemi legati alla gestione di sistemi di rete eterogenei (più una rete  possa essere pensata composta da elementi differenti fra loro e più Jini si troverà a suo agio, almeno in teoria), dall’altro abbiamo finalmente a disposizione quello che può essere considerato il naturale completamento della saga Java.
Il linguaggio e la tecnologia sono adesso pienamente legittimati, e non è più così strambo pensare di seguire strade esotiche per lo sviluppo di applicazioni o progetti.
Ovviamente tutte queste considerazioni sono basate solo su quello che si può dedurre dai pochi documenti in mio possesso al momento della stesura dell’articolo.
Se le promesse fatte da Sun saranno  poi  mantenute o se tutto si trasformerà in un niente di fatto, non possiamo ovviamente saperlo adesso, ma queste sono considerazioni piuttosto scontate, per cui non possiamo far altro che attendere gli sviluppi futuri, commentando quello che abbiamo fra le mani adesso.
 

Giovanni Puliti

Per maggiori informazioni


 
 
 
 

MokaByte Web  1998 - www.mokabyte.it 
MokaByte ricerca nuovi collaboratori. Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it