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:
 

turtle

Top Contributor
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.
 

Chloroplast

Bekanntes Mitglied
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 :D)
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 :D[/EDIT]
 
Zuletzt bearbeitet:

Goldi

Aktives Mitglied
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
 
T

tummo

Gast
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
 

turtle

Top Contributor
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

Goldi

Aktives Mitglied
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?
 

Chloroplast

Bekanntes Mitglied
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
 

Sen-Mithrarin

Gesperrter Benutzer
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
 

Goldi

Aktives Mitglied
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 :D:

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 :oops:: 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
 

turtle

Top Contributor
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:

Sen-Mithrarin

Gesperrter Benutzer
@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:

Goldi

Aktives Mitglied
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
 

turtle

Top Contributor
@Sen-Mithrarin
Du hast natürlich Recht und mein Post war wohl missverständlich. :oops:

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:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
sasnitzer java augensumme von zwei würfeln ist 1 Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben