La rivoluzione introdotta dall'avvento del linguaggio Java con il suo slogan "Write Once, Run Everywhere" ("Scrivi una volta, esegui dovunque"), si era limitata fino a qualche anno fa al mondo dei PC (grazie a J2SE) e a quello delle applicazioni server (con J2EE).
L'esplosione del mercato dei terminali mobili, PDA e telefoni cellulari, ha fatto sì che Sun si spingesse anche su queste piattaforme con la tecnologia denominata J2ME ovvero Java Micro Edition.
Configuration e Profile
La sfida tecnologica è stata quella di definire un set di API, da mettere a disposizione degli sviluppatori, che soddisfacesse le minime disponibilità di oggetti che:
- hanno limitate capacità di elaborazione;
- hanno limitate capacità di memoria;
- hanno schermi di ridotte dimensioni (a volte non a colori) e con poca risoluzione.
L'offerta del mercato è inoltre variegata e presenta terminali molto diversi in termini di funzionalità e caratteristiche tecniche (si pensi, ad esempio, alle differenza di potenza di calcolo e di display tra un telefono cellulare e un palmare).
Per supportare una così vasta gamma di terminali, Sun ha introdotto il concetto di Configuration che può identificarsi con la definizione delle librerie base (core) e delle caratteristiche di una Java Virtual Machine (JVM) che risiede in un sistema con determinate potenzialità.
In particolare sono definite due diverse Configuration:
- Connected Device Configuration (CDC) che nella versione attuale (la 1.1) è presente in terminali con le seguenti caratteristiche minime:
- 512 kbyte di memoria RAM disponibile
- 256 kbyte di memoria per il runtime delle applicazioni Java
- Connettività in rete possibilmente continua ed a larga banda
- Connected Limited Device Configuration (CLDC) che nella versione attuale (la 1.1) è presente in terminali con le seguenti caratteristiche minime:
- 192 kb di memoria per eseguire applicazioni Java
- Un processore a 16 o 32 bit
- Basso consumo di energia (normalmente derivante da batterie)
- Connettività in rete (normalmente wireless) con banda limitata e accesso a intermittenza.
Da qui in avanti la nostra attenzione sarà posta sulla CLDC, la cui particolare JVM è stata denominata KVM (K Virtual Machine).
È stato poi necessario rendere ancora più flessibile questa piattaforma introducendo il concetto di Profile che rappresenta l'insieme di librerie che consentono la gestione delle interfacce utente, la cattura e la gestione degli eventi, la memorizzazione persistente, le connessioni e la gestione dei timer su device di una determinata tipologia.
Il Profile che considereremo è il Mobile Information Device Profile (MIDP) giunto alla versione 2.0.
Possiamo considerare in pratica la Configuration come l'insieme delle librerie per la gestione delle operazioni di basso livello; viceversa il Profile è utilizzato per la gestione delle operazione di alto livello.