Warum hab ich noch nie ein .jar Archiv gesehen?
-
Auch in Java geschriebene Programme wie zum Beispiel Eclipse selbst werden für verschiedene Plattformen ausgeliefert und unter Windows bekomme ich dann z.B. eine .exe.
Warum?
-
Keine Ahnung. *.jar ist ein ziemlich typisches Format fuer Java-Dateien. Dass du manche als .exe-Dateien siehst, liegt daran, dass sie extra fuer eine Plattform zu Maschinencode kompiliert wurden (der gcj kann das z.B.) oder Plattformabhaengige Komponenten verwenden (das macht Eclipse). Es gibt aber genug Java-Programme, die als JAR ausgeliefert werden.
-
Bei Eclipse ist die .EXE-Datei, so wie ich das sehe, nur ein Wrapper, damit der Windows-User auf etwas mit der Endung .exe klicken kann. Die eigentlichen Sachen liegen dann in .JAR-Archiven. Bei Linux bekomme ich auch noch ein Shell-Script zum starten der meisten Java-Anwendungen hinzu. Das ist ein wenig für die Bequemlichkeit, aber eigentlich nicht nötig.
Dass die Programme nativ kompiliert ausgeliefert werden, wäre mir neu.
-
Bei Eclipse kommt dann noch dazu, dass verschiedene SWT-Libraries mitgeliefert werden, da es sich hierbei sehr wohl um eine teils native Bibliothek handelt und dementsprechend unterschiedlich ist für unterschiedliche Plattformen. Oftmals ist es aber trotzdem die Bequemlichkeit eines Windows-Users, die einen Java-Entwickler dazu treibt einen Wrapper in Form einer Executable mitzuliefern, der dann halt das Java Archiv ausführt.
-
Aber eine exe ist da ein totaler overkill. Fuer win habe ich einfach eine .bat und fuer linux eben ein bash script. Aber eigentlich unnoetig, denn man kann einfach auf eine .jar doppelklicken und schon startet die Anwendung.
-
Hast recht, ab sofort werden wir nur mehr JARs ausliefern, aber ich hoffe halt, dass ich dich dann zitieren darf, wenn sich plötzlich, sozusagen aus heiterem Himmel, ein Kunde bei uns beschwert, dass irgendwas beim Deployment schiefgelaufen sein muss, weil da keine .exe Datei mehr ist. Danke für die Teilnahme an deinem reichhaltigen und dementsprechend kostbaren Erfahrungsschatz, danke!.
-
Die exe von eclipse dient unter anderen dazu einen schnelleren Start der Plattform vorzugaukeln. Z.B. kann die exe gleich zu Anfang einen Splashscreen mit Fortschrittsbalken einblenden, und das bevor die JVM und JRE bereit ist. Denn diese benötigt schon recht lange, wenn noch zusätzlich die ganze IDE hochfährt. Die Wartezeit bis der User endlich was zu Gesicht bekommen würde, wird durch die schnell startende Exe verkürzt.
Die Eclipse-Plattform selbst kann man auch ohne exe ausführen: startup.jar tuts auch. Nur hat man keinen Splashscreen.
Eclipse ist halt keine normale Java-Anwendung, sondern eine Plattform die z.B. ihren eigenen Classloader mitbringt usw. Da macht dann die Exe auch nichts mehr aus.
-
Artchi schrieb:
Z.B. kann die exe gleich zu Anfang einen Splashscreen mit Fortschrittsbalken einblenden, und das bevor die JVM und JRE bereit ist. Denn diese benötigt schon recht lange, wenn noch zusätzlich die ganze IDE hochfährt. Die Wartezeit bis der User endlich was zu Gesicht bekommen würde, wird durch die schnell startende Exe verkürzt.
Inzwischen gibt es auch mit reinem Java Möglichkeiten, einen Spash-Screen anzuzeigen, noch bevor die JVM lädt. ...Nur so als Ergänzung.
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/
-
Auch noch eine ergänzung von mir:
Ich benutze meist keine .EXE und auch keine .BAT Dateien. Wenn man eh ein Setup erstellt, dann kann man mit NSIS einfach Startmenü einträge erstellen lassen, die auf die .JAR Datei zeigen und sogar ein bestimmtest Symbol haben.
Wenn man ein Archiv für alle Platformen hat, weil mein keine Nativen .DLL oder Ähnliches benötigt, dann geht das natürlich nicht.
-
In dem Zusammenhang hatte ich letztens auch viel Spaß mit einem Java-Programm. Das wurde nur mittels kompilierter Installationsprogramme ausgeliefert. Das für Mac OS X war jedoch laufunfähig und das für Windows funktionierte unter Windows Vista ebenfalls nicht. Nur unter Windows XP konnte das Programm dann letztlich installiert werden. Da denkt man sich dann natürlich seinen Teil ...