Welchen Packager soll ich verwenden.

Joob

Top Contributor
Mit meinem Java Projekt bin ich jetzt erst mal klar und möchte nun eine Distribution erstellen.

Ich verwende javaFX und

Auszug aus der Gradle Build

implementation 'org.json:json:20220320'

implementation 'com.jcraft:jsch:0.1.55'

implementation 'commons-net:commons-net:3.8.0'
implementation 'net.lingala.zip4j:zip4j:1.3.2'
implementation 'com.googlecode.soundlibs:jlayer:1.0.1.4'
implementation 'de.sciss:jump3r:1.0.5'
implementation 'com.lowagie:itext:4.2.0'
implementation 'net.sf.jasperreports:jasperreports:6.19.0'

Bisher baue ich das Setup mit Inno Setup
Ich hatte auch jarToexe probiert, das lief aber für mich nicht gut.

Jetzt frage ich mich mit welchem Packager ich eine lauffähige Version für Win.PCs erstellen soll.

Ich würde gerne ein fatjar, ich hoffe ich verwende die Begrifflichkeit richtig,
also mit meiner Setupdatei alle für meine Anwendung notwendigen Bestandteile mitgeben,
so das keine Abhängigkeiten zum Rechner bestehen auf dem installliert wird.

Ich möchte es vermeiden wie es mir so oft schon passiert ist, das ich nach ganz viel Arbeit feststellen
muss das das so nicht geht und ich alles neu machen muss.

Ich hoffe ich habe an alles gedacht um mir einen Rat zu geben.
 

KonradN

Super-Moderator
Mitarbeiter
Was ein üblicher Weg ist, ist die Erstellung eines Images mit JLink (Ab Java 9) und eine App-Images mit JPackage (Ab Java 14). Damit hast Du eine Verzeichnisstruktur, in der dann ein Startscript (bei dem Image von JLink) oder eine exe (beim App-Image) liegt. Alternativ kann JPackage auch ein MSI erstellen, das dann zur Installation auf Zielrechnern verwendet werden kann.

Ansonsten kann an sich prinzipiell auch überlegen, mittels GraalVM und native-image eine exe zu erzeugen. Das setzt aber dann einiges mehr auf dem Build System voraus.
 

Joob

Top Contributor
GraalVM habe noch nicht gesehen.


Hört sich aber spannend an.
Was meinst du mit einiges voraus auf dem BuildSystem. Ich verwende Java 17,
Kann ich etwas im Gradle Build integrieren ?

Java on Truffle scheint das richtige zu sein,​

wenn ich nicht wieder alles missverstanden habe.
Erstellt eine komplette Laufzeit mit jre, das habe ich schon mal gemacht erfordert aber viele voneinander unabhängige Schritte,
das würde ich gerne vermeiden.

Und dann ist da noch:
java on truffle ist experimental on Windows.
Mit was habe ich da zu rechnen ?
 

KonradN

Super-Moderator
Mitarbeiter
Also bezüglich Java on Truffle:
Java on Trufle is an experimental technology in GraalVM, and peak performance is currently 2-3x slower than HotSpot.

Das würde ich also nicht in Betracht ziehen.

Was meinst du mit einiges voraus auf dem BuildSystem.
To start using Native Image on Windows, install Visual Studio and Microsoft Visual C++ (MSVC).
Dabei ist wichtig, genau auf die richtige Version zu achten. Ich hatte das Glück, dass ich es zu einem Zeitpunkt getestet hatte, wo ein neues Visual Studio schon eine gewisse Zeit draußen war nur eben das GraalVM wollte zwingend die vorherige Version und war einfach nicht dazu zu bringen, auch mit der neuen Version zu laufen.

Mein Weg ist übrigens immer das App-Image, das ich baue. Dazu habe ich in meinen Maven Projekten JLink und JPackage mit drin (Ersteres indirekt über das Moditect Plugin - aber unter dem Strich wird da auch JLink aufgerufen).

JLink / JPackage sind die offiziellen Wege, die üblicherweise genommen werden. GraalVM hat aus meiner Sicht auch den Nachteil, dass es halt der Java Entwicklung hinterher läuft (Ist aber auch schon auf dem JDK 17 Stand - also nicht ganz so wild. Aber es kommen halt von Zeit zu Zeit Neuerungen ... Project Loom ist jetzt im Java 19 mit drin als erste Preview, Spring 6 soll erste Unterstützung dazu bekommen ... das wäre ein Beispiel, das man evtl. doch "up to date" sein will).
 

Joob

Top Contributor
Hallo erst mal, schön mal wieder von dir zu hören.
Ich hatte in den letzten Monaten total viel damit zu tun, meine App umzubauen.
Vielleicht erinnerst Du dich.

OK, dann werde ich mich erst mal mit JLink / JPackage beschäftigen.
Die kann ich doch auch im Gradle Buid einbauen oder?

Kann ich denn denn dann folgendes erreichen:
Innerhalb des Gradle Build alles so konfigurien
das ich nach dem Build aus Netbeans eine komplett lauffähige Setup für fremde Rechner
in meinem BuildVerzeichniss habe ?
 

KonradN

Super-Moderator
Mitarbeiter
Die kann ich doch auch im Gradle Buid einbauen oder?
Ja, das geht auf jeden Fall. Mit Gradle habe ich diesbezüglich aber keine tieferen Erfahrungen.
https://badass-jlink-plugin.beryx.org/releases/latest/ dürfte da ein guter Startpunkt sein (Wobei ich nicht sicher bin, ob das immer noch das bevorzugte Plugin ist. Damals schien es mir so).

Kann ich denn denn dann folgendes erreichen:
Innerhalb des Gradle Build alles so konfigurien
das ich nach dem Build aus Netbeans eine komplett lauffähige Setup für fremde Rechner
in meinem BuildVerzeichniss habe ?
Ja, das ist der Vorteil von Maven und Gradle. Die IDE ist dann egal - die IDE startet lediglich den externen Build Vorgang. Und am Ende wird dann das Ergebnis bereit gestellt. Wenn ich mich recht erinnere, dann ist es das ./build/ Verzeichnis, das alle Ergebnisse enthält. Und da sollten auch die gebauten Dinge vom jlink / jpackage landen (Das würde ich nicht ändern, da dies ja auch beim clean Lauf gelöscht werden soll und so.)
 

KonradN

Super-Moderator
Mitarbeiter
Ja, dann leg ich mal los.
Hast Du Interesse am Fortschritt ?
Es wäre natürlich super, wenn du später Deine Lösung oder Deinen Fortschritt posten würdest. Ich selbst werde so Gradle Dinge in absehbarer Zukunft nicht benötigen, aber Andere können ja über die Suchfunktion auch über den Thread „stolpern“.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
S Interface Welchen Interface Stil favorisiert ihr? (usability) Allgemeine Java-Themen 17
J Welchen Obfuscator nehmen? Allgemeine Java-Themen 11
D welchen line brak benutzt ein geg. textfile Allgemeine Java-Themen 3
H String - Hat welchen Zeichensatz? Allgemeine Java-Themen 6
B Log4j --- Welchen Appender, wie konfigurieren Allgemeine Java-Themen 3
B welchen port muss ich angeben? Allgemeine Java-Themen 11
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
M Welchen Reader? Allgemeine Java-Themen 8
K Welchen Editor? Allgemeine Java-Themen 31
N Ermitteln welchen Typ ein "Object"-Objekt enthält Allgemeine Java-Themen 11
S welchen editor Allgemeine Java-Themen 5
S Welchen Editor soll man für Graphische lösungen benutzen Allgemeine Java-Themen 2
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
Noahscript Konto anlegen um JDK herunterzuladen? Was soll das? Allgemeine Java-Themen 1
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
J Message Box soll bei bestimmter Zeit angezeigt werden Allgemeine Java-Themen 19
M 4 Gewinnt KI macht nicht, was sie soll.. Allgemeine Java-Themen 1
J Überschriebene Funktion soll nicht die super Funktion aufrufen Allgemeine Java-Themen 4
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
C Eclipse einstellen, dass eine bestimmte JDK benutzt werden soll Allgemeine Java-Themen 3
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
R serielles Terminal mit Java: Cursor soll blinken Allgemeine Java-Themen 4
L Wie genau soll ein Klassendiagramm sein Allgemeine Java-Themen 4
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
S Bachelorarbeit , soll ich ? soll ich nicht? Allgemeine Java-Themen 23
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
H JFileChooser soll NUR Windows-Netzwerkumgebung anzeigen Allgemeine Java-Themen 2
I JTextArea soll nur drei Zeilen anzeigen Allgemeine Java-Themen 1
K Methode soll neue Buttons erstellen Allgemeine Java-Themen 5
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
J java-applikation-1.jar soll java-applikation-2 aufrufen.jar Allgemeine Java-Themen 5
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
S Threads ServerSocket-Thread soll schlafen, bis er gebraucht wird Allgemeine Java-Themen 2
T Welches Tuturial soll ich paralell lesen ? Allgemeine Java-Themen 3
G Jar-File soll eignen *.jar Namen ausgeben Allgemeine Java-Themen 10
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
L JAR verändern - JAVAC soll einfach nur kompilieren, ohne Prüfungen Allgemeine Java-Themen 16
C Abstrakte Klasse soll Methode aus Unterklasse aufrufen Allgemeine Java-Themen 3
D Input/Output Datei ausgewählt - Datei soll nicht existieren Allgemeine Java-Themen 5
S exec( "cmd /c") aber Konsole soll offen bleiben Allgemeine Java-Themen 9
L Entscheiden, welcher Code ausgeführt werden soll Allgemeine Java-Themen 7
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
R FileChooser soll nur das File ausgeben Allgemeine Java-Themen 4
B Java soll Datei von Javascript empfangen Allgemeine Java-Themen 4
E Bitcode liegt vor und soll gespiegelt werden Allgemeine Java-Themen 4
B Scheduler soll bestimmten Job stoppen Allgemeine Java-Themen 4
H2SO3- jar soll eigenen namen(pfad) finden Allgemeine Java-Themen 12
J Main-Thread soll auf alleKinder Threads warten Allgemeine Java-Themen 5
B Thread soll anderen Thread beenden Allgemeine Java-Themen 5
R ANT Jar Task soll leere Verzeichnisse ignorieren..? Allgemeine Java-Themen 3
Developer_X JButton soll gar nichts machen Allgemeine Java-Themen 8
M Ein Array-Wert soll sich verändern, aber 2 tun es? Allgemeine Java-Themen 7
J Zweiter Prozess der alle x Sekunden etwas abfragen soll Allgemeine Java-Themen 2
G Was ist Ant und warum soll ich das brachen, wenn es IDEs gib Allgemeine Java-Themen 10
X Software soll einen Text vorlesen! Allgemeine Java-Themen 5
P Copiler soll nicht vorhandene Methoden ignorieren Allgemeine Java-Themen 2
G Apache soll mit SVN zusammenarbeiten Allgemeine Java-Themen 3
J double 3.0 soll ohne Nachkommastelle ausgegeben werden Allgemeine Java-Themen 12
B Programm soll auf die Eingabe vom Mouselistener warten. Allgemeine Java-Themen 19
S String soll Anführungszeichen enthalten. Allgemeine Java-Themen 2
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
Y Methode soll 2 Werte zurückliefern Allgemeine Java-Themen 7
ARadauer programm soll sich selbst ändern können Allgemeine Java-Themen 20
F Klasse soll sich selbst returnieren mit entsprechendem Typ. Allgemeine Java-Themen 15
U Programm soll sich nach update neustarten Allgemeine Java-Themen 30
A NullPointerException, Thread soll Thread steuern Allgemeine Java-Themen 2
MQue HintergrundFarbe des Buttons beim drücken soll bleiben Allgemeine Java-Themen 2
A equals() macht nicht, was es soll Allgemeine Java-Themen 4
E Java-Programm soll Java-Programm "fernsteuern" -wi Allgemeine Java-Themen 3
G Jar File soll anderes benutzen Allgemeine Java-Themen 3
Nils_Langner InputStream soll sich bei neuen Daten melden Allgemeine Java-Themen 2
Q Methode soll auf schließen eines Frames warten Allgemeine Java-Themen 4
S Log4J mit 2 Appender, einer soll nur INFO loggen Allgemeine Java-Themen 3
H Nur bis zur letzten Textzeile soll gelesen werden Allgemeine Java-Themen 4
G Was soll noch alles in Java kommen? Allgemeine Java-Themen 14
K Methode soll ein Array zurückgeben Allgemeine Java-Themen 4
M Ein Thread soll ein Textfeld (SWT) ändern Allgemeine Java-Themen 4
P Javaprogramm soll doppeltgeklickte Datei verarbeiten Allgemeine Java-Themen 22
B Thread soll auf Event warten, dann Daten an Klasse senden Allgemeine Java-Themen 2
R Thread soll auf MouseClick warten Allgemeine Java-Themen 2
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
S Java Programm soll im Hintergrund laufen (vgl. fork() bei C) Allgemeine Java-Themen 10
G To many Code? Was soll der scheiß? Allgemeine Java-Themen 11
T Soll ich meine Software als freeware zum download geben? Allgemeine Java-Themen 15
thE_29 Werden die SUN JVMs immer blöder oder was soll das. Allgemeine Java-Themen 11
T Klasse soll Object sein->um in JTabbedPane einzufügen Allgemeine Java-Themen 2
A Textfeld soll verschiedene Datumseingaben akzeptieren Allgemeine Java-Themen 5
1 Applet soll PDF von Servlet empfangen Allgemeine Java-Themen 3
H Wie stellt ein JTree fest, wo etwas eingehängt werden soll? Allgemeine Java-Themen 2
M Was soll ich benutzen? Java2D, Java3D, Swing, AWT?? Allgemeine Java-Themen 21
R EOFException was soll der ... Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben