Newsgroup: it.comp.java
Titolo: Java e JIT Compilation

Una delle differenze tra la macchina virtuale Java e quella di .NET sta nel
fatto che nella seconda č usata una compilazione Just in time, mentre quella
del java č una vera e propria macchina virtuale, che interpreta le
istruzioni una per una.
Avevo sentito perņ che era stato introdotto il JIT anche per java. E' vero?
Quando eseguo java nome_programma, il programma č eseguito su una macchina
virtuale o viene effettuata la compilazione il tempo reale in istruzioni
native?
Come funziona la cosa?
Grazie.
PS. Come avrete notato conosco poco Java...
--
Marco Iannaccone
extrem...@libero.it

> virtuale o viene effettuata la compilazione il tempo reale in istruzioni
Compilazione. Parziale però (lo stesso per C#).
Microsoft ha preso la sua VM per J++, gli ha cambiato due cose e l'ha
chiamata C#. Non ho visto una sola novità in C#, rispetto a Java. Appena era
uscito C# mi sono incuriosito... ora penso che avrà vita breve, ho sentito
parlare di J#, e penso che M$ comincia ad avere *davvero* le idee confuse...

 parlare di J#, e penso che M$ comincia ad avere *davvero* le idee
confuse...
Premesso che ho chiesto tutt'altro...
Comunque:
1) in esecuzione .NET è mediamente più veloce di Java, almeno in alcune cose
2) non hai le idee molto chiare. Non confondere .NET (che è una piattaforma,
paragonabile alla JVM) e C#, che è uno dei linguaggi che generano il CIL, il
"linguaggio macchina" della piattaforma .NET. Uno degli intenti di .NET è
permettere di creare componenti utilizzando linguaggi diversi. C# è nato
come linguaggio di sviluppo principale, e poi gli sis sono affiancati altri
linguaggi comme VB.Net, ad esempio. J# permette di produrre eseguibili per
.NET in Java. Non mi pare niente di brutto, anzi, permette ai programmatori
Java di scivere codice .Net. A limite non si imporrà C# come linguaggio, non
so, ma ciò non toglie che da quanto ho visto .Net è una piattaforma
interessante (anche se ovviamente non si sono ancora viste le vere
potenzialità) e la possibilità di usare un sacco di linguaggi (anche non
controllati direttamente da M$) per produrre codice mi pare una cosa buona.
Penso che sia questo il principale vantaggio, anzi, uno dei pochi. IN fondo
anche Java non è nato dal nulla, ma ha preso elementi di altri linguaggi,
aggiungendo qualcosa e perfezionando il tutto, no.
3) Credo che alla fine .Net e Java saranno quasi complementari, come
piattaforme intendo. Avranno ambiti di utilizzo diversi. Credo che siano
entrambi ottimi per gli scopi per cui sono stati creati, che non sono
esattamente gli stessi.
4) Java come linguaggio può essere usato con .Net, e questo sicuramente
contribuirà a spingere la piattaforma, senza contare che il passaggio a
C#per i programmatori Java è immediato.
Mi piacerebbe sentire altri pareri in merito. Come forse avrete intuito io
non sono per nessuna delle due piattaforme. Credo che che forse non ci sarà
un vero vncitore, ma conviveranno...
Comunque, si potrebbe tornare alle mie domande? :-P
Quando eseguo un programma Java, viene eseguito in una vera e propria
machina virtuale, oppure viene compilato prima dell'esecuzione in codice
nativo, come succede con .NET?
Grazie.
--
Marco Iannaccone
extrem...@libero.it

nativo, come succede con .NET?
la jvm della sun (ma anche le altre) hanno il just-in-time compiler
(che pero' nelle ultime versioni non si chiama piu' cosi')
in pratica le parti di bytecode usate piu' frequentemente vengono 
compilate in codice nativo durante l'esecuzione dalla jvm stessa
ciao
_______________________________________
http://jame.sourceforge.net
 

 compilate in codice nativo durante l'esecuzione dalla jvm stessa
Grazie mille!
Quindi anche per la jvm č cosě!!!
Con la macchina virtuale .NET perň vengono compilate le funzioni appena sono
invocate (almeno cosě mi risulta).
Hmm... due scelte diverse, adatte ad applicazioni di tipo diverso...
--
Marco Iannaccone
extrem...@libero.it

 nativo, come succede con .NET?
Te lo ripeto: compilazione. Parziale però (lo stesso per C#).
Luigi

 invocate (almeno cosě mi risulta).
Nessuna idfferenza con i "vecchi" JIT per Java.
L'approccio delle VM moderne (in fondo siamo nel 2002, e' Java e' del
96) e' piu' sofisticato, in quanto viene compilato solo il codice che
effettivamente ne ha bisogno. (Piu' o meno)
Inoltre il "ne ha bisogno" dipende dal tipo di profilo che si decide per
la VM, cioe' l'uso principale (client o server)
ciao
uL
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Grazie, sei stato chiaro! ^__^
--
Marco Iannaccone
extrem...@libero.it