Ad un certo punto dopo aver fatto il programma bisogna darlo a chi ce lo ha chiesto... come?
Java è nato come linguaggio multipiattaforma e fin dall'inizio della sua storia la modalità per distribuire il software era quella di creare un file che gli utenti potessero eseguire su qualsiasi piattaforma soltanto avendo java installato. Questo approccio ha l'enorme vantaggio di permettere di avere un solo file che tutti coloro che hanno Java installato (su macOS, Linux o Windows) possono eseguire il programma. Ma tutti coloro che non hanno Java installato? La risposta è facile "lo installano".
Con l'arrivo di Java14 abbiamo però una alternativa in più: creare una applicazione che gira nativamente senza bisogno di avere Java installato. Questo grazie a nuovi strumenti e alla nuova licenza Open Source di Java.
Quella che andremo a creare è una applicazione per windows (per gli altri sistemi operativi cambia poco, per macOS ad esempio servono però le firme digitali di uno sviluppatore registrato) partendo da un progetto java non modulare (non deve esserci un file chiamato package-info.java).
Configurazione dell'ambiente
Per fare questo lavoro ci servono alcuni strumenti e di organizzare delle cartelle:
I pezzi di testo colorato cono importanti: se usarte dei percorsi diversi dovete scrivere il percorso che usate, in questo esempio metteremo quasi tutto sulla scrivania.
- Utilizziamo Eclipse 2024-03 o una versione successiva
- Scarichiamo il package "Full jdk" (contiene anche javaFX) versione 21 di Liberica nel formato zip, lo scompattiamo nella cartella c:\java\jdk-21
- creiamo una cartella vuota chiamata componenti sulla scrivania
Raccogliere i file
Da Eclipse, dopo aver selezionato il nostro progetto selezionaiamo il menu "/file/export" poi nel gruppo "java" prendiamo "JAR file", nel pannello "JAR File Specification" facciamo attenzione ad aver spuntato "Export generated class files and resources" e nella sezione "Select the resource to export" selezionaiamo tutto ciò che c'è nella cartella src (attenzione che per default le immagini e simili non sono selezionate) registriamo il file jar chiamandolo applicazione.jar nella cartella componenti creata prima.
Serve anche una icona per l'applicazione, deve essere in formato "ico" ma esistono anche on-line diversi convertitori, mettiamo anche questa immagine sulla scrivania e la chiamiamo icona.ico
Creazione del pacchetto
Per poter proseguire ci serve di sapere il nome completamente qualificato (sarebbe a dire quello composto dal pacchetto e il nome della classe) della classe che contiene il main del programma, nel nostro esempio è it.aspix.applicazione.Principale
A questo punto proviamo a vedere se il file jar contiene tutto quello che ci serve.
Aprire il prompt dei comandi di Windows nella scrivania (il prompt dovrebbe finire
con "Desktop>") e poi scrivere
c:\java\jdk-21\bin\java -cp componenti\applicazione.jar
it.aspix.applicazione.Principale
il programma deve avviarsi.
Non resta che fare il pacchetto servendoci di jpackage! Sempre con il Prompt dei comandi aperto nella cartella Desktop: attenzione che il comando è tutto su una riga, senza "a capo" nel mezzo!
c:\java\jdk-21\bin\jpackage --name nomeApp --app-version 1.0
--icon icona.ico --type app-image
--input componenti --dest compilato
--add-modules javafx.controls,javafx.media,javafx.fxml,javafx.web
--main-class it.aspix.applicazione.Principale
--main-jar applicazione.jar