Newsgroup: it.comp.java
Titolo: Java compilato o interpretato?

Non riesco a capire se il bytecode viene interpretato o compilato JIT
all'esecuzione... me lo potreste spiegare?
Si puo' creare un codice eseguibile gia' compilato per una determinata
architettura HW/SW?
Grazie
Gianluca

 determinata architettura HW/SW?
Certo che si', ma allora che te ne fai di Java ?
Davide
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 all'esecuzione... me lo potreste spiegare?
Il bytecode viene interpretato alla prima esecuzione. Un sottosistema 
opportuno osserva la cosa, e decide se quella parte di codice merita 
compilazione; nel qual caso la esegue, e da quel momento in poi il codice 
eseguito e' quello compilato.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun


E' esattamente quello che accade con .Net di Microsoft... ma perche' allora
in tutti i confronti che ho letto si dice che Java e' lento in quanto
interpretato, mentre invece il codice .NET viene compilato JIT in istruzioni
native e quindi va moooolto piu' veloce...
Ho studiato Java e ora sto studiando .NET per fare la tesi di laurea... ma
faccio fatica a trovare differenze sostanziali... confidavo nella differenza
compilazione/interpretazione, ma come immaginavo anche qui sono uguali...
mha...
grazie.
Gianluca

 immaginavo anche qui sono uguali... 
Non conosco .NET in dettaglio, quindi prendi con le pinze, ma e' imho 
improprio paragonare Java (un linguaggio di programmazione) con una 
piattaforma (.NET questo e', mi par d'aver capito, basata su DCOM e 
webservices/RPC via XML - un insieme di protocolli, tool e implementazioni 
che ne fanno uso, col goal di fornire computazione come servizio 
trasparente dalla locazione invece che come applicazione locale). Per dire, 
ha senso paragonare C# con Java, o C++ con Java (che non faccio, dato che 
ti basta google per trovare fiumi di parole al riguardo), ma meno .NET.
Vero e' che insieme col "semplice" linguaggio nel mondo Java, di per se', 
ha attaccato tanti e tali marchingegni da rappresentare in effetti una 
piattaforma. E li' si possono paragonare le due cose.
In ogni modo, solo una differenza (non-tecnologica) a me salta agli occhi. 
Java/piattaforma enfatizza portabilita' e apertura, .NET ovviamente no, 
anzi l'avversa. Non necessariamente in modo scopertamente ideologico (il 
marketing MS s'e' fatto furbo :-), ma in concreto: Java ci ha messo 7 anni 
e uno sforzo mirato e costante per passare da un'*idea* di portabilita' al 
100% che funzionava al 70-80% fino ad un'idea di portabilita' al 100% che 
funziona al 95%. E c'e' ancora strada da fare. Se MS fosse interessata alla 
portabilita', avrebbe molto piu' senso supportare Java invece che 
ricominciare da capo. 
Ovviamente, MS e' interessata a MS - in questo momento storico si trova a 
*dover* fare qualcosa che e' anche, in teoria, portabile (sia pur con un 
certo numero di codicilli), ma la cosa si ferma li' (e spesso non viene 
nemmeno tanto bene, dato che non ci sono abituati).
Tecnologicamente parlando, hai un'array di tecnologie piu' o meno 
comparabili (DCOM o COM+/RMI/RMI-IIOP, MTS/J2EE, C#/Java eccetera) e 
tecnologie comuni (www, XML, e tutto quanto ha in generale a che fare con 
internet); da parte MS, la grande quantita' di componenti COM (nonportabili 
o semplicemente _nonportati_) esistenti sotto win32 e in qualche modo 
integrabili facilmente in .NET. Da parte Java, l'enorme set di librerie 
standard e non sviluppato da JavaSoft e terze parti in questi 7 anni.
Culturalmente, MS si trova a suo agio tradizionalmente in ambiente 
corporate; Java/Sun in ambito opensource o appunto dove la portabilita' e' 
una necessita' (quest'ultima cosa si verifica sempre di piu' in ambito 
corporate, ed e' questa minaccia imvho la causa prima dell'esistenza di 
.NET).
Un indicatore grezzo e' il numero di progetti C# e Java in sourceforge: ad 
oggi, 157 progetti in C# e 4658 in Java. Non ho dati sulle derivate :-), ma 
qualcosa questo dice (e' interessante notare come ci siano oltre 6000 
progetti per C++ e circa 3000 e rotti sia per Perl che PHP).
Insomma, i miei $0.10 sono che alla fine della fiera .NET e' _diversa_ 
semplicemente nel fatto che favorisce MS invece che Sun/JavaSoft, e questa 
e' la sua primaria ragione di esistere. Niente di piu', niente di meno.


 piattaforma
Si in effetti hai ragione il confronto lo faccio fra l'architettura .Net e
l'architettura J2EE.
Al punto in cui sono la differenza piu' evidente e' che J2EE usa IIOP come
protocollo di comunicazione obbligando cosi' tutti ad utilizzare J2EE o
CORBA per interoperare.
MS invece usa Soap su Http, che offre il vantaggio di trasportare dati sotto
forma di XML, facilmente interpretabili da chiunque in quanto standard.
Il fatto che il Common Language Runtime e C# siano stati sottoposti all'ECMA
per la standardizzazione non ti sembra che favorira' in maniera notevole lo
sviluppo della piattaforma? non passerą molto prima che Mono (il progetto
open-source per portare .Net sotto linux) veda la luce e si possa portare il
codice anche sotto Linux... considera anche la relativa giovinezza di .Net,
diamo tempo ai programmatori di fare il porting del Framework e avremo .Net
portabile.
Concludo dicendo che non sono una fan di nessuna software house in
particolare, tant'e' che avevo iniziato a studiare Java solo perche' mi
piaceva la sua idea di funzionamento.
Saluti
Gianluca

 perche' mi piaceva la sua idea di funzionamento.
Naturalmente - non e' questione di fandom, ma mercato, occasione e anche 
fortuna. Vedremo come la cosa si evolve.


 native e quindi va moooolto piu' veloce...
si sbagliano oppure stanno facendo propaganda in favore di .net
io so di bench tra java e .net realizzati facendo il porting di un algoritmo
da java a .net (l'algoritmo in questione non e' fasullo, e' utilizzato
realmente in un'applicazione, quindi non e' un micro-benchmark).
ora salta fuori che java e' piu' veloce di .net, almeno per quanto riguarda
quella particolare applicazione (java: 19 secondi, .net 21 secondi).
ok la differenza e' poca, tuttavia c'e'. in altri casi sono sicuro che .net
potra' risultare piu' veloce, ma il tuo "moooolto piu' veloce" non e'
realistico.


 
faresti bene a continuare, avrai molte piu' soddisfazioni e ti sentirai 
sicuramente un po' piu' libero.
Comunque, in bocca al lupo per la tesi
ciao!
uL