PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java gleich in Maschinensprache übersetzen?


Djon
2004-11-29, 16:38:13
Hallo!!!

Ich habe hier mal kurz nachgedacht, und konnte nichts feststellen was gegen ein Javaprogramm in Maschinensprache sprechen würde. Wieso gibt es keinen Compiler, der Javacode gleich, wie z.B. in C oder anderen Hochsprachen in die Maschinensprache übersetzt? Ich verstehe natürlich, dass der Javacode auf beliebigen Plattformen ausführbar sein sollte, doch wenn ich davon ausgehe, dass ich mein Programm nur auf x86 - Architektur ausgeführt wird, spricht doch nichts gegen oder? Oder ist es aus irgendwelchen tiefverborgenen technischen Gründen nicht machtbar?

mfg Djon

Ganon
2004-11-29, 16:40:55
Ich glaube der Java-Compiler von GCC kann das.

Bin mir aber nicht 100%ig sicher.

Pinoccio
2004-11-29, 16:44:54
Ich habe hier mal kurz nachgedacht
http://www.geocities.com/marcoschmidt.geo/java-native-compilers.html

hth, mfg Sebastian

HellHorse
2004-11-29, 16:51:56
Ich glaube der Java-Compiler von GCC kann das.
Ja, kann er. Allerdings ist er dafür auf GNU CLASSPATH angewiesen. D.h von Sachen wie Swing lässt man am besten die Finger. Ich habe allerdings habe schon Benchmarks gesehen, wo in 90% der Fälle die Sun und IBM VMs schneller waren als von gcj kompilierter nativer Code.

Faule übergeben der VM der einfach folgendes Argument

-Xcomp

Kann aber stark die Ladezeiten vergrösssern.

Djon
2004-11-29, 16:57:16
ja, mir ging es eigentlich darum, dass ich das Javaprogramm gleich als .exe - Datei vom Bildschirm starten kann und nicht unbedingt es in der DOS-Console oder der Entwicklungsumgebung machen muss.

mfg Djon

Pinoccio
2004-11-29, 17:03:20
ja, mir ging es eigentlich darum, dass ich das Javaprogramm gleich als .exe - Datei vom Bildschirm starten kann und nicht unbedingt es in der DOS-Console oder der Entwicklungsumgebung machen muss.
Wie wäre es denn dann mit einer batch-Datei?

mfg Sebastian

Djon
2004-11-29, 17:10:55
ja, wäre auch möglich. Ich habe noch woanders nachgelesen, dass ich für das Ausführen der .exe - Datei trotzdem noch eine VM auf dem Rechner brauche. Kann ich die .java - Datei, genauso wie bei Assembler in die "richtiger" Maschienensprache übersetzten?

mfg Djon

Shink
2004-11-30, 09:32:10
Mit GCJ muesste das gehen, allerdings hast du da bei weitem nicht alle Klassen des JDK zur Verfuergung.
Bei Excelsior JET kann ichs mir nicht vorstellen, da man damit ja auch z.B. Klassen dynamisch laden kann. Dieses Java-Feature verlierst du mit GCJ natuerlich.

HellHorse
2004-11-30, 11:10:45
ja, wäre auch möglich. Ich habe noch woanders nachgelesen, dass ich für das Ausführen der .exe - Datei trotzdem noch eine VM auf dem Rechner brauche. Kann ich die .java - Datei, genauso wie bei Assembler in die "richtiger" Maschienensprache übersetzten?

mfg Djon
Punkt1:
Kommt darauf an. Es gibt diverse Sachen wie JexePack und exe4j. Die machen eine exe aus einem JAR File, compilieren das ganze jedoch nicht in nativen Code und sind darum auch auf eine VM angewiesen. Allerdings kannst du die VM z.T. direkt ins Installationsverzeichnis packen und sie muss dann nicht sepparat installiert werden.
Ich bin mir nicht ganz sicher, aber ich dache der Excelsior JET braucht auch eine VM für AWT/Swing.

Punkt2:
(siehe Shink)
Wenn du wissen willst, ob gcj eine Option ist, schaust du am besten mal hier.
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html

Xmas
2004-11-30, 17:43:14
Warum sollte man eine .exe aus einem .jar-File generieren wollen, wenn man dann trotzdem noch die VM braucht?
Oder braucht man dann wirklich nur noch die reine VM (sprich: java.exe) dazu, und alle benötigten Module aus dem RE werden in die .exe gepackt?

ja, mir ging es eigentlich darum, dass ich das Javaprogramm gleich als .exe - Datei vom Bildschirm starten kann und nicht unbedingt es in der DOS-Console oder der Entwicklungsumgebung machen muss.

mfg Djon
Generier ein .jar-Archiv. Das kannst du genauso wie eine .exe-Datei per Doppelklick starten, wenn das RE korrekt installiert ist.