Il
linguaggio Java come noto è orientato agli oggetti,
è portabile (ossia il codice si scrive una volta sola
e poi si esegue su qualsiasi macchina), sicuro, predisposto
all'utilizzo in rete, ed è molto simile al linguaggio
C++ per quanto riguarda i costrutti, ma in realtà più
semplice e completo.
Una
volta realizzato il sorgente del programma (es. hello.java)
è possibile quindi produrre, attraverso il tool javac
la relativa classe (hello.class) nel formato standard
adottato ossia bytecode (molto differente dal classico
file eseguibile).
La
Java virtual machine (JVM ) consiste invece nella descrizione
di una macchina software che deve essere conforme a
quanto specificato da Sun Microsystem.
Il suo compito è di trasformare la classe (hello.class)
in formato bytecode nel linguaggio macchina nativo del
processore (x86, PPC, ...) e di eseguirlo. Il tool utilizzato
per avviare l'esecuzione, o meglio l'interpretazione,
del programma hello.class (in formato bytecode) ha nome
java.
Ciò
avviene con una sorta di interpretazione del
codice, ossia ogni "linea" del codice (bytecode) viene
letta, tradotta in base al processore presente e quindi
eseguita, permettendo in questo modo di realizzare un
unico programma e di poterlo utilizzare su qualsiasi
macchina (x86, PPC, …) su cui è stata implementata una
JVM.
Questo
sistema è universalmente riconosciuto come lento
ed inefficiente, per questo motivo è stato introdotto
successivamente il JIT (Just In Time) il cui compito
è di rilevare quei frammenti di codice (nota: frammenti
e non il codice intero) utilizzati più di frequente
e di compilarli al volo ("giusto in tempo") ossia
di tradurli nel codice macchina nativo del processore
in modo che sia eseguito alla "massima" velocità. Questi
frammenti di codice rimangono a disposizione nel caso
siano di nuovo necessari, in alcuni casi potrebbe però
essere necessario ricaricarli nuovamente e quindi ricompilarli
ed eseguirli con conseguenza perdita di tempo e memoria.
Oltre
alla classe riguardante il programma sviluppato, Java
mette a disposizione una serie completa di pacchetti
(librerie) che forniscono al programmatore una serie
di funzionalità (riguardanti grafica, GUI, sicurezza,
interfacciamento con i database, multimedia, ...) pronte
per l'uso. Anche questi pacchetti sono sviluppati in
java e risiedono in formato bytecode.
Anche
a causa del JIT Java risulta però essere piuttosto esoso
in termini di utilizzo di memoria e di CPU, e forse
questo è l'unico vero motivo che ne impedisce una larga
diffusione, in particolare sui sistemi embedded, telefonini,
set-top box.
Altre critiche riguardano la velocità di esecuzione
che può variare da sistema a sistema in base alla qualità
della JVM implementata, che spesso risulta essere insufficiente
con conseguente mancanza di reattività agli eventi (tasto
premuto ed esecuzione del comando, ...) o "pause" temporanee,
brevissime ma percepibili e fastidiose.
JTE
rappresenta un'implementazione di JVM (Java Virtual
Machine) che adotta una tecnologia differente rispetto
all'interpretazione e al JIT.
Questa
tecnologia, basata sul VP (Virtual Processor) e sul
concetto di tool sviluppati da TAO rappresenta la base
che consente di ottenere finalmente risultati e performance
eccellenti, mantenendo l'importante caratteristica della
portabilità (funzionamento su qualsiasi hardware supportato)
e tutti i benefici di JAVA.
Per
informazioni su JAVA:
http://java.sun.com/docs/white/langenv/index.html
|