L’interfaccia di programmazione dell’applicazione Java Card™ è una piattaforma progettata per creare applicazioni per smart card e dispositivi smart card. Oltre alla programmazione relativa alle smart card, Java Card™ è particolarmente adatta per la creazione di applicazioni su un’ampia gamma di dispositivi con ingombro ridotto e poca memoria, come alcuni tipi di telefoni cellulari. Queste piccole applicazioni funzionano in modo molto simile ai programmi Java® più grandi; una macchina virtuale stabilisce un ambiente di base e quindi il codice Java® viene eseguito al suo interno. L’unica vera differenza tra Java® standard e un sistema Java Card™ è la dimensione e una manciata di funzionalità che devono ancora essere implementate.
Java Card™ è stata originariamente lanciata sul mercato nel 1996. A quel tempo, l’unico utilizzo della tecnologia era nei sistemi basati su smart card. Col passare del tempo, il numero di piccole piattaforme di calcolo è aumentato. Ora questo sistema viene utilizzato su un’ampia gamma di dispositivi che operano con limitazioni della piattaforma simili a un sistema di smart card.
Il linguaggio è adatto per un ambiente con memoria e potenza di elaborazione molto limitate. La maggior parte dei sistemi di smart card utilizza un ambiente fisso; al di fuori di apparecchiature speciali, è molto difficile inserire o togliere un programma dalla scheda. Questi ambienti sono spesso estremamente limitati in termini di risorse disponibili, il che rende il linguaggio perfetto.
La posizione secondaria più comune per Java Card™ è sui cellulari. La maggior parte degli smartphone moderni ha effettivamente memoria e potenza sufficienti per utilizzare piattaforme Java® più avanzate, quindi i sistemi di carte sono spesso limitati a smartphone o dumbphone più vecchi. Una piccola selezione di altri dispositivi utilizza la tecnologia Java Card™, principalmente quelli che utilizzano schede aggiuntive o schede di memoria per la programmazione aggiuntiva.
La maggior parte dei sistemi Java® funziona allo stesso modo, indipendentemente dalla piattaforma prevista o dalle dimensioni complessive. Una macchina virtuale crea un ambiente emulato sul dispositivo di destinazione. Il programma Java® viene eseguito all’interno di tale ambiente con poca considerazione per l’hardware effettivo del sistema. L’installazione della macchina virtuale è diversa su ogni piattaforma, ma i meccanismi interni non lo sono. Di conseguenza, è possibile eseguire la stessa applicazione su un’ampia gamma di computer o dispositivi senza alcuna conversione.
Gli obiettivi principali del linguaggio Java Card™ sono la compatibilità e la sicurezza. Questa lingua è progettata per essere compatibile con quasi tutti i dispositivi che desiderano utilizzarla. Questa operazione viene generalmente eseguita tramite macchine virtuali codificate individualmente. Una volta che la macchina virtuale per l’hardware è operativa, le applicazioni sono relativamente facili da trasferire.
Il secondo obiettivo principale è creare un programma e una piattaforma sicuri. Poiché i sistemi intelligenti contengono spesso informazioni sensibili, il linguaggio dispone di un’ampia gamma di metodi per salvaguardare tali informazioni mentre sono in uso. Questi metodi vanno dai firewall applicativi interni a più forme di crittografia.