Auslieferung von Java-Programmen ... wie?

Goldi

Aktives Mitglied
Hallo zusammen,

ich möchte gerne wissen, wie ich ein fertiges, funktionstüchtiges und auf Herz und Nieren getestetes Java-Programm ausliefern kann. Ich habe einiges darüber gelesen und finde aber nicht so wirklich die passende Lösung. Die Ultima Ratio: Java Forum 😉.

Ich bin kein hauptberuflicher Programmierer. Bei dem was ich bastle, geht es eher um Anwendungen wie z. B. ein Soundlabor für die Jungmusiker meines Musikverbandes usw. - also nichts Kommerzielles, ich mach das nicht hauptberuflich (sonst wüßt' ich ja wie's geht :lol🙂.

Ich suche nach einem Weg, der für die Endanwender möglichst wenig Umstände (und Fehlermöglichkeiten) bereitet der aber - im Java-Sinne - plattformunabhängig ist. Damit ihr nicht bei A & E anfangen müsst, notiere ich hier noch schnell die Gedanken, die ich mir schon gemacht habe - die eigentliche Frage ist aber schon gestellt ...

1. Die class-Files als JAR und ein BAT-File mit dem Befehl
Code:
java -cp Soundlabor.jar Soundlabor
ausliefern. Zu der BAT-File gibt's eine Verknüpfung mit einem hübschen Icon, das sich der Endanwender auf's Desktop kopieren soll. Abgesehen davon, dass das nur eine Windows-Lösung ist: Hat denn jeder, der eine JRE auf der Kiste hat, auch den java-Befehl oder gibt's den nur mit der JDK?

2. WebStart: Wenn ich mein Java-Handbuch richtig verstanden habe, wäre das zwar eine super Lösung, die die Vorteile von Applets und Applikationen vereint, aber dazu bräuchte ich eine eigene Website, richtig? Ich habe einen Laptop und Eclipse - das ist alles ;-) Oder gäbe es über WebStart auch eine Offline-Lösung, quasi auf CD gebrannt und ab die Post? Oder reicht es, wenn ich mir z. B. über WikiSpace eine Page baue um meine Programme anzubieten - wie viel Spezialist muss man für WebStart sein?

3. Applets: Ich möchte mich nicht unbedingt einschränken (wie z. B.: Swing, Dateizugriffe etc.). Außerdem funktioniert bei mir ein Applet z. B. nur, wenn ich die Sicherheitseinstellungen unanständig niedrig drehe. Das will ich meinen "Kunden" nicht zumuten.

4. Eine Setup-Datei kreieren - wobei ich davon nun gar keine Ahnung habe (aber man lernt ja gern dazu). Nur was ist dann mit der Plattform-Unabhängigkeit?

Besten Gruß
Goldi

PS: Wie kann man hier eigentlich ein "Dankeschön" verteilen - ich finde den Knopf nicht :autsch:
 
ich finde eine JAR Datei schon ganz gut.

Danach kann man ziemlich einfach mit einem sogenannten Wrapper (wie beispielsweise JSmooth eine EXE bauen lassen, die dann die JAR startet.

Dabei kann man eine JRE MIT der JAR zusammen liefern, so das der Endanwender noch nicht einmal JAVA installiert haben muss.
 
wenn du das ganze als -jar exportierst sollte das system, auf dem es ausgeführt wird, die datei als JAva-Archivdatei erkennen und einfach per mausklick ausführen. ganz ohne batch und co. (nur hat man dann kein Icon 😀)
falls die hauptzielgruppe Windows user sind, könnte man noch die gesamten java-binarys mit dazupacken... dann allerdings wieder mit ner batch datei.. (und klein wäre das auch nicht mehr), würde dafür aber auch auf windows rechnern ohne installiertes java laufen (man könnte bestimmt so ne lösung auch beim mac und/oder linux machen, aber da ist mein latein am ende)

[EDIT]hoppala, der war schneller 😀[/EDIT]
 
Zuletzt bearbeitet:
Hi!

Vielen Dank schon mal für die informativen Antworten :toll:. Das mit JSmooth muss ich noch ausprobieren, aber mit der einfachen Verteilung eines runable JAR-Archives hatte ich schon erste Erfolge :applaus: - auf meinem Rechner. Bleibt noch eine Frage:

Der Endanwender muss ja zum Starten des Programms
Code:
java -jar xyz.jar
aufrufen - per Eingabeaufforderung oder Batch-File mit Verknüpfung auf dem Desktop (sei jetzt mal dahingestellt). Was ist nötig, damit der Rechner des Endanwenders diesen java-Befehl kennt? Brauchts da die JDK oder reicht auch JVM/JRE? Mit anderen Worten: Ist es so, dass jede Kiste, die Internetseiten mit Java-Applets beispielsweise anzeigen kann, auch den java-Befehl zum Starten einer Applikation kennt?

Das wäre noch insofern interessant, weil ich meinen "Kunden" dann ja sagen muss, was sie noch alles installieren müssen.

Besten Gruß
Goldi
 
Was ist nötig, damit der Rechner des Endanwenders diesen java-Befehl kennt? Brauchts da die JDK oder reicht auch JVM/JRE?
JAVA_HOME und PATH sind ordentlich auf ein vorhandenes JRE gesetzt - das JRE reicht
Ist es so, dass jede Kiste, die Internetseiten mit Java-Applets beispielsweise anzeigen kann, auch den java-Befehl zum Starten einer Applikation kennt?
nein
Das wäre noch insofern interessant, weil ich meinen "Kunden" dann ja sagen muss, was sie noch alles installieren müssen.
oder du lieferst das JRE mit - dann muss der Kunde gar nichts machen
 
Das mit JSmooth muss ich noch ausprobieren,
Ja, mach dies bitte...

Du kannst nämlich detailliert festlegen, wie die EXE feststellen soll, mit welcher JRE die eigentliche JAR starten soll.
Da kann natürlich angegeben werden, JAVA_HOME auszuwerten oder die Registry oder halt auch die JRE, die du selbst mit bringst. Letzteres hat den Vorteil, das der Endanwender kein Java installieren muss.
Ich habe mal einen Screenshot angehängt, damit du siehst was ich meine.
 

Anhänge

  • jsmooth.png
    jsmooth.png
    79,6 KB · Aufrufe: 46
Ja, hab JSmooth jetzt runtergeladen und ausprobiert. Ich bin schon ein Stück weit begeistert. Schade nur, dass das eben nicht mehr plattform unabhängig ist. Aber man kann ja beides anbieten: Die EXE und für die nicht Windowsler eine JAR.

Auch das hört sich mächtig interessant an:
... oder du lieferst das JRE mit - dann muss der Kunde gar nichts machen

Gott sei Dank sind wir hier im Anfänger-Forum, dann komm ich mir nicht ganz so blöd vor :toll:: Wie geht das? Einfach die JRE's für alle Betriebssysteme bei java.com runterladen und als ZIP mit liefern, so dass der Endanwender halt den Setup-Knopf drückt? Oder verstehe ich den Teilsatz "... dann muss der Kunde gar nichts machen" richtig und es gibt was Eleganteres?
 
alos.. die java dateien (bei windows) sind recht viele dateien. unter andermen die java.exe. wenn du beim istallierten java die JVM über den java befehl in der konsole startest, führt der aufruf zu einem installierten java.

Die Dateien kannst du auch getrennt liefern, und über ne batch oder exe aufrufen.
ist allerdings im vergleich zur programmgröße eine sehr grße endgröße
 
wow ... was für einen aufwand sich manche machen nur simplen java-bytecode auszuliefern

punkt 1 : wenn du schon in java entwickelst setzt du damit vorraus das dein user java auf seiner kiste installiert hat
ergo : es reicht die JAR auszuliefern, denn beim setup wird .jar mit java automatisch verknüpft
[ot]bevor der einwand kommt : bei jemanden der selbst freiwillig unix nutzt gehe ich von aus das dieser weis wie man ein jar startet, oder wie man es korrekt seinem binary zuweist[/ot]

punkt 2 : sicher, man kann es dem user so gewohnt wie möglich machen : exe-warper für windows
gibt unzählige, einige auch recht umfangreiche und manche sogar kostenpflichtig
zu jsmooth : veraltet, nutz was modernes wie launch4j

punkt 3 : wenns in die richtung "auf disk brennen" geht : du gehst grundsätzlich also immer noch von aus das der user java korrekt installiert hat, aber im notfall falls nicht auch nicht in der lage dazu wäre sich ausm netz die aktuelle version zu ziehen ...
tja ... dann hast du dir damit selbst quasi das bein gestellt und zwingst dich selbst irgendwie dann auf jedenfall das nötige JRE mitzuliefern


das nur mal so zu dem was geflogen kam
 
Hi Sen-Mithrarin!

Danke für die Zusammenfassung. Du hast recht: Man kann schon viel Aufwand betreiben. Aber wie bei allem muss man es einmal gecheckt und probiert haben, um die Vor- und Nachteile kennen- und einwerten zu lernen. Darum bin ich recht dankbar für die vielen guten Hinweise der Kollegen in dem Thread, komme aber nach der Lektüre und viel Probieren auch auf den Trichter, dass eine ausführbare JAR-Datei die beste Variante ist.

Nur 2 Dinge muss ich noch wissen, weil ich es nirgends zum Nachlesen finde - dann gebe ich Ruhe 😀:

1. Wie kann ich die JRE mitliefern - wie geht das (ich weiß es echt nicht :bahnhof🙂?

2. Zu aller Neulings-Unbeholfenheit i. S. Java stell' ich mich hier im Forum ja auch noch etwas trottelig an 😳: Es heißt immer: "Hat x Danke erhalten", "hat x Danke gegeben". Ein Danke gehört sich bei so viel "Support" - aber wo ist der Danke-Knopf? Wie kann ich ein Danke "geben"? Ich find's nicht!

Herzlichen Gruß
Goldi
 
Wie lieferst du das JRE mit?
Du musst lediglich in deinem Projekt einen Unterordner jre, also parallel zu src und bin, anlegen und darin die JRE kopieren, die du haben möchtest.

Und ja es gibt eine Fülle weiterer Wrapper, die das ebenfalls machen, da aber meine Anforderung nie sehr kompliziert waren... Passt schoa.

Das Argument aber, es wäre alles sehr gross, stimmt schon. Durch das Bundling mit der JRE wächst meine simple JAR von ca. 1 Kb auf eine EXE von ca. 440Kb!
 
Zuletzt bearbeitet:
@turtle
da stimmt weder die einheit noch der zahlenwert

selbst wenn man unter windows nur den installer mit liefert sind das schon 25MB
ne voll installierte JRE kommt auf über 100MB, gleich ob Windows oder Unix

oder was hast du dazugepackt das dein jar MIT JRE nur knapp 500kB groß wird ?


//EDIT
@TO
ich glaube für danke muss man mindestens 10 posts oder so haben, sonstn sollte er eigentlich unten rechts zu finden sein
 
Zuletzt bearbeitet:
An alle zusammen!

Vielen herzlichen Dank für das spitzenmäßige Coaching!! Ein neuer Stern am Java-Himmel ist geboren, der seine Applikationen jetzt auch verteilen kann ... ok, ich übe noch :lol:

Muss wohl so sein mit der Mindest-Anzahl an Posts, weil just in dem Moment seh ich den Danke-Knopf auch, der war vorher noch nicht da. :toll: Also, ich mach mich an die Arbeit: Danke, danke, danke, ...

Besten Gruß
Goldi
 
@Sen-Mithrarin
Du hast natürlich Recht und mein Post war wohl missverständlich. 😳

Die generierte EXE ist ca. 440 Kb gross.
Alles zusammen, also EXE + jre + jar + Icon ist bei mir 82.903.239 Bytes, also ungefähr 79 MB.
 
Zuletzt bearbeitet:

Zurück
Oben