Java/La macchina virtuale: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
taglio via del testo |
m sposto paragrafo |
||
Riga 11:
Esso è stato progettato anche per avere una certa indipendenza dallo stesso linguaggio Java; questo permette anche ad [[w:en:Da Vinci Machine|altri linguaggi]] di essere compilati in questo formato.
; 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>▼
Un modo semplice per ottenere questo è progettare costrutti che siano "zucchero sintattico" per costrutti preesistenti e che già hanno un corrispettivo nel bytecode. In altre parole, vengono resi disponibili nuovi costrutti che rappresentano un modo più comodo e semplice di scrivere le stesse cose.▼
I vantaggi principali di questo approccio:▼
*non è necessario modificare la macchina virtuale preesistente per supportare i nuovi costrutti;▼
*tende a mantenere i due linguaggi semplici da imparare, in quanto i nuovi costrutti si basano su quelli vecchi e già familiari;▼
*è possibile sviluppare indipendentemente le specifiche del linguaggio e della macchina virtuale.▼
== La macchina virtuale ==
Concretizza un modello di elaboratore astratto. Tra i vantaggi di questo approccio:
#facilita la realizzazione di programmi portabili su piattaforme diverse.
Line 35 ⟶ 46:
La soluzione adottata per default dalle macchine virtuali distribuite dalla Sun a gennaio 2010 è la terza. Essa permette di raggiungere prestazioni in genere paragonabili a quelle di un programma scritto ad esempio in C e compilato direttamente in codice nativo.
▲; 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>
▲Un modo semplice per ottenere questo è progettare costrutti che siano "zucchero sintattico" per costrutti preesistenti e che già hanno un corrispettivo nel bytecode. In altre parole, vengono resi disponibili nuovi costrutti che rappresentano un modo più comodo e semplice di scrivere le stesse cose.
▲I vantaggi principali di questo approccio:
▲*non è necessario modificare la macchina virtuale preesistente per supportare i nuovi costrutti;
▲*tende a mantenere i due linguaggi semplici da imparare, in quanto i nuovi costrutti si basano su quelli vecchi e già familiari;
▲*è possibile sviluppare indipendentemente le specifiche del linguaggio e della macchina virtuale.
|