Я думаю, що потрібно написати останню частину цього підручника, щоб показати, як розгорнути (запакувати та опублікувати) AddressApp.
Частина 7: Зміст
- Розгортання нашого JavaFX додатку у вигляді упаковки, що залежить від платформи (native package) з використанням плагіна е(fx)clipse.
Що таке розгортання
Розгортання - це процес упаковки і доставки програмного забезпечення до користувача. Це важлива частина процесу розробки ПЗ, тому що тут відбувається перший контакт користувача з нашим додатком.
Java рекламується під слоганом “Написано одного разу, працює скрізь” для того, щоб проілюструвати кросплатформову перевагу даної мови програмування. В ідеалі, це означає, що наш Java додаток запуститися на будь-якому пристрої, де встановлена віртуальна машина Java (JVM).
У минулому, досвід користувача при установці Java додатку не завжди був гладким. Якщо у користувача в системі не була встановлена необхідна версія Java, він перенаправлявся для її інсталяції. Це призводило до деяких труднощів: до необхідності мати права адміністратора, до виникнення питань сумісності версій Java, і т.д.
На щастя, JavaFX надає нову опцію розгортання, яка має назву упаковка, що залежить від платформи (native package) або “Автономна упаковка додатку” (Self-Contained Application Package). Нативна упаковка - це пакет, що містить разом Java-додаток і середовище виконання Java для конкретної платформи.
Офіційна документація по JavaFX від Oracle містить вичерпне керівництво для всіх можливих варіантів розгортання JavaFX додатків.
В цій статті я покажу, як створити “нативну упаковку” за допомогою додатку Eclipse та плагіна e(fx)clipse.
Створення нативної упаковки
Мета полягає у створенні автономно-упакованого додатку, розміщеного в одній директорії на комп'ютері користувача. Як приблизно буде виглядати результат для нашого додатку на Windows, можна подивитися нижче:
Папка app
містить дані нашого додатку, а папка runtime
- платформо-залежне середовище виконання.
Для того, щоб зробити цей процес більш комфортним для користувача, ми надамо йому програму-інсталятор:
exe
-інсталятор для Windows;dmg
-інсталятор (перетягни й відпусти, drag and drop) для MacOS.
Плагін e(fx)clipse допоможе нам згенерувати нативну упаковку та інсталятор.
Крок 1 - Редагуємо файл build.fxbuild
Файл build.fxbuild
використовується плагіном e(fx)clipse для генерації файлу, який буде використовуватися інструментом збірки Ant. (Якщо у вас немає файлу build.fxbuild
, створіть новий JavaFX проект в додатку Eclipse та скопіюйте згенерований файл.)
-
Відкрийте файл
build.fxbuild
з кореневої папки вашого проекту. -
Заповніть всі поля, помічені зірочкою. Для MacOS: не використовуйте пробіли в назві додатку (в полі Application Title) оскільки це, здається, приводить до проблем).
-
Виберіть значення формату упаковки: для Windows -
exe
, для MacOS -dmg
, для Linux -rpm
. -
Натисніть на посилання
Generate ant build.xml only
праворуч.
-
Перевірте, чи створилась нова папка
build
з файломbuild.xml
.
Крок 2 - Додамо в інсталятор іконки
Ми можемо додати в наш інсталятор пару гарних зображень:
- AddressApp.ico для іконки інсталяційного файлу
- AddressApp-setup-icon.bmp для екрану привітання інсталятора
- AddressApp.icns - для інсталятора під MacOS
- AddressApp-volume.icns для інсталятора під MacOS
- Створіть наступні піддиректорії в папці
build
:
build/package/windows
(використовується лише в Windows)build/package/macosx
(використовується лише в MacOS)
-
Скопіюйте відповідні іконки з приведених посилань та розмістіть їх в призначені для них папки. В результаті це повинно виглядати так:
-
Важливо: Імена іконок повинні точно співпадати з іменем додатку (Application title), яке ви вказали в
build.fxbuild
:YourAppTitle.ico
YourAppTitle-setup-icon.bmp
YourAppTitle.icns
YourAppTitle-volume.icns
Крок 3 - Додаємо ресурси
Наша папка resources
не скопіюється автоматично. Ми повинні вручну додати її в папку build
:
- Створіть піддиректорію
dist
в папціbuild
:build/dist
- Скопіюйте папку
resources
(яка містить іконки для нашого додатку) вbuild/dist
.
Крок 4 - Редагуємо build.xml та включаємо в нього іконки
Плагін e(fx)clipse згенерував файл build/build.xml
, який готовий для виконання за допомогою Ant. Проте, поки що, наші іконки відображатись не будуть.
Оскільки e(fx)clipse не може повідомити (поки що?), що нам необхідно приєднати додаткові ресурси, такі як наша папка resources
, нам необхідно зробити це вручну, шляхом редагування build.xml
.
Відкрийте build.xml
та знайдіть тег <path id="fxant">
. Додайте однин рядок для ${basedir}
(це зробить наші іконки доступними):
build.xml - додаємо “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>
Нижче знайдете блок коду fx:resources id="appRes"
. Додайте однин рядок для наших ресурсів:
build.xml - додаємо “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>
Чомусь, номер версії не додається в fx:application
, який завжди встановлює версію нашого інсталятора як 1.0
(як вказали кілька чоловік в коментарях). Для виправлення цього, додайте номер версії вручну (дякую Марку, що вияснив це):
build.xml - додаємо “version”
<fx:application id="fxApplication" name="AddressApp" mainClass="ch.makery.address.MainApp" version="1.0" />
Тепер ми можемо запускати build.xml
через Ant. Це згенерує нам працездатний jar файл проекту. Але ми хочемо піти на крок далі і створити хороший інсталятор.
Крок 5 - exe інсталятор під Windows
За допомогою Inno Setup ми можемо створити для нашого додатку інсталятор під Windows у вигляді єдиного .exe
файлу. Створений .exe
інсталятор буде проводити установку програми на рівні користувача (не потрібні права адміністратора). Також буде створено ярлик (в меню або на робочому столі).
-
Завантажте Inno Setup версії 5 чи вище. Встановіть Inno Setup на ваш комп'ютер. Наш Ant скрипт буде використовуватися для автоматичної генерації інсталятора.
-
Вкажіть шлях до Windows, Inno Setup (наприклад,
C:\Program Files (x86)\Inno Setup 5
). Для цього, додайте Inno Setup до змінноїPath
в ваших змінних оточення. Якщо ви не знаєте де їх знайти, почитайте як встановити шляхи та змінні оточення в Windows. -
Перевантажте додаток Eclipse, та продовжуйте з кроку 6.
Крок 5 - dmg інсталятор для MacOS
Для створення dmg
інсталятора під MacOS ніяких додаткових інструментів не потрібно.
Примітка: Для того, щоб зображення інсталятора відображалося, ви повинні назвати це зображення так само, як і додаток.
Крок 5 - rpm інсталятор для Linux
Для інших способів встановлення додатку (msi
для Windows, rpm
для Linux) читайте цю статтю чи документацію від Oracle.
Крок 6 - Запускаємо build.xml
На останньому кроці ми запустимо файл build.xml
за допомогою Ant: виконайте клік правою кнопкою мишки на файлі build.xml
| Run As | Ant Build.
Збірка додатку займе трохи часу (близько хвилини на моєму комп'ютері).
Якщо все пройшло вдало, ви повинні знайти нативні збірки в папці build/deploy/bundles
. Ось так виглядає версія для Windows:
Файл AddressApp-1.0.exe
може використовуватися як єдиний файл для установки програми. Цей інсталятор скопіює нашу збірку в папку C:/Users/[yourname]/AppData/Local/AddressApp
.
Що далі?
Сподіваюся, що цей підручник допоможе вам почати працювати з JavaFX і з цього моменту ви зможете писати свої JavaFX проекти.
Я ціную будь-який зворотній зв'язок. Не соромтеся писати коментарі, якщо у вас є будь-які пропозиції або якщо вам щось не зрозуміло.