Java (linguaggio di programmazione): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
m →Indipendenza dalla piattaforma: +links |
||
Riga 18:
Le prime implementazioni del linguaggio usavano una virtual machine interpretata per ottenere la massima portabilità, ma questa è una soluzione poco efficiente e i programmi interpretati sono molto lenti: per questo, tutte le implementazioni recenti di macchine virtuali Java hanno incorporato un JIT compiler, cioè un compilatore interno che al momento del lancio traduce al volo il programma bytecode Java in un normale programma nel linguaggio macchina del computer ospite; inoltre questa ricompilazione è ''dinamica'', cioè la virtual machine analizza costantemente il modello di esecuzione del codice (''profiling'') e ottimizza ulteriormente le parti più frequentemente eseguite mentre il programma sta girando. Questi accorgimenti, a prezzo di una piccola attesa in fase di lancio del programma, permette di avere delle applicazioni Java decisamente più veloci e leggere. Tuttavia, anche così Java resta un linguaggio meno efficiente dei linguaggi compilati come il C++, scontando il fatto di possedere degli strati di astrazione in più e di implementare una serie di automatismi, come la garbage collection, che se da un lato fanno risparmiare tempo ed errori in fase di sviluppo dei programmi dall'altro consumano memoria e tempo di CPU in fase di esecuzione del programma finito.
La portabilità è un obiettivo tecnicamente difficile da raggiungere, e il successo di Java in questo ambito è materia di alcune controversie. Sebbene sia in effetti possibile scrivere in Java programmi che si comportano in modo consistente attraverso molte piattaforme diverse, bisogna tenere presente che questi poi dipendono dalle virtual machine, che sono programmi a sè e che hanno inevitabilmente i loro [[Glossario_informatico#B|bug]], diversi dall'una all'altra: per questo è nata una parodia dello slogan di Sun "Scrivi una volta, esegui dovunque", che è diventato "Scrivi una volta, fai il [[Glossario_informatico#D|debug]] ovunque".
== Esecuzione sicura del codice remoto ==
|