Ich habe festgestellt, dass viele Java-Programme in Windows .bat Batch-Datei als Programm-Starter verwenden. Es sieht komisch aus, wenn es mit anderen Programmen verglichen wird, die .exe ausführbare Datei verwenden.
Warum können diese Java-Programme keine .exe-Datei verwenden? Ist das eine Einschränkung des Java-Programms?
Danke.
Es ist ziemlich einfach, einfach eine .bat-Datei zu erstellen und das java -jar <archive-path>
darin einzufügen, und Sie haben es ausgeführt. Sie können die .bat-Datei einfach bearbeiten und mehr konfigurieren. Alles, was Sie brauchen, ist Notizblock.
Auch sieht es ähnlich wie Bash-Skript-Dateien für Linux aus. Dadurch wird eine .bat-Datei zur Ausführung eines Programms in einer .jar-Datei problemlos von Win nach Linux übertragen.
Während eine .exe-Datei nicht leicht zu modifizieren ist (wenn überhaupt) und einige Metadaten erzeugt, ist die resultierende .exe größer ... EXE ist auch eine Windows-spezifische Dateierweiterung ...
Wenn Sie natürlich alles in einer einzigen Datei packen wollen und sich nicht darum kümmern müssen, die .jar-Datei zu löschen, aber immer noch die Fledermaus ..., dann ist das ein anderer Fall.
Batch-Datei führt oft "java -jar" aus und fügt zusätzlich JVM-Parameter hinzu - dies kann nicht zur jar-Datei hinzugefügt werden.
es ist schneller, Fledermaus-Datei zu schreiben als Java-Archiv in exe-Datei zu verpacken - diese Werkzeuge sind oft kommerziell oder funktionieren nicht gut ...
Außerdem gibt es nicht viele native Windows-Executables (.exe) in Java (es ist jedoch immer noch möglich - Vuze, Limewire usw.)
Java kompiliert nicht zu .exe
. Es kompiliert zu einer virtuellen Maschine die JVM. Dies ist der grundlegende Aspekt der Java-Plattform-Technologie.
Das .bat
ist im Wesentlichen ein Shell-Skript für Windows. Es führt eine .exe
aus, z. java.exe
von der JRE, die dann den Bytecode-kompilierten Java-Code ausführt.
Tatsächlich verwenden ziemlich viele Java-Anwendungen native Startprogramme anstelle von Batch-Skripts: Eclipse , NetBeans , IntelliJ IDEA , JRuby und Vuze sind nur einige Beispiele.
Der Hauptgrund, warum Leute dies nicht öfter tun, ist, dass das Einbetten einer JVM in C eigentlich etwas schwierig ist, und wenn Sie mit dem Starten aus einem Stapel-Skript davonkommen können, dann warum stören?
Eine Batchdatei kann die JVM mit dem erforderlichen Klassenpfad usw. laden und ihr mitteilen, dass sie ein jar oder eine Klasse oder Klasse in einem jar ausführen soll. Es ist Overkill und mehr Arbeit, um ein ausführbares PE-Bild zu erzeugen, nur um ein oder zwei Befehle zum Starten der JVM zu geben und ihr zu sagen, dass sie ein Jar öffnen soll.
Nun ... Sie müssen die Batch-Datei verwenden, wenn Sie beispielsweise die Datei .class ausführen möchten. Sie möchten den Batch verwenden, da Sie Ihren Java-Programm-URI an die Java Virtual Machine (auch ein Programm) übergeben müssen, damit sie ausgeführt werden kann.
Aber Sie können ein Java-Programm so erstellen, dass es ausführbar ist, genauso wie EXE (Sie müssen es nur doppelklicken, um es auszuführen). Seine Erweiterung ist .JAR , und manchmal müssen Sie die .JAR -Erweiterung zu Java Platform Binary (oder ähnlich) zuordnen, um dies zu erreichen. Dann ist es bis zu Windows, um den URI Ihrer Java-Anwendung an die Java Virtual Machine zu übergeben, damit sie ausgeführt wird.
Um dies in NetBeans zu tun, führen Sie Build-Befehl aus, und suchen Sie in Ihrem Projektordner den Ordner dist, und dort sehen Sie eine ausführbare Java-Datei.
Exe oder keine Exe-Funktionalität ist aus der Sicht des Benutzers gleich, daher wird es nicht gemessen ...
Ein HINWEIS
Java-Programme sind plattformunabhängig, daher kann der Ausführungsprozess auf verschiedenen Plattformen unterschiedlich sein. Wenn Java nur für Windows wäre, bin ich sicher, dass SUN es zu Windows EXE kompilieren würde.
Java-Programme wurden von Grund auf so konzipiert, dass sie nicht vom Betriebssystem, sondern von einer virtuellen Maschine ausgeführt werden. Wenn Sie ein Java-Programm ausführen, starten Sie tatsächlich eine virtuelle Maschine und sagen ihr, dass sie Ihr Programm laden soll.
So wurde es entworfen. Es ist nicht so, dass sie in der Qualitätsabteilung nachlassen würden (eine Antwort schlug vor, dass Sun ein Produkt nur zu 80% fertiggestellt hat), es war eine bewusste Entscheidung. Und weil es extrem trivial ist, eine Batch-Datei, eine Verknüpfung, ein Shell-Skript oder eine ausführbare Datei zu erstellen, die den Ein-Klick-Launcher bereitstellen, war es nicht nötig, ein Java-Programm in ein .exe ( Fall von Windows).
Meine zwei Gründe sind:
java -jar whatever.jar
enthält, es sei denn, Sie konfigurieren das Installationsprogramm so, dass java
als auf dem Zielcomputer vorhandenes Programm akzeptiert wird. Dies kann schwierig oder unmöglich sein, während das Erstellen einer Verknüpfung zu einer BAT-Datei, die in der Distribution enthalten ist, ein Kinderspiel ist. Gute Frage. Ich habe mich auch gewundert, warum Sun nie ein Tool zur Verfügung gestellt hat, das eine .exe generiert.
Eine exe-Datei ist wesentlich benutzerfreundlicher als eine bat-Datei. Es hat eine schöne Ikone etcetara.
Ich habe einmal selbst etwas geschrieben: Ссылка
Sie können das Authoring-Tool für die Multi-Plattform-Installation für Sie erstellen. Zum Beispiel InstallAnywhere, es wird eine Windows-Programmdatei für Ihre Java-Anwendung erstellen.
Sun war eine Firma, die die 80/20-Regel befolgt, sie bringt die wichtigsten Dinge zum Laufen, macht sie aber nie gut. Vergleichen Sie zum Beispiel das Java-Plug-in für die Browsererkennung und installieren Sie es in Adobe Flash. Flash war vor vielen Jahren schnell und einfach, während das Java-Plugin Sie oft zur Sun Site weiterleitet, und das wars.
Zurück zur ausführbaren Datei, das Java-Modell ist einmal schreiben, viele laufen. Wenn Sun beschließt, ein Startprogramm bereitzustellen, müssen sie es für alle Plattformen bereitstellen. Zum Beispiel würde ein Windows-JDK benötigt, um Launcher für Windows x86, ia64, amd64, Linux / Unix bereitzustellen kann einen Launcher teilen, da sie alle share shell-Skripte verwenden. Dann die Frage ist, zeigt Sonne einen Verpacker für Mac? Es passt einfach nicht, Sie sollten auf jeden Fall in Tools wie installywhere und install4j schauen, sie alle enthalten Java-Launcher.
Sie können autoit verwenden, um sehr schnell eine exe mit einem benutzerdefinierten Symbol zu erstellen, das professioneller aussieht als nur eine .bat-Datei.
Tags und Links java batch-file