[correva l'anno 2001]

In questo articolo viene spiegato come un servizio Jini può essere realizzato su dispositivi (device) limitati, dal punto di vista della potenza di calcolo e della memoria.
Differenti versioni di Java
Un sistema Jini per funzionare deve avere a disposizione una Java Virtual Machine (JVM) in grado di eseguire le classi Jini. Esistono diverse soluzioni a seconda delle potenzialità del dispositivo, infatti, la piattaforma Java 2 non è distribuita dalla Sun Microsystems in un’unica versione, ma ci sono diverse edizioni (editions), configurazioni (configurations) e profili (profiles).


Figura 1: Nella parte inferiore sono riportate le JVM, che vengono eseguite sopra al sistema operativo del device. La KVM è una virtual machine progettata appositamente per i piccoli device con limitata memoria.

Le tre edizioni più importanti di Java 2 sono Java 2 Enterprise Edition (J2EE), Java 2 Standard Edition (J2SE) e Java 2 Micro Edition (J2ME). Una edizione definisce le classi API che il programmatore può utilizzare, J2SE include un sottoinsieme delle API di J2EE, e J2ME ne ha ancora meno; in realtà non è del tutto vero, perché un’edizione più limitata può avere delle classi specifiche che non sono supportate da un’edizione più estesa. L’edizione più interessante per i device è la J2ME, essendo stata sviluppata appositamente per tali scopi.

Il livello successivo è chiamato configurazione, attualmente ne esistono due tipi per J2ME: Connected Device Configuration (CDC) e Connected Limited Device Configuration (CLDC). Una configurazione specifica una API che il device che supporta tale configurazione deve implementare.

Sun ha anche specificato differenti profili al di sopra del livello di configurazione, un profilo definisce classi supplementari che possono essere usate dal device. Per esempio, se sulla configurazione CDC si vuole utilizzare RMI, bisogna aggiungere il profilo RMI.
Non è possibile eseguire Jini al di sopra della configurazione CLDC perché non si può utilizzare RMI e serialization.

Java 2 Enterprise Edition (J2EE)
Questa edizione è destinata per applicazioni “pesanti”, è perfetta per utilizzare servizi Jini, i servizi possono rispondere a diversi utilizzatori e possono utilizzare caratteristiche avanzate del linguaggio. Non è invece adatta per dispositivi limitati, dal momento che richiede molta memoria.

Java 2 Standard Edition (J2SE)
Questa è la versione standard di Java, destinata per i normali PC. Questa edizione supporta completamente Jini, ma ancora necessita di troppa memoria per essere utilizzata su device limitati.

Java 2 Micro Edition (J2ME)
Questa versione è stata progettata per funzionare su dispositivi con limitate risorse ed esiste nelle due configurazioni viste precedentemente: CDC e CLDC. CLDC è eseguita su KVM, una virtual machine appositamente realizzata per occupare poca memoria, mentre CDC, più potente di CLDC, utilizza la Customer Virtual Machine (CVM).

Jini per funzionare ha bisogna di Java 2, infatti, per esempio, il Lookup necessita del java.rmi.MarshalledObject, che è una caratteristica introdotta per la prima volta in Java 2. Inoltre Jini utilizza alcune classi del package java.security che non sono disponibili in JDK 1.1.x.

Il punto critico nello sviluppo di servizi Jini su device limitati à la JVM, che deve essere abbastanza potente per eseguire le classi Jini.

Soluzioni hardware
Un diverso approccio è di montare un chip in grado di eseguire direttamente in hardware il Java bytecode, alcuni esempi sono:

  • PicoJava: realizzato da Sun Microsystems;
  • Xpresso: progettato da Zuccotto Systems è in grado di integrare BlueTooth, Java e Jini.

Questo approccio alternativo apre nuove possibilità, ma richiede che il dispositivo sia dotato di questo chip.