Fin dalla sua comparsa, l'entusiasmo suscitato da Java riguardava non tanto dalle qualità intrinseche del linguaggio, quanto la possibilità di distribuire su Internet applet sicure che avrebbero garantito l'esecuzione di codice non dannoso per i computer riceventi. La sicurezza è il punto fondamentale per programmatori e utenti e Java a differenza degli altri linguaggi, dove la questione relativa alla protezione entrano in gioco in un secondo momento, in risposta a situazioni di emergenza, i meccanismi di sicurezza sono parte integrante del linguaggio.
In Java esistono tre meccanismi che contribuiscono alla sicurezza:
- le caratteristiche della progettazione del linguaggio;
- meccanismi di controllo dell'accesso alle risorse locali (file, network, memoria...) da parte dei processi Java;
- la firma del codice, che prevede di utilizzare algoritmi crittografici standard per l'autenticazione del codice Java.
La Java virtual machine analizza il codice alla ricerca di puntatori non validi, limiti di array illegali e così via. Parallelemente altri meccanismi tengono sotto controllo la virtual machine.
Quando vengono caricati nella virtual machine, tutti i file di classe vengono sottoposti a una verifica di integrità. In seguito si analizzerà come realizzare un caricatore di classi per capire il processo e il funzionamento della virtual machine. Per una maggiore sicurezza, sia il meccanismo di caricatore di classi standard sia uno personalizzato lavorano con un gestore della sicurezza che controlla quali azioni il codice possa eseguire. Infine si analizzerà il package java.security, che offre una serie di algoritmi crittografici che consentono la firma del codice e l'autenticazione del codice.