Как сделать установочный дистрибутив java приложения
Как вы знаете, Java — один из самых популярных языков программирования в мире и его знание существенно увеличит вашу значимость как программиста. Итак, вы решили начать писать на этом языке. Вам понадобится поставить JDK для того, чтобы писать и запускать программы на Java. JDK — набор софта, разработанного Oracle, содержащий в себе компилятор (javac), среду выполнения (Java Runtime Environment), стандартную библиотеку языка, примеры и документацию. Прочитав эту статью, вы узнаете, как установить и настроить JDK на своей системе, что такое среда разработки и какие варианты IDE существуют для Java. Также вы напишете свою первую программу на Java.
Установка Java Development Kit
- Перейдите на сайт Oracle и загрузите JDK для вашей платформы.
- После загрузки извлеките полученный архив и запустите извлеченное приложение.
- В процессе установке выберите вариант «Development Tool» и нажмите «Next».
- Спустя некоторое время установка завершится.
Итак, вы установили Java Development Kit, но это еще не всё. Необходимо настроить его для вашей системы.
Настройка JDK на примере Windows
После установки JDK и JRE не помешает установить на компьютер одну из IDE.
Установка IDE
Для начала разберёмся, что такое IDE.
Для написания сложных программ целесообразно использовать IDE. Мы рассмотрим наиболее популярные.
Блокнот
Да, и в блокноте можно писать код! Для разработки вам потребуется всего лишь установить JDK и указать путь к ней. Пишете код в блокноте, компилируете с помощью командной строки. Тем не менее, для разработки сложных программ это не самый лучший вариант из-за отсутствия каких-либо дополнительных возможностей, присутствующих в продвинутых IDE.
NetBeans
NetBeans — выбор профессиональных Java-разработчиков. В ней есть уникальные возможности и инструменты, которые позволят вам сделать вашу программу кроссплатформенной, а код удобочитаемым. NetBeans поддерживает не только Java, но и другие языки программирования для десктоп- и веб-разработки. Она полностью бесплатна, скачать её можно с официального сайта. Вот лишь некоторые её возможности:
Eclipse
- возможность форматировать код так, как вам удобно;
- поддержка разбиения кода на модули;
- лёгкость использования одного и того же кода в разных проектах;
- перетаскивание (drag-and-drop);
- просмотр содержимого библиотек;
- удобный интерфейс.
IntelliJ IDEA
IntelliJ IDEA — известная IDE для Java, написанная, как ни странно, на Java. Укомплектована уникальными инструментами и позволяет без проблем ориентироваться в программе. Нахождение ошибок и отладка кода никогда не были такими легкими, как с IntelliJ IDEA.
JCreator
JCreator — продвинутая и самая быстрая IDE для Java, написанная на C++.
Пишем свою первую программу
Итак, вы установили и настроили JDK, JRE и IDE для Java. Каков следующий шаг? Конечно же, написать программу, чтобы окончательно убедиться, что всё работает и вы готовы к изучению языка. Вы познакомитесь с базовой структурой кода на Java и создадите свою первую программу! Стоит отметить, что перед изучением Java следует ознакомиться хотя бы с самыми простыми принципами объектно-ориентированного программирования.
Структуру программы на Java можно представить так:
Структура программы на Java
В файле с исходным кодом содержится несколько классов — это части программы, имеющие определённые функции. Хорошей практикой считается разбиение программы на несколько файлов с исходным кодом, каждый со своим назначением. В классах содержатся методы — действия, которые могут выполнять объекты данного класса. В методе содержатся команды, с помощью которых вы можете получить желаемый результат.
4–5 декабря, Онлайн, Беcплатно
Приступим к написанию вашей первой программы. По традиции — это программа, выводящая на экран «Hello, world!».
Разберём по частям написанное нами:
На протяжении большей части своей истории дистрибутивы Java Runtime Environments под Windows были традиционно упакованы в формат EXE. Этот понятный и простой способ установки Java подходит не для всех. Исполняемые файлы не всегда хорошо работают там, где используются такие инструменты, как Microsoft SCCM и подобные альтернативы. Более предпочтительным вариантом является формат MSI. Эквивалентами в мире Linux и OS X являются RPM/DEB и DMG.
Чтобы решить проблему, некоторые организации стали выпускать собственные версии MSI. Например, Oracle предоставляет корпоративный установщик MSI для клиентов по подписке Java SE с выпусками Oracle JDK 7 и JDK 8.
В JDK 14 появился модуль jdk.incubator.jpackage , устраняющий описанные неудобства. Полный перечень его возможностей можно почитать в официальном хелпе, а здесь мы рассмотрим создание собственных инсталлеров MSI, DEB, RPM, DMG.
Для Windows будем использовать Oracle JDK 14, расположенный в папке D:\jdk-14 . Следующая команда создаст MSI-файл JDK 14, в котором имя и вендор указываются при помощи аргументов -n и --vendor :
Существуют дополнительные ключи, которые могут быть полезны для дальнейшей настройки полученного пакета. В результате выполнения команды создается файл с именем jdk-14-GA-1.0.msi . После установки он появится в системном реестре и будет выглядеть так:
Для Linux мы возьмем дистрибутив OpenJDK 14. Приведем две команды для создания пакетов DEB и RPM:
на выходе получим файл: openjdk-14-ga_1.0-1_amd64.deb
получили файл: openjdk-14-ga_1.0-1.x86_64.rpm
В Ubuntu openjdk-14-ga_1.0-1_amd64.deb можно установить и проверить с помощью утилиты dpkg:
Одна из основных трудностей распространения Java программ – необходимость наличия на компьютере пользователя среды выполнения Java Runtime Environment (JRE). Именно поэтому переносные (portable) приложения на Java редкость.
В тоже время эту проблему вполне можно разрешить и создать не только переносное, но и «обычное» приложение, которое не будет требовать наличия предустановленной JRE.
Однако, учитывая кроссплатформенность Java, сразу отметим, что в данной статье речь пойдёт о решении данной задачи применительно к среде Windows.
Существует два основных подхода к решению данной задачи.
Способ 1. Преобразование в нативный код
Иначе говоря, преобразование из jar в exe.
Казалось бы, это самый очевидный способ. Но, на самом деле, он самый трудно реализуемый и практически не работоспособный.
Сконвертировать jar в exe в принципе не проблема. В частности, есть масса утилит, которые позволяют это сделать. Однако подавляющее практически все они не избавляют от необходимости устанавливать JRE. Без JRE exe файл, созданный этими утилитами, всё равно не запустится.
Те же из них, что, если верить описанию, претендуют на полное решение данной проблемы, давно не развиваются и перед применением их необходимо самих компилировать из исходных кодов.
Способ 2. Использование переносной версии JRE
Этот способ основан на том, что JRE может работать и без установки на компьютер. Достаточно скачать архив с официальной страницы загрузки (ссылка в конце статьи) и распаковать его в любую папку. После этого JRE уже готов к работе.
Однако запустить Java программу в этом случае можно только двумя способами:
- Из командной строки;
- С помощью программы загрузчика.
Первый вариант не подходит, так как слишком сложен для рядового пользователя. Остаётся второй.
Принцип работы загрузчика, на самом деле, достаточно прост. Программа передаёт JRE команды необходимые для запуска Java приложения и после этого закрывается. Тем самым автоматизируя процесс запуска, выполняемый в случае командной строки вручную.
Рассмотрим пример написания такого загрузчика на Delphi. Предположим, что загрузчик, jar файл с Java приложением и папка с JRE расположены в одной общей папке.
Определим константы (относительный путь к исполняемому файлу JRE и передаваемые команды (включают относительный путь к файлу Java приложения)).
Для начала нам необходимо скачать SDK. Для этого в поисковике можно набрать: “Java EE SDK 7”, либо напрямую перейти на страницу загрузки sdk с сайта Oracle.
В списке представленных SDK, необходимо выбрать ту, которая подходит для вашей платформы. В статье описывается установка дистрибутива: “java_ee_sdk-7-jdk7-windows-x64-ml.exe”
Запускаем установочный файл. Во время запуска может возникнуть следующая ошибка (если она не возникнет, значит, можно просто продолжать установку):
Дальнейшая процедура установки вполне типична для большинства программ. Все, что нужно делать, — кликать на кнопки Next и Install.
- Аннотация над классом @Path("dukesAge") определяет URI путь, обращения на который будет обрабатывать данный класс.
- Аннотация над методом @GET говорит нам о том, что данный метод обрабатывает GET запросы.
- Аннотация @Produces("text/plain") определяет media type ответа на запрос. Нетрудно догадаться, что метод getText() будет формировать ответы с media type: text/plain.
Настройка IntelliJ IDEA для запуска Java EE приложения на сервере GlassFish
- Для этого переходим в меню Run -> Edit Configurations.
- У нас откроется панель Run/Debug Configurations:
- Нам необходимо добавить новую конфигурацию. Для этого нажмем на плюсик, либо воспользуемся хоткеем Alt+Insert. В открывшемся списке выберем GlassFish Server -> Local:
- В открывшемся окне приступим к настройке конфигурации:
- Следующим шагом укажем артефакты, которые необходимо будет деплоить на сервер. Это можно сделать через вкладку Deployment, нажав на плюс -> Artifact.
- Выбираем dukes-age:war и нажимаем OK:
- Далее сохраняем нашу конфигурацию, нажав на Apply, а затем OK.
Запуск приложения
Для этого можно воспользоваться хоткеем Alt+Shift+F10, либо через меню Run -> Run…
И выбираем созданную нами конфигурацию dukes-age:
После этого мы видим логи запуска в панели Services:
Затем, если все сделано согласно инструкции, откроется браузер и станет понятно, что ничего не работает:
Для этого вернемся в IntelliJ IDEA, затем в меню: Run -> Edit Configurations…
Выберем ранее сохраненную конфигурацию и обновим URL в соответствии со скрином ниже:
Сохраним конфигурацию и перезапустим наше приложение с помощью хоткея Ctrl+Shift+F10, либо с помощью специальной кнопки, на панели Services:
После перезапуска, если все было сделано правильно, мы увидим возраст Дюка:
Во многих моих тренингах так или иначе используется Java, либо как язык программирования для разработки автотестов, либо как среда для запуска приложений, написанных на Java.
Поэтому я решил описать процедуру установки Java, а также некоторые нюансы настройки Java после установки, которые могут приводить к проблемам при запуске приложений, написанных на Java.
Пять лет назад я уже писал такую инструкцию, но с тех пор накопилось много изменений как в Java, так и в операционных системах, так что пришло время для реновации.
Что устанавливать, JRE или JDK?
Существует две разновидности дистрибутива Java — для простых пользователей и для разработчиков:
- Java Runtime Environment, или JRE — это виртуальная машина, позволяющая запускать приложения, написанные на языке программирования Java;
- Java Development Kit, или JDK — это набор инструментов для разработки программ на языке программирования Java (компилятор, архиватор, генератор документации и прочие). JRE разумеется является частью дистрибутива JDK.
Правило очень простое:
- если вы собираетесь что-нибудь писать на языке программирования Java, значит вам нужен JDK;
- если вы собираетесь только запускать готовые программы — тогда достаточно JRE.
Какую версию выбрать?
Релизы Java выходят раз в полгода (не считая мелких обновлений). Но не стоит гнаться за новизной. Если вы установите Java последней версии, приготовьтесь к тому, что не все приложения будут хорошо работать с ней. Новые недавно добавленные возможности иногда приводят к проблемам совместимости.
Лучше всего посмотреть статистику и выбрать то, что использует большинство. Давайте посмотрим статистику за 2019 год:
В сентябре 2019 года вышла версия 13, в марте 2020 года выйдет версия 14, но при этом большинство продолжает использовать Java 8!
Я не собираюсь здесь обсуждать причины этого явления, но факт есть факт — это самая распространённая версия по состоянию на конец 2019 года. Поэтому если вы хотите максимальной стабильности и совместимости — в 2020 году берите Java 8.
Второе место по популярности занимает Java 11, это так называемый релиз с долгосрочной поддержкой (Long Term Support, LTS), ориентированный на корпоративных пользователей, для которых стабильность важнее новых фич.
Поддержка Java 8 официально прекращается в декабре 2020 года, к этому времени все корпоративные пользователи будут вынуждены перейти на Java 11. Но вы уже сейчас, не дожидаясь конца 2020 года, можете смело брать эту версию, она обеспечит комфортное соотношение достаточной новизны и не очень высокого риска. А если что-то не будет работать — можно установить рядом Java 8 для использования со старыми приложениями.
Выбирая из 32-битной и 64-битной версий, берите 64-битную, если ваша операционная система это позволяет.
Где взять?
Java это не только язык программирования, но и спецификация, как самого языка, так и среды исполнения программ, написанных на этом языке. Причем это открытая спецификация, поэтому может существовать, и существует, много разных её реализаций, в том числе проприетарных.
Большинство бесплатных реализаций (а может быть даже все) базируются на общем коде, который разрабатывается совместными усилиями вендоров в рамках проекта OpenJDK.
К этому общему коду каждый вендор дописывает свой инсталлятор (со своим логотипчиком), а также может добавлять какие-то дополнительные библиотеки (такие как, например, библиотека для создания графических пользовательких интерфейсов OpenJFX) или утилиты (например, средства мониторинга).
Лично я отдаю предпочтение сборке Azul Zulu, но вы можете выбрать какую-нибудь другую.
Как установить?
На примере сборки Azul Zulu.
В операционной системе Windows:
- выберите сборку и версию, как описано в предыдущих разделах;
- загрузите инсталлятор (файл с расширением .msi );
- запустите инсталлятор и следуйте инструкциям на экране.
В операционной системе Linux:
- выберите сборку и версию, как описано в предыдущих разделах;
- загрузите пакет (файл с расширением .deb или .rpm );
- в консоли выполните команду
sudo apt install <путь к загруженному deb-файлу>
либо
sudo rpm -i <путь к загруженному rpm-файлу>
В операционной системе MacOS:
- выберите сборку и версию, как описано в предыдущих разделах;
- загрузите образ диска (файл с расширением .dmg );
- откройте загруженный образ диска;
- запустите находящийся внутри него инсталлятор и следуйте инструкциям на экране.
Как проверить правильность установки?
В операционной системе Windows нужно запустить консоль ( cmd ) и выполнить команду where java , которая должна показать правильный путь до исполняемого файла java.exe , а также после этого выполнить команду java -version для проверки того, что это именно та версия, которую вы устанавливали:
В операционной системе Linux и MacOS нужно запустить консоль и выполнить команду which java , которая должна показать правильный путь до исполняемого файла java (скорее всего это будет /usr/bin/java ), а также после этого выполнить команду java -version для проверки того, что это именно та версия, которую вы устанавливали:
Что ещё надо сделать?
Инсталлятор Java выполняет минимальную необходимую настройку окружения, в том числе он добавляет в переменную среды PATH путь к директории, которая содержит исполняемые файлы Java (в операционной системе Windows), либо создаёт в стандартной директории для исполняемых файлов символические ссылки на установленные исполняемые файлы Java (в других операционных системах).
Но некоторые программы вместо этого используют переменную среды JAVA_HOME , которая должна указывать на директорию, в которую установлена Java. Поэтому на всякий случай можно сразу установить эту переменную.
Для этого надо научиться определять, куда установлена Java.
В операционной системе Windows путь к директории установки можно увидеть, выполнив команду where java в консоли. Например, если вы установили сборку Zulu JDK версии 8, эта команда вернёт значение C:\Program Files\Zulu\zulu-8\bin\java.exe , а в переменную JAVA_HOME нужно установить значение C:\Program Files\Zulu\zulu-8 .
/.profile добавить строчку export JAVA_HOME=$(readlink -f $(which java) | sed "s:/bin/java::") .
В операционной системе MacOS есть специальная команда /usr/libexec/java_home , которая возвращает нужный путь. Например, если вы установили сборку Zulu версии 8, эта команда вернёт значение /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home , именно это значение и нужно установить в переменную JAVA_HOME . Чтобы эта переменная среды устанавливалась автоматически при входе в систему, можно в файл
/.profile добавить строчку export JAVA_HOME=$(/usr/libexec/java_home) .
А если вы собираетесь писать код на языке программирования Java, информация о расположении Java пригодится при настройке среды разработки.
Автор: Алексей Баранцев
Если вам понравилась эта статья, вы можете поделиться ею в социальных сетях (кнопочки ниже), а потом вернуться на главную страницу блога и почитать другие мои статьи.
Ну а если вы не согласны с чем-то или хотите что-нибудь дополнить – оставьте комментарий ниже, может быть это послужит поводом для написания новой интересной статьи.
Читайте также: