Newsgroup: it.comp.java
Titolo: Per chi vuole compilare Java in nativo

Ciao a tutti,
vorrei dire la mia sulla questione della compilazione di Java in codice
nativo. Non voglio insegnare nulla, ma solo portare il mio piccolo
contributo di esperienza.
Non ho grossi tool di sviluppo commerciali. Che io sappia, l'unico
compilatore .java->.exe scaricabile da Internet e' quello di IBM
(
http://www.alphaworks.ibm.com/Home/
). Anzi, ora non c'e' piu' nemmeno
quello. Pero' questo mese l'hanno messo in edicola con "Io Programmo". Ho
comprato la rivista e l'ho usato per compilare un mio piccolo programma di
criptaggio di file. Il risultato e' un file di 27,3kb, a cui va pero'
aggiunta una DLL di 3,57Mb da redistribuire. Piu' il readme fa uno zip di
1,25Mb. Troppo per un'utility cosi' semplice. Risultato? Le stesse
prestazioni dei .class con il JIT... forse con applicazioni piu' grandi e'
diverso, ma quanti di noi hanno scritto un clone di Office con Java?
Pero', nel Microsoft SDK for Java c'e' una piccola utility che si chiama
jexegen.exe che non compila Java in codice nativo ma raccoglie in un solo
file .exe tutti i .class necessari. Da notare che non e' affatto richiesto
che i .class siano compilati con SDK. Infatti io l'ho disinstallato perche'
preferisco il JDK di SUN, ma ho conservato il file jexegen.exe e lo uso
tranquillamente. Il risultato con lo stesso programmino di prima e' un file
.exe di 14,5kb, senza dll o file aggiuntivi... il prezzo da pagare e' che
funziona solo su sistemi Microsoft con una JavaVM di Microsoft installata.
Cioe' tantissimi, visto che e' compresa in IE4, e forse anche in IE3, questo
non lo so.
In piu', con jexegen e' possibile disabilitare la console, cosi' il
programma diventa davvero GUI, ed e' possibile creare un semplicissimo help
scrivendolo in HTML: quando l'utente chiede di leggere l'help, basta
lanciare il file HTML come se fosse un programma, cioe' usando
Runtime.exec(...), e la VM pensera' a trovare IE e far leggere il file!
Le prestazioni? Questo programma va leggermente piu' veloce con jexegen che
con il compilatore IBM nativo. La differenza e' davvero piccola, ma visto
che mi aspettavo che vincesse IBM...
Gradirei molto avere il parere di tutti su questa faccenda.
Se volete vedere il programmino che ho usato per fare il test, si chiama mzk
e lo trovate con le mie applet all'indirizzo
http://members.tripod.com/~Vernaschi/java.html
. Se invece qualcuno vuole che
gli spedisca per posta il file jexegen.exe, me lo chieda. Non so se e'
corretto postarlo qui sul newsgroup, specie visto che e' un eseguibile...
:-)
Grazie a tutti
Luciano Vernaschi (
luc...@tin.it
, 
http://members.tripod.com/~Vernaschi
)

che mi aspettavo che vincesse IBM...
Sicuramente e' un dato importante, ma non completo, si potrebbero
confrontare
anche le "prestazioni" :-) grafiche. Inoltre se non sbaglio, l'ultima
versione
di hpjc, il compilatore IBM, dovrebbe supportare pienamente 1.1.6 e Swing
1.0.2.
Il compilatore jexegen e' interessante, per certe cose puo' essere davvero
utile,
ma sono piuttosto favorevole all'uso di compilatori JIT, che, almeno per
ora,
dovrebbero fornire quelle prestazioni sufficienti per rendere un programma
di dimensioni decenti, "godibile".
Un mio amico mi ha detto comunque che c'e' anche un progetto Cygnus per
lo sviluppo di un compilatore che si interfaccia con gcc... purtroppo nel
casino
del mio computer ho perso l'URL :-/
Ciao!
Andrea Marchini
The Gate - 
http://thegate.mediacom.it

 ....

non lo so.
Su IE3 per default e' presente una VM 1.02 ma e' possibile aggiornare
solo quella, senza passare a IE4, scaricando l'upgrade dal sito della
www.microsoft.com/java
In relazione a tutto il resto del discorso, tieni conto che ne' RMI
ne' JNI funzionano con la VM Microsoft. Mentre per RMI c'e' una patch
scaricabile dalla IBM, per JNI che io sappia non c'e'nulla da fare... 
| --
| Bruno Bossola
| Groupware/Intranet B.U.           Phone:  +39-11-2252211
| ATOS SpA v.Vaninetti 27           Fax:    +39-11-2203182
| I-10148 Torino ITALY              Change NOSPAM in atos to email me!