Newsgroup: it.comp.java
Titolo: [newbye] Si può compilare anche in codice nativo?

Salve a tutti, sono nuovo.
Mi sono avvicinato a java da pochissimo e lo trovo molto interessante. Mi
chiedevo una cosa: se io ho i sorgenti di un applicativo java e volessi
aumentarne le prestazioni un modo potrebbe essere, se non mi interessa
particolarmente la portabilità, quello di compilarlo in codice nativo
anzichè in bytecode.
Esistono i compilatori che lo fanno nelle varie piattaforme?
Sun ne fornisce qualcuno?
Grazie.
Ciao.
Albino.

 Albino
Ciao anche a te
pole

...

Si è possibile ma non so se sun ne fornisce qualcuno.
Se fai una ricerca nei vecchi post dovresti trovare qualcosa
anzi ho gia trovato:
GCJ - 
http://gcc.gnu.org/java/
The GNU Compiler for the Java Programming Language, compiles Java source or 
bytecode to native machine code. Most APIs are supported, except the AWT, 
Swing and RMI. Open Source! Lo si può usare anche sotto Windows con CygWin
http://sources.redhat.com/cygwin/
, ma è ancora lontano dall'essere finito.
JCC - 
http://www.geocities.com/CapeCanaveral/Hangar/4040/jcc.html
A Java to C converter - A direct Java to C translator. Unlike other translators 
JCC does not convert Java class files, but instead processes Java source code 
directly. Completamente free!
JET Deployment Environment - 
http://www.excelsior-usa.com/jet.html
built around an optimizing Java to native code compiler for Windows. 
The compiler produces conventional EXE and DLL files that do not use JVM 
during execution from Excelsior. A pagamento.
Jolt - 
http://www.meurrens.org/ip-Links/Java/codeEngineering/blackDown/jolt.html
Hackers-only prototype of a Java bytecode to C translator written in Java.
Toba - 
http://www.cs.arizona.edu/sumatra/toba
Java-to-C Translator: translates Java class files into C source code to allow
making, fast, directly executable programs that avoid the overhead of 
interpretation. For stand-alone applications, not applets.
IBM Jikes - 
http://oss.software.ibm.com/developerworks/opensource/jikes/
JikesTM is a compiler that translates Java source files as defined in The Java
Language Specification into the bytecoded instruction set and binary format 
defined in The Java Virtual Machine Specification.
Harissa - 
http://www.irisa.fr/compose/harissa/
Harissa is a Java environment that includes a compiler from Java bytecode to C
and a Java interpreter. While Harissa is aimed at applications that are 
statically configured, such as the Javac compiler, it is also designed to allow
code to be dynamically loaded in an already compiled application. 
Jasmin - 
http://mrl.nyu.edu/~meyer/jvm/
Jasmin is a Java Assembler Interface. It takes ASCII descriptions for Java
classes, written in a simple assembler-like syntax and using the Java Virtual 
Machine instruction set. It converts them into binary Java class files suitable
for loading into a JVM implementation.
JToExe - 
http://www.bravozulu.com/Products/JToExe/jtoexe.html
Lo riporto solo per "completezza"... il dominio è significativo:"bravo zulù"... 
a chi? A chi lo usa! ;)
BeanShell - 
http://www.beanshell.org/
BeanShell is a small, free, embeddable, Java source interpreter with object
scripting language features, written in Java. BeanShell executes standard 
Java statements and expressions, in addition to obvious scripting commands
and syntax. BeanShell supports scripted objects as simple method closures 
like those in Perl and JavaScript(tm). 
JFlex - 
http://www.jflex.de/
JFlex is a lexical analyzer generator (also known as scanner generator)
for Java(tm), written in Java(tm). It is also a rewrite of the very useful
tool JLex which was developed by Elliot Berk at Princeton University.
JLex - 
http://www.cs.princeton.edu/~appel/modern/java/JLex/
JLex is a lexical analyzer generator, written for Java, in Java. 
JLex was developed by Elliot Berk at Princeton University. It is now 
maintained by C. Scott Ananian.
Jad - 
http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
Jad - the fast JAva Decompiler. Jad is a Java decompiler, i.e. program that
reads one or more Java class files and converts them into Java source files
which can be compiled again. Jad is a 100% pure C++ program and it generally
works several times faster than decompilers written in Java. 
JODE - 
http://jode.sourceforge.net/
JODE (Java Optimize and Decompile Environment) is a java package containing 
a decompiler and an optimizer for java. This package is freely available under
the GPL.
Delphi2Java - 
http://www.javadelphi.com/
 
Creates Java source code from Delphi's Pascal code. Commerciale :(
See also:
http://dmoz.org/Computers/Programming/Languages/Java/Development_Tools/Translators/
Java Code Engineering & Reverse Engineering - 
http://www.meurrens.org/ip-Links/Java/codeEngineering/
ciao (e grazie all'autore dell'originale post che ho copia/incollato)

Beh, ad esempio non sapevo esistesse questo JIT...
Comunque non c'è nulla di ufficiale diciamo, no?
In realtà, proprio perchè java mi piace, vorrei capire per quali tipologie
di applicazioni è vantaggioso e per quali magari invece non lo è. Penso che
siamo tutti d'accordo sull'utilità di java ad es. per internet, dove la
portabilità è necessaria, ma mi sembra (e scusa la superficialità della
considerazione ma sto' iniziando veramente solo ora ad avvicinarmi
all'argomento), che ad es. esistano versioni java per l'embedded, in cui mi
pare che la velocità di esecuzione sia più importante della portabilità no?


 
mmmh, non la vedrei così... non sono certo un esperto del settore però
anche lì mi pare che l'obiettivo sia quello di uniformare il più
possibile i vari ambienti... pensa che bello poter sviluppare una middlet
senza preoccuparti del tipo di display presente sul client...
Per la velocità di esecuzione, un mio collega che sta giocherellando col
j2me mi ha detto che c'è un garbage collector stile "avvoltoio"... non
appena trova un null reference... zac! :-) Inoltre hai alcune limitazioni
sulle dimensioni dell'eseguibile etc... certo l'ideale sarebbe che la VM
fosse implementata in hardware su questi device, ma ho letto che qualcuno
lo sta già facendo...
Ciao :-)
pole

 no?
La velocita' di esecuzione e la portabilita' (e altre proprieta') sono 
importanti quanto i tuoi requisiti decidono che siano; poi, verifichi 
se/quale piattaforma di sviluppo ti fornisce il miglior compromesso tra le 
varie proprieta' - o addirittura, in casi semplici, l'ottimo, cioe' tutte 
le proprieta' soddisfatte al 100%. 
Per dire, per decine di anni sono sono usati per applicazioni mission-
critical sistemi la cui velocita' e potenza di calcolo era infinitesima 
rispetto al piu' scassato 386 che trovi sulla faccia della terra: ma 
facevano il loro lavoro benone - il trucco e' che il lavoro era minore. 
Ora, per una serie di caratteristiche, che vanno dal design e la 
pragmatica del linguaggio all'uso, appunto, di una VM, accade che - con 
l'hardware moderno - la perdita in velocita' (indubitabile) dovuto all'uso 
di bytecode e/o alla compilaione JIT e' trascurabile rispetto ai vantaggi 
(leggi: minori costi) prodotti dal fatto che il codice che gira e' lo 
stesso in varie piattaforme, situazioni di deployment, eccetera. Questo, 
per molte classi di applicazioni. Per altre, no.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun