Java:Verifier
Da Wikipedia, l'enciclopedia libera.
Introduzione
Un programma Java viene compilato in un linguaggio indipendente dalla piattaforma che lo eseguirà: il Java byte code. Quando lanciamo un programma Java, prima che venga effettivamente eseguito, la Java Virtual Machine verifica il byte code. Questa fase di verifica, compiuta dal Java Verifier, assicura che il byte code (che potrebbe anche non essere stato creato da un compilatore Java) rispetti le regole. Il byte code, infatti, potrebbe essere creato da un compilatore ostile che assembla il codice in modo da violare le regole della JVM.
Il processo di verifica
La maggior parte delle implementazioni della Java Virtual Machine (specialmente quelle piu utilizzate in ambito commerciale) dividono il procedimento di verifica in due parti: un controllo interno che verifica tutto ciò che può essere controllato semplicemente guardando al .class file stesso, ed un controllo a runtime che conferma l'esistenza e la compatibilità delle classi, variabili e metodi a cui il .class fa riferimento.
Una volta che il byte code è stato verificato dal Verifier, le seguenti proprietà sono garantite:
- Il formato del .class file è corretto
- Gli stack non causeranno un errore di overflow o underflow
- Tutte le istruzioni byte code hanno i parametri del tipo corretto
- Non avviene nessuna conversione dei dati (cast) illegale
- Gli specificatori di accesso (private, public, protected, default) sono legali
Riferimenti
- Securing Java: the Verifier (http://www.securingjava.com/chapter-two/chapter-two-6.html)

