Java/La macchina virtuale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m sposto paragrafo
incollo testo da Java/Introduzione. vedi talk page per la cronologia della pagina originale
Riga 12:
 
== Il linguaggio Java ==
; Caratteristiche di progettazione
Java è stato progettato partendo da zero, nessuna compatibilità con il passato doveva essere rispettata: questo ha permesso ai progettisti di fare un linguaggio che rispondesse alle più moderne esigenze di programmazione.
 
Progettato per creare software altamente '''affidabile''', fornisce ampi controlli in fase di compilazione, seguito da ulteriori controlli in fase di esecuzione. Il linguaggio rappresenta una guida ai programmatori verso l’abitudine a produrre programmi affidabili: gestione automatica della memoria, nessun puntatore da gestire, nessun codice "oscuro".
 
Java è nato per operare in ambiente distribuito, ciò significa che l’argomento '''sicurezza''' e di grande importanza. È stata dedicata particolare attenzione alla sicurezza sia a livello di linguaggio sia a livello di sistema run-time. Java permette di costruire applicazioni che possono difficilmente essere invase da altre applicazioni.
 
L’architettura neutrale di Java è solo una parte di un sistema veramente portabile. Java fa fare alla portabilità un passo avanti, precisando e specificando la grandezza dei tipi di dati e il comportamento degli operatori aritmetici, i programmi sono gli stessi su ogni piattaforma, non ci sono incompatibilità di tipi di dati attraverso diverse architetture hardware e software.
 
Le '''prestazioni''' sono sempre da considerare: Java ottiene ottime prestazioni adottando uno schema attraverso il quale l’interprete può eseguire i bytecode alla massima velocità senza necessariamente controllare l’ambiente run-time, anche grazie a tecnologie come il Just In Time Compiler. Una applicazione automatica, il ''garbage collector'', eseguita in background si occupa inoltre di liberare periodicamente la memoria inutilizzata dai processi e quindi assicura, con elevata probabilità, che la memoria richiesta dalle applicazioni sia sempre disponibile.
 
La capacità '''''multithreading''''' di Java fornisce i mezzi per costruire applicazioni con più attività concorrenti: Java supporta il multithreading a livello di linguaggio con aggiunta di sofisticate primitive di sincronizzazione; inoltre il sistema Java è stato scritto per essere sicuro nella gestione del multithreding: delle funzionalità provvedono che le librerie siano disponibili senza conflitti tra thread concorrenti in esecuzione.
 
; Modifiche separate
Uno degli aspetti più interessanti è che l'aggiunta di un nuovo costrutto al linguaggio ''non sempre'' comporta la modifica delle specifiche della macchina virtuale o la modifica delle macchine virtuali esistenti. Ad esempio, buona parte delle aggiunte che sono state introdotte con la versione 5 della piattaforma sono state progettate in modo che il compilatore possa compilare i nuovi costrutti del linguaggio usando istruzioni "vecchie" nel bytecode.<ref>Questo non è stato possibile per ''tutto'': ad esempio, restano escluse da questo meccanismo le annotazioni.</ref>