Nelle parti fionali di questa serie di tutorial mostreremo come effettuare il deploy (ovver come comporre il package e come distribuirlo) della nostra AddressApp.
Argomenti nella sezione 7
- Distribuire la nostra applivazione JavaFX come un Package Nativo con e(fx)clipse
Cos’è il Deployment
Il deplyoment è il processo di impacchettamento e distribuzione verso gli utenti del software che abbiamo sviluppato. Si tratta di una parte cruciale del processo di sviluppo poichè costituisce il primo contatto che gli utenti avranno con il nostro software.
Java viene pubblicizzato con lo slogan Write Once, Run Anywhere (scrivi una volta, esegui ovunque) per illustrare i benefici multi-piattaforma del linguaggio Java. Idealmente questo significa che la nostra applicazione Java puà essere eseguita su qualsiasi dispositivo equipaggiato con una Java Virtual Machine (JVM).
In passato, la user experience per l’installazione di applicazioni Java non sempre filava liscio. Se l’utente non disponeva della versione richiesta di Java sul proprio sistema, veniva prima indirizzato sull’installazione. Questo conduceva ad alcune difficoltà, ad esempio la necessità di disporre di diritti di amministrazione, problemi di compatibilità tra le versioni di Java ecc.
Fortunatamente, JavaFX fornisce una nuova opzione di deploy chiamata Package Nativo (nota anche come Self-Contained Application Package).Un package nativo raggruppa sia il codice dell’applicazione sia l’ambiente di runtime Java specifico per la piattaforma di destinazione.
La documentazione JavaFX di Oracle contiene una guida esaustiva per tutte le possibili opzioni di deploy JavaFX.
In questo post vi mostrerò come creare un Package Nativo con eclipse e il **plugin e(fx)clipse **.
Creare un Package Nativo
L’obiettivo è di creare una applicazione auto-consistente in una singola cartella sul computer dell’utente. Ecco come questo apparirà per la nostra appliazione AddressApp (su Windows):
La cartella app
contiene i dati della nostra applicazione mentre la cartella runtime
contiene lo specifico ambiente Java di runtime.
Per rendere il tutto ancora più semplice per l’utente, forniremo un installer:
- Un installer per windows sotto forma di file
exe
- Un installer (drag and drop) per MacOS sotto forma di
dmg
(drag and drop)
Il plugin e(fx)clipse ci aiuterà a generare il package nativo e l’installer.
Passo 1 - Editare build.fxbuild
Il file build.fxbuild
viene utilizzato da e(fx)clipse per generare un file che verrà utilizzato dal tool Ant. (Se il file non esiste ancorabuild.fxbuild
, create un nuovo Java FX Project in Eclipse e copiate il file generato.)
Aprite il file
build.fxbuild
dalla cartella root del progetto.Compilate tutti i campi contenenti un asterisco. Per MacOS: Non utilizzare spazi nel titolo dell’applicaione dato che potrebbero causare problemi.
Come Packaging Format scegliete
exe
per Windows,dmg
per MacOS, oppurerpm
per Linux.Clickate sul link
Generate ant build.xml only
(che so trova sul lato destro).Verificate che la nuova cartella
build
e il filebuild.xml
siano stati creati.
Passo 2 - Aggiungere le incone dell’ Installer
Vorremo avere delle icone carine per il nostro installer:
- AddressApp.ico per l’icona del file dell’installer
- AddressApp-setup-icon.bmp per l’icona splash screen dell’installer
- AddressApp.icns per l’icona dell’installer per Mac
- AddressApp-volume.icns per l’icona desktop Mac
- Create le seguenti sotto-cartelle nella cartella
build
:build/package/windows
(utilizzata solo per windows)build/package/macosx
(utilizzata solo per macos)
- Copiate le icone sopra dentro le sottocartelle corrispondenti. Adesso dovrebbe apparire così:
- Importante: Il nome delle icone deve corrispondere esattamente al campo Application title che avete specificato nel file
build.fxbuild
:YourAppTitle.ico
YourAppTitle-setup-icon.bmp
YourAppTitle.icns
YourAppTitle-volume.icns
Passo 3 - Aggiungere il contenuto della cartella Resources
La nostra cartella resources
non viene copiata automaticamnte. Dobbiamo aggiungerla manualmente alla cartella build:
- Create la seguente sotto-cartella dentro
build
:build/dist
- Copiate la cartella
resources
(contenente le immagini della vostra applicazione) dentrobuild/dist
.
Passo 4 - Editare build.xml per includere le icone
E(fx)clipse ha generato un file build/build.xml
che è pronto per essere dato in pasto al tool Ant, ma le icone e le risorse del nostro installer non funzionerebbero.
Dato che non è possibile (per il momento) istruire e(fx)clipse per includere risorse addizionali alla nostra cartella resources
e le icone degli installer che abbiamo aggiunto sopra, dobbiamo modificare manualmente il file build.xml
:
Aprite build.xml
e cercate l’elemento fxant
. Aggiungete una riga per la ${basedir}
(ciò renderà disponibili le icone degli installer):
build.xml - add “basedir”
<path id="fxant"> <filelist> <file name="${java.home}\..\lib\ant-javafx.jar"/> <file name="${java.home}\lib\jfxrt.jar"/> <file name="${basedir}"/> </filelist> </path>
Cercate il blocco fx:resources id="appRes"
più in basso nel file, e aggiungete la riga per le resources
:
build.xml - add “resources”
<fx:resources id="appRes"> <fx:fileset dir="dist" includes="AddressApp.jar"/> <fx:fileset dir="dist" includes="libs/*"/> <fx:fileset dir="dist" includes="resources/**"/> </fx:resources>
Per qualche motivo il numero di versione non viene aggiunto in fx:application
, pertanto l’installer apparirà sempre con la versione di default 1.0
(come puntualizzato da alcune persone nei commenti). Per sistemre la cosa, aggiungete manualmente il numero di versione (grazie a Marc per la segnalazione):
build.xml - add “version”
<fx:application id="fxApplication" name="AddressApp" mainClass="ch.makery.address.MainApp" version="1.0" />
A questo punto potremmo già lanciare il build.xml
con Ant. Questo genererebbe il jar eseguibile del progetto. Ma vogliamo fare un passo avanti e creare un pratico installer.
Passo 5 (WINDOWS) - Installer ‘exe’ per Windows
Con Inno Setup possiamo creare un Installer Windows della nostra applicazione come un singolo file.exe
. Il risultante .exe
eseguirà una installazione con i permessi dell’utente (non sono richiesti i privilegi di amministratore). Inoltre verrà creato un collegamento (nel menù o sul desktop).
Scaricate Inno Setup 5 o superiore. Installate Inno Setup sul vostro computer. Il nostro script Ant script lo utilizzerà automaticamente per generare l’installer.
Istruite Windows sul path di installazione di Inno Setup (ad es.
C:\Program Files (x86)\Inno Setup 5
). Per farlo, aggiungete Inno Setup alla variabilePath
tra le variabilidi ambiente di Windows. Se non sapete dove si trova, potete leggere How to set the path and environment variables in Windows.Riavviate Eclipse e continuate con il passo 6.
Passo 5 (MAC) - MacOS dmg Installer
Per creare un installer drag-and-drop dmg
per Mac OS, non è richiesto nessun ulteriore tool.
Nota: per fare in modo che l’immagine dell’installer funzioni il nome dell’applicazione e quello dell’immagine devono coincidere.
Passo 5 (LINUX etc.) - Linux rpm Installer
Par altro opzioni del package (msi
per windows, rpm
per Linux) consultate questo blog post sui package nativi oppure la documentazione oracle .
Passo 6 - Lanciare il build.xml
Il passo finale consiste nell’eseguire il build.xml
con Ant: Right-click sul file build.xml
| Run As | Ant Build.
Il building ci impiegherà un pò (circa un minuto sul mio pc).
Se va tutto a buon fine, dovreste trovare il bundle in formato nativo nella cartella build/deploy/bundles
. Questo è come dovrebbe apparire nella versione per Windows:
Il file AddressApp-1.0.exe
può essere utilizzato per installare l’applicazione. L’installer copierà il bundle in C:/Users/[yourname]/AppData/Local/AddressApp
.
Cosa c’è dopo?
Spero che questo tutorial vi sia stato d’aiuto per iniziare con JavaFX e che sarete in grado di scrivere il vostro progetto JavaFX a partire da adesso.
Ogni feedback sarà apprezzato. Sentitevi liberi di lasciare un commento se avete dei suggerimenti o se qualcosa non vi è chiaro.