Interessante Thread sul forum Sun:
http://forum.java.sun.com/thread.jsp...e=false&q=
Si discute su come compilare codice Java.
Riassumo in ordine sparso i punti principali della discussione:
- Sun non distribuisce compilatori le già dette ragioni del 'Write once, Run anywhere' e rimanda a compilatori di terze parti. Comunque non è facile trovare una posizione di Sun ben precisa, tendono ad essere sfuggenti --> IMHO qualcosa bolle in pentola.....
- Il bytecode java
è comunque compilato (tecnologie JIT, Hotspot) al momento dell'esecuzione, ma :
* Senza produrre un exe in linguaggio macchina rimane soggetto a reverse engineering
* In alcuni casi le prestazioni della compilazione run time sono insufficienti
- Se il problema è solo la facilità di deployment, esistono comodi tool di installazione (Install Anywhere -
www.zerog.com , molto bello, l'ho provato

). Installano automaticamente i JRE necessari sulle varie piattaforme.
- ragioni per compilare:
Consider carefully why you want to compile to a native executable, and whether there is a Java way to accomplish your goal. There may be a good reason for compiling to native code, but it needs to be thought through. The potential advantages of compilation to native code are speed increase, less RAM use, and better protection from reverse engineering. As always, measure your results to see if you got what you wanted.
- Alcuni compilatori (oltre al già citato GCJ):
http://www.naturalbridge.com/
http://www.symantec.com/
http://www.excelsior-usa.com/jet.html
http://www.twr.com/
- Se si utilizzano classi delle librerie del JRE (Quindi la libreria NON è stata riscritta per la piattaforma specifica) è
necessario includere il tutto JRE in base alla licenza SUN (Fatta apposta per evitare il caso di VJ++ in cui Microsoft utilizzava alcune cose e ne cambiava altre) . Questo comporta che un applicazione tipo "Hello World" possa anche occupare 7-8 MBytes,
Sarebbe interessante scrivere una bella FAQ su questo argomento.
Ciao