Macchina virtuale Java: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
La
Le specifiche della JVM vengono dettate e aggiornate dalla [http://java.sun.com/ Sun Microsystems] in quanto iniziatore e mantenitore del progetto, ma vengono spesso disattese dalla maggioranza delle implementazioni non-sun di JVM che sono in circolazione, soprattutto per quanto riguarda il [[framework]] che ogni JVM include . Di conseguenza, le diverse JVM non sono totalmente compatibili tra loro ed occorre fare attenzione nello scrivere i programmi, se si vuole che essi funzionino su ogni JVM . La cosa migliore da fare a tale scopo sarebbe non usare le ultime caratteristiche del linguaggio introdotte dalla SUN nelle JVM più recenti e usare delle [[Application programming interface|API]] "stabili" , che cioe'
A tale proposito è in atto una controversia tra la Sun e la Microsoft in quanto quest'ultima ha sviluppato una JVM per ambienti Microsoft, contravvenendo a quello che è lo spirito di Java e soprattutto il motivo del suo rapido sviluppo che consiste, appunto, nella scrittura di un codice unico in grado di comportarsi in maniera identica su tutte le macchine.
----
== Caratteristiche della JVM ==
La caratteristica peculiare della JVM è la cosiddetta "'''''portabilità'''''" , ovvero la possibilità di essere eseguita su sistemi operativi diversi e quindi di eseguire tutti gli applicativi scritti rispettando le specifiche in questione. Rispettando in maniera egregia - molto di più di quanto ci abbiamo abituato altre software house - lo slogan della Sun "''Write once, Run everywhere'' (scrivi una volta, esegui dappertutto), la JVM si pone come uno "strato software" e crea un ambiente [[Wiktionary:it:virtuale]] tra il Sistema Operativo vero e proprio e gli altri applicativi, così come esemplificato nello schema che segue:
{| border=1 align=center
|+ '''Rappresentazione di una JVM.'''
! Applicativi Java
|-
!Java Virtual Machine S.O. virtuale
|-
!Sistema Operativo “reale” relativo al tipo di processore
|}
Tale caratteristica rende la JVM particolarmente adatta ad essere utilizzata su sistemi [[embedded]] (palmari, telefonini, etc); a questo riguardo si segnala che, per sfruttare al meglio anche hardware dalle risorse limitate, le ultime JVM Sun, così come alcune altre implementazioni reperibili, hanno metodi efficaci per ridurre il consumo di [[CPU]], tra i quali l'[[HotSpot]] <sup>(tm)</sup>.
La JVM ufficiale Sun implementa due tipi di HotSpot:
#''la Server HotSpot'': che ha risposta minore all'avvio ma sarà tendenzialmente più efficiente durante tutta l'esecuzione;
#''la Client HotSpot'': che inizia subito con l'esecuzione ed è quella usata come standard dalla JVM Sun.
Per questi motivi si usa la Server HotSpot per programmi server o in generale per programmi che resteranno in esecuzione a lungo e per i quali il tempo di avvio non è importante. Un altro approccio possibile potrebbe essere compilare il programma Java in codice nativo anziché in bytecode, usando ad esempio il compilatore [[gcc|gcj]] della FSF, ma questo ridurrebbe i benefici sul fronte peculiare della portabilità.
----
== JVM Open Source==
Va inoltre detto che esistono dei progetti [[Open Source]] che non seguono le specifiche della Sun e che presentano delle caratteristiche veramente interessanti. Infatti, oltre a rendere disponibili i sorgenti (nel pieno rispetto della filosofia open source) presentano una ridottissima occupazione di memoria (intorno ai 50 KB).
La prima ad essere sperimentata è stata la '''JVM "Waba"''', in grado di interpretare direttamente i bytecodes prodotti da un qualunque compilatore Java e quindi in grado di eseguire la stessa applicazione sia sul personal computer che sul [[palmare]].
[[Categoria:Sun]]
|