MokaByte
Numero 22 - Settembre 1998
|
|||
|
|
||
Giovanni Puliti |
|
||
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. |
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.
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 |