Java-File zu einer "echten" .exe machen?

Hi!

Ist es möglich eine *.java, eine *.class oder eine *.jar Datei in eine *.exe zu packen, dass diese *.exe dann auch auf Computern läuft, die kein Java installiert haben?

Also das ich mein Programm in eine *.exe packe und dann nur die *.exe weitergeben muss, nicht noch zusätzlich irgendeine andere Datei.

Ich hab zwar zahlreiche Freeware-Programme gefunden, die *.class oder *.jar Dateien in eine *.exe packen, aber keine der *.exe-Files funktioniert auf einem anderen Rechner, bzw. es geht nur wenn der andere Rechner auch Java (oder wenigstens die JVM) installiert hat und ich die *.class datei auch noch weitergebe.

Ich hoffe ihr könnt mir helfen!

Gruß, Boar
 
@boar

Hi, könntest du mir einige der URLs geben, wo du Tools downgeloaded hast, welche Java jar-files in exe-Dateien kompilieren?? Das wegen der JVM ist kein Problem wenn das nich geht...habe nur ein paar probiert und bei den meisten brauchte man auch das Jar-file.
Habe mal was von EXE4java gehört, nur habe nirgends einen Download gefunden!!

Danke
 
Ein "richtige" *.*exe bekommst du mit Java nicht hin (allenfalls diese vorgegaukelten mit deinen Freewareprogrammen, welche jedoch die JVM einbeziehen), da es per Bytecode und nicht in Maschinencode kompiliert wird --> Stichwort "runtime"

Spar dir die Arbeit und nehme jar-archive...
 
@nook
Das mit der "runtime" ist mir schon bewusst. Dass ich in Java keine richige "maschinencodierte" exe bekomme ist vollkommen klar und auch in Ordnung. Mich stört es nicht, dass ich zum starten ne JVM brauche.
Mit ner exe und eigenem Icon ist's halt schöner...natürlich könnte man auch eine batch-file schreiben, eine Verknüpfung herstellen und eine Icon zuweisen..klar, würde auch gehen.
Nebenbei programmiere ich seit kurzer mit Eclipse (auch weil von der UNI geraten; bin auch zufrieden) und ich weiss nicht, ist es mir bis jetzt nur entgangen oder kann es sein, dass es dort nicht möglich ist nur die *.class dateien und nicht auch die *.java Dateien in ein Jar zu exportieren. Scheint mir zwar etwas merkwürdig und meiner Meinung nach muss es auch gehen, nur habs nocht nicht geschafft.
 
@ kito:

.jar-files lassen sich in Eclipse auch ohne .java Dateien erstellen. Ich arbeite zur zeit mit der 3.0er Version, beim exportieren nach .jar einfach nur den Haken "Export generated class files and resources" aktivieren, das langt.

Bezüglich dem nativen kompilieren: Ich hab bei den Links in meinem letzten Post "Excelsior Jet" schon erwähnt, mit dem lässt sich eine native .exe erstellen. Bei GUI-Programmen wird jedoch nur AWT unterstüzt, kein Swing.

Gruß, Boar
 
Naja wenn dein Programm Swing enthält kannst du mit stundenlanger Compilezeit rechnen wobei die exe die dabei rauskommt bei weitem größer ist, als das jre... Viel Spaß mit Excelsior JET ;)
 
vielen Dank Leute...habe gestern auch probiert meine Anwendung in eine exe zu kompilieren, doch ich denk bleib bei den Jars :)

Danke auch für den Tipp mit dem ausschließen der .java-files

Grüße kito!
 
Original von nook
Naja wenn dein Programm Swing enthält kannst du mit stundenlanger Compilezeit rechnen wobei die exe die dabei rauskommt bei weitem größer ist, als das jre... Viel Spaß mit Excelsior JET ;)

solch einen dummen beitrag zu java hab ich noch nie gehört. Entweder kennst du dich nicht mit "Excelsior Jet" oder Java selbst aus. Oder vieleicht auch beides.
Es ist richtig das Excelsior Jet kein swing unterstützt. Aber swing ist auch nicht wirklich plattformunabhängig. Einfach mal testen dann wißt ihr was ich meine.
Zu der Compilezeit in Excelsior Jet, sofern du das meinst, dauert dies keine stunden, geschweige denn es kommt eine größere datei als die jre dabei heraus.
Zu beginn von Excelsior Jet wird die eine jre in maschinensprache übersetzt. Letztendlich werden bei dem konvertieren von jar in exe nur die einzelnen maschinencode-bruchstücke mit dem java-quelltext ersetzt.

mfg
minzel
 
Wer Platformabhängig programmieren will, ist mit Java auf dem völlig falschem Dampfer! Der sollte sich eine der anderen Sprachen wie C++, VB oder Delphi anschauen.
 
Original von Tec
Wer Platformabhängig programmieren will, ist mit Java auf dem völlig falschem Dampfer! Der sollte sich eine der anderen Sprachen wie C++, VB oder Delphi anschauen.

Der Beitrag war auch unnötig würde ich sagen. Danke für die Infos hier. Ich interessiere mich auch für dieses Thema und freue mich, hier was gefunden zu haben.
 
Original von Cyberm@ster
VB plattformunabhängig, ah ja? Und ich bin der Osterhase...

Ich lese da ein "Platformabhängig" von Tec. Auch wenn da ein "t" fehlt, kehrt das die Bedeutung des Wortes nicht um. :)

pyro_maniacDer Beitrag war auch unnötig würde ich sagen.

Eigentlich überhaupt nicht. Der Sinn hinter Java ist es, plattformunabhängig zu bleiben. Meinetwegen kann man noch damit argumentieren, dass man die Sprache so sehr mag und dabei bleiben will, aber man nimmt sich damit eigentlich *den* Vorteil der Sprache.

Das ist fast so, als würde man in einem Sportwagen nur den Rückwärtsgang benutzen.
 
Original von t3rr0r.bYt3
pyro_maniacDer Beitrag war auch unnötig würde ich sagen.

Eigentlich überhaupt nicht. Der Sinn hinter Java ist es, plattformunabhängig zu bleiben. Meinetwegen kann man noch damit argumentieren, dass man die Sprache so sehr mag und dabei bleiben will, aber man nimmt sich damit eigentlich *den* Vorteil der Sprache.

Das ist fast so, als würde man in einem Sportwagen nur den Rückwärtsgang benutzen.

Nein, wieso? Der Vorteil ist immernoch, dass du das Programm nur einmal schreiben musst (und dann eben für die jeweilige Plattform kompilieren). Bei einer Sprache wie C++ musst du (wenn du die jeweiligen APIs des Systems nutzt) einen Großteil des Codes portieren und ebenso für die verschiedenen System kompilieren. Oder nicht?
 
Jo, aber du musst es eben noch extra compilen. Allerdings stellt sich da auch die Frage, warum man das überhaupt nativ compilen will.

Solange man da nicht einen wirklich guten Grund hat ist das eher ein Eigentor.

/edit: Ich kenne jetzt keine anderen Compiler, aber der GCJ liefert einem auch noch weitere Gründe, warum man das evtl. besser sein lassen sollte: http://gcc.gnu.org/java/faq.html#2_0
 
Zurück
Oben