Підручник з JavaFX (Українська)

Частина 7: Розгортання

Screenshot AddressApp Part 7

Я думаю, що потрібно написати останню частину цього підручника, щоб показати, як розгорнути (запакувати та опублікувати) 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, можна подивитися нижче:

AddressApp Native Package

Папка 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 та скопіюйте згенерований файл.)

  1. Відкрийте файл build.fxbuild з кореневої папки вашого проекту.

  2. Заповніть всі поля, помічені зірочкою. Для MacOS: не використовуйте пробіли в назві додатку (в полі Application Title) оскільки це, здається, приводить до проблем). fxbuild settings

  3. Виберіть значення формату упаковки: для Windows - exe, для MacOS - dmg, для Linux - rpm.

  4. Натисніть на посилання Generate ant build.xml only праворуч.
    generate ant build

  5. Перевірте, чи створилась нова папка build з файлом build.xml.

Крок 2 - Додамо в інсталятор іконки

Ми можемо додати в наш інсталятор пару гарних зображень:

  1. Створіть наступні піддиректорії в папці build:
  • build/package/windows (використовується лише в Windows)
  • build/package/macosx (використовується лише в MacOS)
  1. Скопіюйте відповідні іконки з приведених посилань та розмістіть їх в призначені для них папки. В результаті це повинно виглядати так:
    Installer Icons

  2. Важливо: Імена іконок повинні точно співпадати з іменем додатку (Application title), яке ви вказали в build.fxbuild:

    • YourAppTitle.ico
    • YourAppTitle-setup-icon.bmp
    • YourAppTitle.icns
    • YourAppTitle-volume.icns

Крок 3 - Додаємо ресурси

Наша папка resources не скопіюється автоматично. Ми повинні вручну додати її в папку build:

  1. Створіть піддиректорію dist в папці build:
    • build/dist
  2. Скопіюйте папку resources (яка містить іконки для нашого додатку) в build/dist.
    Build Resources

Крок 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

AddressApp on Windows

За допомогою Inno Setup ми можемо створити для нашого додатку інсталятор під Windows у вигляді єдиного .exe файлу. Створений .exe інсталятор буде проводити установку програми на рівні користувача (не потрібні права адміністратора). Також буде створено ярлик (в меню або на робочому столі).

  1. Завантажте Inno Setup версії 5 чи вище. Встановіть Inno Setup на ваш комп'ютер. Наш Ant скрипт буде використовуватися для автоматичної генерації інсталятора.

  2. Вкажіть шлях до Windows, Inno Setup (наприклад, C:\Program Files (x86)\Inno Setup 5). Для цього, додайте Inno Setup до змінної Path в ваших змінних оточення. Якщо ви не знаєте де їх знайти, почитайте як встановити шляхи та змінні оточення в Windows.

  3. Перевантажте додаток Eclipse, та продовжуйте з кроку 6.

Крок 5 - dmg інсталятор для MacOS

AddressApp on Mac

Для створення dmg інсталятора під MacOS ніяких додаткових інструментів не потрібно.

Примітка: Для того, щоб зображення інсталятора відображалося, ви повинні назвати це зображення так само, як і додаток.

Крок 5 - rpm інсталятор для Linux

Для інших способів встановлення додатку (msi для Windows, rpm для Linux) читайте цю статтю чи документацію від Oracle.

Крок 6 - Запускаємо build.xml

На останньому кроці ми запустимо файл build.xml за допомогою Ant: виконайте клік правою кнопкою мишки на файлі build.xml | Run As | Ant Build.

Run Ant Build

Збірка додатку займе трохи часу (близько хвилини на моєму комп'ютері).

Якщо все пройшло вдало, ви повинні знайти нативні збірки в папці build/deploy/bundles. Ось так виглядає версія для Windows:

Deployed File

Файл AddressApp-1.0.exe може використовуватися як єдиний файл для установки програми. Цей інсталятор скопіює нашу збірку в папку C:/Users/[yourname]/AppData/Local/AddressApp.

Що далі?

Сподіваюся, що цей підручник допоможе вам почати працювати з JavaFX і з цього моменту ви зможете писати свої JavaFX проекти.

Я ціную будь-який зворотній зв'язок. Не соромтеся писати коментарі, якщо у вас є будь-які пропозиції або якщо вам щось не зрозуміло.

Вам можуть бути цікаві також деякі інші статті