Вы находитесь на странице: 1из 47

Как поставить и настроить среды разработки для ЯП и ВП (весна

2020)

Наверное, наиболее правильным подходом будет выполнение этой инструкции в том


порядке, в котором она написана. Если какая-то часть её (являющаяся префиксом) уже
выполнена, рекомендуется всё же бегло ознакомиться с написанным, чтобы
удостовериться в правильности сделанных настроек.

Часть 1. Установка и настройка JDK

Сейчас уже доступен JDK 14, в классах пока стоит JDK 13. В чем отличие 14 версии от 13,
можно прочитать, например, здесь https://minijug.ru/java_14_is_out.html.

Важно!
На компьютере может быть установлено несколько JDK, и при необходимости между
версиями можно переключаться. Поэтому если у вас уже установлены другие JDK, удалять
их не нужно. Также можете поставить и JDK 13, и JDK 14 (для наших основных целей в этом
семестре разницы нет, хотя в 14 версии есть некоторые интересные нововведения).

Для «домашнего некоммерческого» использования можно взять «официальную» JDK отсюда:


https://www.oracle.com/java/technologies/javase-downloads.html
(вероятно, с ней будет немного проще)
Официальная инструкция, что с этим делать, здесь (аналогично для 13):
https://docs.oracle.com/en/java/javase/14/install/overview-jdk-installation.html

Если же хочется в точности такую, какая стоит в классах, то скачать можно отсюда:
http://jdk.java.net/java-se-ri/13
(здесь же можно взять 14 — http://jdk.java.net/java-se-ri/14)
(разница в том, какая лицензия действует на тот и на этот продукт; «внутри», как обещают,
отличаться они не должны).

Если вы пользователь Linux, то, скорее всего, 13 версия не такая уж «новая», чтобы не
отыскаться в репозиториях; возможно, 14 тоже уже есть.

Если ваша ОС из семейства Mac OS — вам могут также оказаться полезны вот эти
инструкции:
https://installvirtual.com/how-to-install-openjdk-13-on-mac/
https://solarianprogrammer.com/2018/09/28/installing-openjdk-macos/
(хотя в официальной документации все написано хорошо).

Дальнейшее описание — для пользователей Windows и для JDK 14 (для 13 отличий нет).

Заметим, что поставить и настроить всё можно будет только на 64-битной ОС, и желательно,
чтобы это была Windows 10 (случаи успешной установки на Windows 7 известны — в
компьютерных классах все поставлено; однако нельзя исключить, что в процессе настройки
программного обеспечения под Windows 7 имеются какие-либо отличия).
Примечание. Если вы знаете, как выполнить то или иное действие другим способом —
выполняйте его так, как вам удобно.

Перейдя по ссылке для скачивания JDK, вы получите архив в формате zip (размером около
187+ Мб), который нужно будет распаковать. Можно сделать это как штатными средствами
Windows, так и с помощью 7-Zip.
Примечание. Вообще Far manager и 7-Zip — полезные программы. Скачать Far manager
можно по этой ссылке https://www.farmanager.com/download.php?l=ru , а вот с 7-Zip дело
обстоит несколько сложнее: уже давно официальный сайт архиватора попал под
блокировку (хотя к Telegram он никакого отношения не имеет). Поэтому если ссылка
https://7-zip.org/ у вас не открывается, можно попробовать обратиться к «неофициальному
зеркалу» https://7-zip.org.ua/ru/download/.

В глубинах распакованного архива отыщется каталог (он же папка в современной


терминологии Windows; в дальнейшем будем считать эти слова синонимами) jdk-13 (или
jdk-14, смотря что скачали).

Этот каталог целиком удобно поместить, например, в каталог C:\Program Files\Java\ (для
этого нужны права администратора на компьютере; далее предполагаю, что они у вас есть).
Т.е. у вас должно получиться C:\Program Files\Java\jdk-14\ (далее все содержимое этого
каталога).
Теперь нужно, чтобы система поняла, что Java установлена. Раньше ряд программ требовал
установленной JRE (Java Runtime Environment) (например, Open Office, Libre Office), а для
разработки нужно было отдельно устанавливать JDK (Java Development Kit), которая также
содержала JRE. Теперь можно обойтись одной JDK, использовав именно её JRE.

Найдите на рабочем столе или в меню значок Этот компьютер и щелкните по нему правой
клавишей мыши. В появившемся контекстном меню выберите пункт Свойства (также можно
добраться до нужного диалога через Панель управления, перейдя в раздел Система).

В списке слева найдите пункт Дополнительные параметры системы и нажмите на него


левой клавишей мыши. На вкладке Дополнительно найдите кнопку Переменные среды
(более привычное название — переменные окружения) (см. рис. 1) и нажмите на нее.

Рис. 1 Настраиваем переменные среды. Шаг 1.


Появится ещё одно диалоговое окно, которое можно видеть на рис. 2 (ваше окно,
естественно, будет выглядеть не так, переменных JAVA_HOME в нем наверняка не будет).

Рис. 2. Настраиваем переменные среды. Шаг 2.

В этом новом диалоговом окне нажмите кнопку Создать для раздела Системные
переменные (можно создавать для пользователя, но мы пойдём по пути наименьшего
сопротивления).

В появившемся маленьком окне нужно будет ввести имя переменной и выбрать каталог,
которому она будет поставлена в соответствие.

Рис. 3. Настраиваем переменные среды. Шаг 3.


Важно!
Имя переменной стоит воспроизвести — JAVA_HOME_14 (чуть позже мы поясним, как такой
подход позволит нам довольно быстро переключаться с одной версии Java на другую), а вот
значение переменной должно быть сформировано с помощью кнопки Обзор каталога.
Нажмите на неё и отыщите в открывшемся окне папку jdk-14.
Примечание. Если у вас несколько версий JDK на компьютере, можно назначить имена вида
JAVA_HOME_NN (где NN — номер версии JDK), так как это сделано на рис. 2.

Теперь создадим ещё одну системную переменную среды, которую назовём JAVA_HOME.
Содержимое следующего окна нужно воспроизвести полностью и в точности (и не забудьте
про знаки %). Снова нажмите кнопку Создать (см. Рис.2) и задайте имя и значение
переменной

Рис. 4. Настраиваем переменные среды. Шаг 4.

Теперь нужно изменить переменную Path. Она отвечает за то, чтобы операционная система
могла находить установленную Java (и не только ее, наверняка в вашей ОС значение этой
переменной ничуть не короче, чем можно увидеть на картинке.
Найдите в списке системных переменных переменную Path и нажмите кнопку Изменить
(рис. 5).

Рис. 5. Настраиваем переменные среды. Шаг 5.


Появится диалоговое окно, как на рис. 6. Если в этом диалоговом окне вы обнаружите
ссылки на старые версии Java — удалите их или скопируйте в текстовый документ (на
случай, если «все сломается»). Например, в Path могут быть прописаны пути вида:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\ProgramData\Oracle\Java\javapath
(такие «следы» оставляет, в частности, Java 8).

Рис.6. Настраиваем переменные среды. Шаг 6.


Нажмите кнопку Создать. Это приведёт к появлению пустой строки (рис. 7).

Рис. 7 Настраиваем переменные среды. Шаг 7.


В этой (новой) строке напечатайте:
%JAVA_HOME%\bin
и нажмите Enter.
Введённая строка теперь станет частью переменной Path (как на рис. 6). Нажмите кнопку ОК
в окне изменения переменной среды Path. Это вернёт вас в исходное окно (рис.5).

Проверим, всё ли сделано верно. Запустите окно командной строки (находится в меню
Служебные — Windows или же вызовом cmd в поиске) и напечатайте там path (рис. 8). Если
все предыдущие инструкции были выполнены в точности, в пути появится указание на
местоположение JDK (не обязательно в начале пути, но других версий быть не должно).

Рис. 8. Проверка настройки переменных среды. Шаг 1.

Обратите внимание, что операционная система выполнила подстановку пути, преобразовав


JAVA_HOME к JAVA_HOME_13, а JAVA_HOME_14 уже к конкретному «адресу» в системе.

Как, вероятно, вы уже догадались, если потребуется поменять версию Java (допустим, вы
захотите поработать с JDK 13 в качестве «основной»), единственное изменение, которое
потребуется внести — это изменить значение JAVA_HOME c %JAVA_HOME_14% на
%JAVA_HOME_13% (и, вероятно, перезагрузить систему: не все приложения способны адекватно
отреагировать на внесённые изменения «на лету»).

Теперь убедимся, что работает Java. Для этого в командной строке следует ввести команду
java -version
Система должна сообщить, что установлена JDK 14 (в нашем случае Open JDK) (рис. 9).
Примечание. Конечно, можно было бы просто ввести команду java без параметров
(можете это сделать), но объём выдаваемой информации окажется довольно большим и на
этом этапе не особенно нужным. Если выдача версии происходит корректно, значит, всё
настроено верно.

Рис. 9. Проверка настройки переменных среды. Шаг 2.

Итак, можем считать, что переменные среды мы настроили. Если есть желание
поэкспериментировать с другими версиями JDK — создайте переменные JAVA_HOME_NN, а
затем изменяйте значение JAVA_HOME. Чтобы изменения были видны в командной строке,
нужно сначала изменить переменные, а потом запустить новое окно командной строки.

Теперь мы готовы поставить и настроить Eclipse.


Примечание. Вероятно, в этот момент будет хорошей идеей выполнить перезагрузку
компьютера (без оной наблюдались некоторые неожиданные эффекты).

Часть 2. Установка и настройка Eclipse

Скачать Eclipse можно отсюда: https://www.eclipse.org/downloads/packages/.

Для наших целей достаточно выбрать Eclipse IDE for Java Developer (если очень хочется,
можно взять Eclipse IDE for Enterprise Java Developer, но её возможностями в рамках
настоящего учебного курса мы пользоваться не будем).

В результате скачивания вы получите архив в формате zip (196+ Мб). Его нужно распаковать
(Windows или 7-Zip вам в помощь). В распакованном каталоге обнаружится каталог eclipse.
Переместите (или скопируйте) этот каталог целиком в C:\Program Files (т. е. у вас должно
получиться C:\Program Files\eclipse\ и далее содержимое этого каталога).
Разумеется, вы можете выбрать иное местоположение этого каталога; главное, чтобы все
компоненты нашей «мозаики» в итоге нашли друг друга. Если вам нужно поддерживать
несколько версий Eclipse, можете дать этому каталогу другое название (например,
eclipse202003).

Вероятно, будет удобно создать ярлык для файла eclipse.exe и поместить его на Рабочий
стол (ярлык не обязан называться также, как файл; вы можете его переименовать так, как вам
удобно).

Запустите Eclipse.

При запуске Eclipse предлагает выбрать каталог, который станет рабочим пространством для
ваших проектов (workspace). И хотя на домашнем компьютере можно согласиться с
«предложением по умолчанию», всё же рекомендуется выбрать какой-то «рукотворный»
каталог. Это можно сделать с помощью кнопки Browse: нажатие на неё откроет диалоговое
окно выбора каталога; там же можно создать новый каталог, если в этом есть необходимость.

Рис. 10. Выбираем каталог, который станет рабочим пространством.

Конечно, далее можно воспользоваться какие-либо пунктом из предложенных в стартовом


окне, а можно просто перейти к привычному виду, нажав на кнопку workbench (рис. 11).

Рис. 11. Переключаемся в обычную раскладку IDE Eclipse.


Теперь нужно зайти в меню Windows | Preferences (рис. 12), в диалоговом окне (рис. 13)
выбрать (не раскрывая) пункт Installed JREs и посмотреть, какая JRE уже установлена для
проекта.

Рис. 12. Проверяем настройки Eclipse. Шаг 1.

Рис. 13. Проверяем настройки Eclipse. Шаг 2.

Если вы хотите использовать другую JRE, её можно добавить (с помощью кнопки Add...),
указав её местоположение в системе (например, вы установили в системе JDK 13 и JDK 14,
однако хотите оставить JDK 13 как «основную», но поэкспериментировать с JDK 14).
Теперь можно создавать проекты и работать в Eclipse так, как вы привыкли. Вероятно, будет
удобно сразу же открыть окно консоли (рис. 14).

Рис. 14. Консоль понадобится для ввода и вывода данных.

Единственный момент, который может оказаться непривычным — после создания проекта


(Java project) будет предложено создать ещё и модуль. В диалоговом окне (рис. 15) следует
отказаться от создания модуля.

Рис. 15. При создании проекта модуль создавать не нужно.


Принципиально модули удобны для организации проектов, состоящих из большого
количества файлов. Однако пока мы используем Eclipse для решения алгоритмических задач,
которые проверяются автоматизированными системами. Код решения такой задачи должен
быть размещен в одном файле, также допустимо использование только стандартных пакетов
(поставляющихся в составе JDK). Поэтому использование модуля излишне.

Часть 3. Установка и настройка Java FX

Начиная с Java 9, в которой были введены модули (и некоторые другие новшества),


фреймворк Java FX перестал быть неотъемлемой частью Java, а его разработкой в настоящий
момент занимается Gluon (не Oracle). Скачать Java FX можно отсюда:
https://gluonhq.com/products/javafx/
Доступны два варианта для каждой ОС: SDK и набор модулей. Вероятно, удобнее будет
скачать именно SDK (в случае Windows — для 64-разрядной).

Как можно видеть, предлагается Java FX 11 (версия Long Term Support, как и 11 версия Java)
и последняя доступная — на текущий момент Java FX 14. Поскольку для работы с Java FX 14
требуется JDK версии не ниже 11 (см., например, здесь — https://openjfx.io/openjfx-
docs/#install-java), то если вы настроили JDK 14, нет необходимости отыскивать именно 13
версию Java FX, можно установить и настроить именно 14.
Примечание. Не нужно думать, что версии JDK и Java FX должны совпадать: вполне
достаточно, чтобы они были совместимы друг с другом. Вполне можно «собрать» и такую
конфигурацию: установить JDK 11 в качестве «базовой» (на неё будет ссылаться Path и
JAVA_HOME), а также установить JDK 14 и Java FX 14 в качестве используемых в Eclipse
и Netbeans. После того, как вы проделаете все настройки, сборка желаемой конфигурации
не будет представлять сложностей. Сейчас мы выбрали JDK 14 в качестве «базовой» и
используемой и будем устанавливать и настраивать Java FX 14.

После скачивания штатными средствами Windows или с помощью 7-Zip извлеките из


полученного архива каталог javafx-sdk-14. Каких-то требований, где именно должен
находиться этот каталог, не существует, однако представляется удобным переместить этот
каталог в каталог C:\Program Files\Java (у вас должно получиться C:\Program
Files\Java\javafx-sdk-14\ далее содержимое каталога).

Кроме того, полезно скачать документацию. Конечно, она есть онлайн — по ссылке
https://openjfx.io/javadoc/14/. Однако при работе над проектом доступ к ней будет
существенно быстрее, если она будет на диске. Документация находится на той же странице,
что и Java FX SDK. Полученный архив openjfx-14-javadoc.zip следует распаковать, в
распакованном архиве будет каталог javafx-14-javadoc, который удобно переместить также в
каталог C:\Program Files\Java (у вас должно получиться C:\Program Files\Java\javafx-
14-javadoc\ далее содержимое каталога).

Часть 4. Установка и настройка Netbeans

Скачать Netbeans можно отсюда https://netbeans.apache.org/download/nb113/nb113.html (ссылка


на текущую актуальную версию 11.3).

Если JAVA_HOME установлена в jdk-13...

Если в качестве основной версии Java вы выбрали Java 13, то для установки Netbeans проще
всего выбрать установщик (installer) для соответствующей операционной системы. Запустите
полученный исполняемый файл (с правами администратора).
Разумеется, можно соглашаться со всеми «предложениями» установщика, однако мы
ограничимся тем «минимумом», который понадобится нам в рамках настоящего учебного
курса.

Первое окно установщика (рис. 16) даёт возможность указать, какие именно компоненты
будут установлены. Чтобы выбрать нужные, нажмите на кнопку Customize....

Рис. 16. Выбор устанавливаемых компонентов. Шаг 1.

Появится ещё одно диалоговое окно (рис. 17), в котором можно отказаться от установки Java
EE и PHP (HTML5 / JavaScript придётся оставить, поскольку он необходим для установки и
работы компонента Java SE).

Сняв «галочки» в окне Customize Installation, нажмите кнопку OK (теперь для установки
требуется не 680+ Мб, а 472 Мб) (рис. 18).

Рис. 17. Выбор устанавливаемых компонентов. Шаг 2.


Рис. 18. Выбор устанавливаемых компонентов. Шаг 3.

Нажмите кнопку Next >, чтобы перейти к окну с лицензионным соглашением (рис. 19). Его
нужно принять, чтобы получить возможность продолжить установку.

Рис. 19. Лицензионное соглашение Netbeans.


Рис. 20. Выбор каталога установки и каталога с JDK

В следующем диалоговом окне (рис. 20) появится возможность выбрать каталог, в который
будет установлен Netbeans, и каталог, где Netbeans будет искать JDK. Каталог для установки
Netbeans можно оставить предлагаемый.

Если в вашей системе будет установлена одна JDK, то и вариант будет единственным.
Поскольку в моей системе установлены три JDK, то есть возможность выбрать, например,
JDK 14, чтобы познакомиться с новыми возможностями. Обратите внимание, что в
диалоговом окне отмечена та JDK, которую будет использовать для своего запуска среда
разработки. В нашем случае это JDK 13. Именно её мы и выберем как используемую в
проектах.
Примечание. Кнопка Browse..., конечно, наводит на мысль, что если Netbeans не обнаружил
JDK, можно отыскать её вручную. Однако отсутствие JDK в окне выбора — плохой
признак, это значит, что какие-то из предыдущих настроек были выполнены неправильно.

Наконец, в следующем диалоговом окне (рис. 21) (появляющемся последним перед началом
установки) показывается каталог, в который будет установлена среда разработки, суммарный
размер устанавливаемых файлов, а также возможность проверять обновления. От этой
возможности, конечно, можно отказаться, но, как представляется, на домашнем компьютере
нет причин это делать.
Рис. 21. Окно перед началом установки.

Процесс установки займёт некоторое время, в течение которого вы будете наблюдать окно
установщика (рис. 22) с пояснениями, какие именно файлы разворачиваются в системе.

Рис. 22. Начало процесса установки IDE

Наконец, когда процесс установки завершится, вы увидите следующее сообщение (рис. 23)
Рис. 23. Процесс установки успешно завершился.

Теперь запустить среду разработки можно как из меню Пуск, так и нажав на значок,
появившийся на Рабочем столе (совершенно не важно, как именно вы это сделаете).

Если JAVA_HOME установлена в jdk-14...

Если в качестве JAVA_HOME вы выбрали наиболее новую из стабильных версий Java 14, то
воспользоваться установщиком не получится: он сообщит об ошибке, связанной с
отсутствием Pack200. Прочитать подробно про него можно здесь —
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8232022. Если кратко, этот класс
обеспечивал сжатие jar-файлов. Появился он в Java 1.5, а в Java 11 был помечен как
устаревший (deprecated). В Java 14 он был удалён, но разработчики Netbeans, видимо, пока
этот факт не учли, и установщик Netbeans его использует. Поэтому придётся скачать не
installer, a binaries.

После распаковки архива netbeans-11.3-bin.zip (средствами Windows или 7-Zip) папку


netbeans следует переместить целиком в каталог Program Files. Также рекомендуется
создать на Рабочем столе ярлык для файла netbeans64.exe (этот файл находится в каталоге
C:\Program Files\netbeans\bin).

Прежде чем запускать Netbeans, нужно указать ей «правильную» Java-платформу. Если у вас
установлена только JDK 14, не исключено, что этот шаг можно пропустить. Если же в
системе установлено несколько JDK, то выполнить такую настройку необходимо.

В каталоге C:\Program Files\netbeans\etc есть файл netbeans.conf. Откройте его (можно


стандартным редактором Far Manager, вызываемым по F4, можно в блокноте или
аналогичной программе) отыщите блок Default location of JDK и ниже этого блока допишите
строку (рис. 24):
netbeans_jdkhome="C:\Program Files\Java\jdk-14"
Сохраните файл (для этого требуются права администратора).
Рис. 24. Установка Java-платформы для Netbeans

Теперь можно запустить Netbeans с помощью созданного на Рабочем столе ярлыка.

После запуска Netbeans...

Если у вас уже имеется установленная версия Netbeans, при первом запуске вновь
установленной среды появится диалоговое окно (рис.25), предлагающее перенести
настройки из старой версии в новую. Мы не будем так делать (полагая, что в вашем случае
наличие установленной версии Netbeans скорее свидетельствует о том, что настроить её не
удалось).

Рис. 25. Предложение перенести настройки отклоним.

Теперь среда запустится, и мы увидим стартовую страницу (рис. 26)


Рис. 26. Стартовая страница Netbeans

Однако наша среда ещё не готова к работе. Об этом, в частности, свидетельствует «почти
пустое» меню Tools (рис. 27).

И теперь наша ближайшая задача — добиться его наполнения. Для этого нажмите на пункт
меню Tools | Options. Появившееся диалоговое окно (рис. 28) имеет несколько вкладок, и мы
будем последовательно переключаться на каждую.

Рис. 27. Наполнение меню Tools.


Рис. 28. Диалоговое окно, вызываемое Tools | Options

Рекомендуется такой порядок обращения к вкладкам (да, это немного «шаманство»): сначала
переключимся на KeyMap, затем пройдём по трём последним (Miscellanious, Appearance,
Team), Наконец, обратимся к PHP и HTML / JS. Скорее всего в этот момент система кое-что
«добавит», и эта вкладка окажется заполненной неким содержимым. Будет рекомендация
поставить cordova, но нас сейчас не должно это волновать, ибо наша цель — Java.
Примечание. Если вы установили JDK 13 и воспользовались установщиком Netbeans,
отказавшись от PHP, то этой вкладки у вас не будет; беспокоиться об этом не нужно.

Теперь можно переключиться на вкладку Java и внутри неё уже пройти по всем подвкладкам.
Подвкладка Ant не вызовет «реакции», а вот обращение к подвкладке GUI Builder приведёт
(скорее всего) к появлению диалогового окна для установки плагина для Java FX (рис. 29)

Рис. 29. Установка Java FX плагина


После нажатия кнопки Next появится диалоговое окно с лицензионным соглашением (рис.
29), которое необходимо принять, чтобы продолжить.

Рис. 30. Лицензионное соглашение

В случае успеха спустя небольшое время вы увидите следующее сообщение (рис. 30):

Рис.31. Сообщение о том, что Java FX успешно установлен.


Даже если после этого подвкладка GUI Builder останется пустой, переключитесь на
следующую вкладку Java Shell. Вполне возможно (но не обязательно), что Netbeans также
предложит установить пакет nb-javac (рис.32).

Рис. 32. Установка nb-javac при первоначальной настройке Netbeans. Шаг 1

В этом случае также рекомендуется позволить Netbeans установить эту библиотеку, приняв
лицензионное соглашение (рис. 33)

Рис. 33. Установка nb-javac при первоначальной настройке Netbeans. Шаг 2

По завершении процесса установки будет продемонстрировано диалоговое окно (рис. 34), в


котором останется лишь нажать кнопку Finish.
Рис. 34. Установка nb-javac при первоначальной настройке Netbeans. Шаг 3

Можете потом вернуться на подвкладку GUI Builder и удостовериться, что на ней появились
различные возможности настройки. Далее последовательно переключайтесь на все
подвкладки подряд. Обратите внимание, что на вкладке JShell указана платформа Java
(рис. 35):

Рис. 35. На подвкладке JShell указана платформа Java.


Пройдя по всем подвкладкам, нажмите ОК. Меню Tools теперь должно выглядеть так (рис.
36).

Рис. 36. Меню Tools после активации опций.

Можете выбрать в нём пункт Java Platforms, чтобы удостовериться в корректном


подключении платформы (рис. 37).

Рис. 37. Платформа Java.

С помощью кнопки Add Platform... можно добавить другие платформы (если понадобится).
Закройте Netbeans и запустите его снова. Появится окно (рис. 38), предлагающее
поучаствовать в сборе статистики. Согласиться или отказаться — выбор за вами (кажется,
ничего плохого, если согласиться, не происходит).

Рис. 38. Возможно, в будущих версиях сделают удобную для вас функцию

На этом этапе Netbeans уже можно использовать для того, чтобы писать обычные программы
на Java (такие, как мы до сих пор писали в Eclipse). Но чтобы можно было разрабатывать
приложения, использующие Java FX, нужно проделать ещё несколько шагов.

Выберите в меню Tools пункт Libraries (его хорошо видно на рис. 36). Появится диалоговое
окно (рис. 39), позволяющее добавлять библиотеки.

Рис. 39. Менеджер библиотек


Нажмите кнопку New Library... и дайте вновь создаваемой библиотеке название Java FX 14
(можете не использовать номер версии; особых требований к названию нет) (рис. 40).

Рис. 40. Создание новой библиотеки

Нажатие на кнопку OK приведёт к появлению в списке библиотеки с таким именем, однако


пока она ничего не содержит (рис. 41).

Рис. 41. Библиотека с названием Java FX 14 появилась в списке

Нажмите теперь кнопку Add JAR/Folder... и отыщите подкаталог lib в каталоге javafx-sdk-
14 (рис. 42). Если вы делали всё так, как обсуждалось в части 3, то путь к этому каталогу
должен выглядеть так:
C:\Program Files\Java\javafx-sdk-14\lib
Рис. 42. Путь к каталогу lib

В этом каталоге вы увидите 8 jar-архивов и файл src.zip, содержащий исходный код (рис. 43).

Рис. 43. Выберите все jar-файлы в каталоге lib


Теперь для добавления выберите все jar-архивы в этом каталоге (не следует выбирать только
src.zip) (рис.44). Это можно сделать быстро, нажав Ctrl + A (выделить все), а затем,
удерживая нажатой клавишу Ctrl, щёлкнуть мышкой по файлу src.zip, чтобы снять с него
выделение.

Рис. 44. Нужно выбрать все jar-архивы в каталоге lib

Нажмите в этом окне кнопку Add JAR/Folder, и вы увидите (рис. 45), что во вкладке Classpath
вновь созданной библиотеки появились все эти jar-архивы с полными путями к ним.

Рис. 45. Содержимое библиотеки добавлено


Полезно также настроить доступ к документации для библиотеки. Переключитесь на вкладку
Javadoc (рис. 46) и нажмите на кнопку Add ZIP/Folder...

Рис. 46. Добавление документации библиотеки. Шаг 1

В появившемся диалоговом окне (рис. 47) выберите папку с документацией.

Рис. 47. Добавление документации библиотеки. Шаг 2

После того, как вы нажмёте кнопку Add ZIP/Folder, появится сообщение об ошибке (рис.
48).

Рис. 48. Сообщение об ошибке


Судя по этой ссылке https://bz.apache.org/netbeans/show_bug.cgi?id=186723, багу уже 10 лет,
но пока его не поправили (однако если добавлять нераспакованный архив, javadoc
действительно не будет работать).

Нажмите кнопку OK сначала в окне сообщения об ошибке, а затем и в окне менеджера


библиотек, чтобы завершить добавление библиотеки.

Часть 5. Создание пробного Java FX проекта в Netbeans

Создадим новый проект. Обратимся к меню File | New Project и увидим диалоговое окно,
позволяющее выбрать тип нового проекта (рис. 49). Следует указать в качестве желаемого
проекта Java Application из категории Java with Ant.
Примечание. Если вы раскроете варианты Java with Ant, нажав на знак «+» возле этого
пункта, то увидите категорию Java FX. К сожалению, воспользоваться ей не получится:
она предназначена для JDK 8, которая включала Java FX в свой состав. В настоящий
момент Java FX существует в качестве отдельного проекта и не является частью JDK, а
разработчики Netbeans не спешат что-то менять.

Рис. 49. Выбор типа проекта.

Нажмите кнопку Next >, чтобы задать размещение проекта на жёстком диске (рис. 50).
Можете назвать проект SimpleJFXApp, можете выбрать какое-либо другое допустимое имя.
После этого Netbeans сформирует имя пакета (package) для проекта и имя главного класса.
Вы можете поэкспериментировать с именем проекта и пронаблюдать, как будет изменяться
имя главного класса в текстовом поле Create Main Class (по умолчанию возле него стоит
галочка).
Имя главного класса можно ввести и вручную, на него накладываются обычные требования к
именам переменных: начинается с буквы или символа нижнего подчёркивания, может
содержать буквы, символы нижнего подчёркивания и цифры. Традиционно имена классов в
Java начинаются с заглавной буквы, а имена полей, методов и локальных переменных — со
строчной.

Когда вы пишете решение алгоритмической задачи, все классы вашей программы должны
содержаться в одном файле, который будет впоследствии компилироваться и выполняться
внешней проверяющей системой. Поэтому оправданно использовать пакет по умолчанию (в
Eclipse имя пакета при создании проекта задаётся в отдельном текстовом поле, которое
можно просто очистить). В Netbeans же мы планируем разрабатывать проекты, состоящие из
нескольких файлов, и пакетная структура более чем уместна. Netbeans по умолчанию
называет проект, пакет и главный класс одинаково (с поправкой на регистр символов); для
учебных проектов это вполне приемлемо.

На домашнем компьютере вы можете сохранять проекты в любом каталоге на жестком диске


(в том числе в предложенном по умолчанию), но все же настоятельно рекомендуется завести
для этого специальный каталог вручную. Разумеется, необязательно называть его так, как на
рисунке.

Рис. 50. Размещение проекта на жестком диске.

Нажмите кнопку Finish, и проект будет создан. Его структура показана на рис. 51.
Рис. 51. Структура вновь созданного проекта Netbeans

Файл с главным классом сразу же будет открыт в среде. При первом создании проекта также
будет активна стартовая страница (start page), которую вы уже видели на рис. 26. Её можно
просто закрыть, тогда вкладка SimpleJFXApp.java останется единственной (рис. 52).

Рис. 52. Заготовка приложения с главным классом SimpleJFXApp

Как можно видеть, созданная заготовка приложения не отличается от той, которую вы уже
привыкли видеть в Eclipse. Чтобы превратить её в приложение Java FX, потребуется
выполнить несколько настроек. Для этого вызовем диалоговое окно свойств проекта,
обратившись к контекстному меню проекта (рис. 53) (контекстное меню вызывается
нажатием правой клавиши мыши на имени проекта).

Рис. 53. Выберем в контекстном меню проекта пункт Properties

В открывшемся диалоговом окне (рис. 54) выберем раздел Libraries и нажмём на кнопку со
знаком «+» в разделе Classpath.
Рис. 54. Добавление библиотеки к проекту. Шаг 1.

Из появившегося меню следует выбрать Add Library..., и в следующем диалоговом окне (рис.
55) найти библиотеку Java FX 14 и нажать кнопку Add Library.

Рис. 55. Добавление библиотеки к проекту. Шаг 2

Добавленная библиотека появится в разделе Classpath (рис. 56)


Рис. 56. Добавление библиотеки к проекту. Шаг 3

Теперь переключитесь в раздел Build и в подразделе Compiling снимите галочку с пункта


Compile on Save (рис. 57) (если пункт недоступен и галочки в нём нет — всё в порядке).
Примечание. По задумке разработчиков Netbeans, включение этой опции должно экономить
время разработчика (компиляция проекта выполняется при каждом его сохранении). Однако
при использовании дополнительных библиотек возникают проблемы.

Рис. 57. Настройки компиляции

Наконец, переключитесь в раздел Run (рис. 58) и в текстовом поле VM Options (настройки
виртуальной машины) впишите следующую строку (без переноса, после modules — пробел):
--module-path "C:\Program Files\Java\javafx-sdk-14\lib" --add-modules
javafx.controls

Примечание. В вашей системе путь к каталогу javafx-sdk-... может быть другим, так что
будьте внимательны.
Рис. 58. Настройки виртуальной машины для запуска проекта

Если в дальнейшем в каком-либо из ваших проектов потребуется использовать не только


javafx.controls, но и какие-то другие jar-архивы, то их можно будет дописать через запятую
после javafx.controls.

Предварительная подготовка завершена, так что нажмите кнопку OK, чтобы подтвердить
внесенные изменения в свойства проекта. Обратите внимание, что все jar-файлы из
библиотеки Java FX 14 добавились к библиотекам проекта (рис. 59).

Рис. 59. Раздел Libraries пополнился


Наконец, можно написать немного кода. Наше приложение будет обычным окном с
единственной кнопкой, которая при нажатии будет выводить приветствие.

Сначала отредактируем главный класс: сделаем его наследником класса Application из Java
FX. В строке
public class SimpleJFXApp

наберите extends App и либо подождите немного, либо нажмите Ctrl + пробел, чтобы
вызвать окно подсказки (рис. 60).

Рис. 60. Окно подсказки. Класс Application

В появившемся окне выберите класс Application из пакета javafx.application. Обратите


внимание, что предложение импорта добавится автоматически (рис. 61).

Рис. 61. Предложение импорта добавится автоматически


Как можно видеть, Netbeans сигнализирует о наличии ошибки («лампочка» с
восклицательным знаком в красном кружке). Если навести (не нажимая) на «лампочку»
курсор, появится окно информации (рис. 62) с сообщением о том, что класс SimpleJFXApp не
является абстрактным и поэтому не может перекрывать абстрактный метод start(Stage) класса
Application (вольный перевод с английского, оригинал — на рисунке).

Рис. 62. Информационное окно с сообщением об ошибке

Поясним, что это значит. Когда мы сделали наш класс SimpleJFXApp наследником класса
Application, мы получили в качестве «наследства» все методы и поля, которые имеются в
классе Application. Кроме всего прочего, в классе Application имеется метод start,
принимающий в качестве параметра объект типа (класса) Stage. Однако этот метод помечен
как абстрактный, что позволяет при его описании ограничиться лишь заголовком без
реализации.

Если какой-либо класс имеет в своём составе абстрактный метод — т. е. метод, который
невозможно исполнить, этот класс также должен быть объявлен абстрактным, что исключит
возможность создания объектов этого класса (и, соответственно, возможность вызова
абстрактного метода). Наш класс абстрактным не является, и мы не планировали его таким
делать: он будет создавать вполне конкретное окно с конкретной кнопкой. Поэтому мы
должны написать в нём реализацию для унаследованного абстрактного метода.

В информационном окне предлагается нажать Alt+Shift для получения подсказки, того же


эффекта можно добиться при нажатии левой клавишей мыши на «лампочку» (рис. 63).

Рис. 63. Предложение по исправлению ошибки

В появившемся окне подсказки есть два варианта на выбор: реализовать все абстрактные
методы (Implements all abstract methods) или же сделать класс SimpleJFXApp абстрактным
(Make class SimpleJFXApp abstract). Следует выбрать первый вариант.

Реализация метода будет добавлена автоматически (рис. 64), также как и предложение
импорта для класса Stage. Однако это весьма специфическая реализация.
Рис. 64. Добавлена реализация абстрактного метода

В теле метода написано единственное предложение


throw new UnsupportedOperationException("Not supported yet.");

Это означает, что в случае вызова метода будет выброшено исключение (ошибка) с
сообщением, что этот метод пока не поддерживается в приложении (Not supported yet).
Предложение throws Exception в заголовке метода показывает всем другим методам,
которые могут его вызвать, что метод может сгенерировать исключительную ситуацию,
которую нужно либо обработать, либо передать дальше (таким же предложением throws).
Примечание. В комментарии к этому предложению написан совет, как изменить тело
метода для вновь создаваемых абстрактных методов: To change body of generated methods,
choose Tools | Templates. Однако именно такая «первичная реализация» позволяет не забыть
реализовать абстрактный метод впоследствии (особенно в случае, когда в классе-предке их
много).

Мы не планируем делать метод источником исключительных ситуаций, поэтому удалим


предложения throw и throws и напишем свою реализацию этого метода. Если кратко, мы
создадим кнопку и зададим ей определённое поведение, затем поместим эту кнопку в сцену
(Scene) (можете понимать сцену как «сцену в пьесе», в которой есть действующие лица), а
эту сцену поместим на сцену в «материальном» смысле («театральные подмостки»). Начнём
с кнопки.

Поскольку мы не планируем выходить за рамки этого метода, то все вышеописанные


действия будет реализованы в нём непосредственно (локально).

Опишем переменную типа Button. Начните печатать название класса — But (можно и 4
буквы) и нажмите Ctrl + пробел. В окне подсказки (рис. 65) появится список «подходящих»
классов.
Рис. 65. Подсказка для класса Button

Выберите Button из пакета javafx и дайте этой переменной имя btn (рис. 66). Обратите
внимание, что появилось новое предложение импорта.

Рис. 66. Опишем переменную btn


Как и под всякий объект, под эту переменную нужно выделить память с помощью оператора
new. Собственно сам оператор придётся напечатать, а вот дальше можно вновь ограничиться
тремя — четырьмя буквами и нажать на Ctrl + пробел (рис. 67).

Рис. 67. Создание объекта btn. Шаг 1

На выбор предлагается только один вариант, после нажатия клавиши Enter (на клавиатуре)
появится три варианта конструктора (рис. 68).

Рис. 68. Создание объекта. Шаг 2


Выберите первый конструктор (с пустыми скобками) и не забудьте поставить в конце точку с
запятой (рис .69).

Рис. 69. Создание объекта. Шаг 3

Вообще говоря, мы могли бы воспользоваться вторым конструктором и задать с его помощью


и надпись на кнопке. Однако это можно сделать в любой момент с помощью метода setText
(рис. 70). Начните печатать название метода (setT) и нажмите Ctrl + пробел.

Рис. 70. Установка заголовка кнопки. Шаг 1

Здесь будет единственно возможный вариант выбора (первая строка); затем впишите в
качестве параметра фразу, как на рис. 71 (конечно, можно придумать своё приветствие).

Рис. 71. Установка заголовка кнопки. Шаг 2


Следующий шаг — настройка действия для кнопки. Если вы напечатаете btn.setOn и
нажмете Ctrl + пробел, то получите довольно длинный список возможных действий, на
которые в принципе способна отреагировать кнопка (рис. 72). Чтобы просмотреть их все,
придётся воспользоваться прокруткой.

Рис. 72. Варианты действий, на которые может реагировать кнопка

Названия этих действий вполне «говорящие». Например, действие setOnKeyPressed будет


выполняться при нажатии клавиши (на клавиатуре), действие setOnKeyReleased — при
отпускании нажатой клавиши, setOnDragDropped — при перетаскивании кнопки на другое
место (drag and drop — перетащить и бросить).

Наличие этих действий в списке, конечно, не значит, что кнопка «умеет» автоматически их
выполнять. Но добиться выполнения этих действий от кнопки (да и от ряда других
компонентов) можно. Впрочем, обычно дизайнеры интерфейсов стараются не слишком
«удивлять» пользователей нестандартным поведением стандартных элементов. Поэтому
почти у каждого компонента имеется некое действие «по умолчанию», для задания которого
используется специальный метод setOnAction (для кнопки он де-факто «подменяет» собой
метод setOnMouseClicked). Именно его нам и следует выбрать (рис. 73).

Рис. 73. Назначение действия кнопке

Переменной eh типа EventHandler<ActionEvent> у нас пока не существует, а такой параметр


является обязательным для метода setOnAction. Так что нам потребуется создать такой
объект. Но сначала обсудим, что же он собой представляет.

Если обратиться к документации


https://openjfx.io/javadoc/14/javafx.base/javafx/event/EventHandler.html,
можно узнать, что EventHandler<T> — это интерфейс, содержащий в себе единственный
метод void hanlde(T event), принимающий параметр типа T, которым параметризован
интерфейс. Термин handle используется в здесь в смысле «обработать», а event переводится
как «событие». Таким образом, интерфейс — это обработчик события типа T, содержащий
метод, определяющий, что делать при наступлении этого события.

Что же касается ActionEvent — типа, который параметризует обработчик события, то,


согласно документации
https://openjfx.io/javadoc/14/javafx.base/javafx/event/ActionEvent.html
это класс-наследник класса Event (базового класса всех событий в Java FX),
представляющий определённый тип событий — наиболее ожидаемых действий того или
иного компонента. Заметим, что принципиально событие имеет источник (source), цель
(target) и тип. Для более подробного ознакомления рекомендуем познакомиться с
документацией класса Event
https://openjfx.io/javadoc/14/javafx.base/javafx/event/Event.html
и связанных с ним классов, а также почитать достаточно старый материал
https://docs.oracle.com/javase/8/javafx/events-tutorial/index.html
(класс Event появился в Java FX 2, входившем в состав JDK 8).

Нам же пока хватит знания того, что событие ActionEvent будет происходить при нажатии на
кнопку, и что наша задача — создать объект, являющийся представителем интерфейса
EventHandler<ActionHandler> и реализующий его метод handle.

Примечание. Напомним, что, поскольку интерфейсы содержат лишь заголовки методов (на
самом деле всё немного сложнее, но пока это не относится к сути дела), то класс,
реализующий интерфейс, обязан реализовать все его методы.

Конечно, ничто не мешает нам описать класс, реализующий нужный интерфейс, а затем
создать объект этого класса и передать его в качестве параметра в метод setOnAction. Это
будет выглядеть так (рис. 74):

Рис. 74. Создание объекта eh

Не забудьте, что по мере добавления этого кода, вам понадобится импортировать интерфейс
EventHandler, класс ActionEvent, а также согласиться с добавлением метода интерфейса в
класс. Настоятельно рекомендуется делать это так, как было показано выше при добавлении
объекта типа Button.

Всё, что делает обработчик события — выводит в консоль сообщение «Привет, мир!» каждый
раз, когда пользователь нажимает на кнопку.

Эту запись можно сделать более короткой, используя анонимные классы или лямбда-
выражения. Но пока займёмся размещением кнопки в сцене Scene и затем на сцене Stage.
Для размещения любых визуальных объектов существуют специальные «контейнеры» —
менеджеры размещений. В Java FX их несколько; сейчас, поскольку нам нужно разместить
всего одну кнопку, воспользуемся одним из самых простых — менеджером StackPane. Как
следует из его названия, это панель, на которую можно поместить объекты один на другой
(так, что они будут образовывать стек). Опишем переменную stp типа StackPane, выделим
под неё память с помощь конструктора и добавим в список её «детей» (т. е. объектов,
которыми она будет управлять) кнопку btn (рис. 75). Мы приводим лишь «содержательный»
фрагмент кода; предложения импорта будут добавлены автоматически.

Рис. 75. Добавление контейнера и кнопки в контейнер

Не исключено, что Netbeans выдаст предупреждение с предложением присвоить результат


выполнения метода add() какой-либо логической переменной. Метод add() традиционно
возвращает логическое значение: true, если операция добавления прошла успешно, и false
в противном случае. Это предупреждение можно игнорировать: мы можем быть вполне
уверены, что наша кнопка будет добавлена

Теперь можно задать сцену Scene. Опишем такую переменную, передадим ей наш контейнер
stp в качестве корневого объекта графа сцены и зададим размеры окна (рис. 76). Предложение
импорта для класса Scene также будет создано автоматически.

Рис. 76. Добавление сцены Scene

Размеры 300 и 250 задают соответственно ширину и высоту сцены. Так что с этими
параметрами можете смело экспериментировать (хотя больше физических размеров экрана
устанавливать их точно не стоит). Подчёркивание зелёным показывает, что пока переменная
scene нигде не используется.

Осталось поместить нашу сцену Scene на «подмостки» — т. е. в stage. Этот параметр типа
Stage получает функция start, так что внутри этой функции мы можем этим параметром
воспользоваться (рис. 77).

Рис. 77. Размещение scene в stage


Вероятно, достаточно краткого комментария к этим трём строчкам. В первой из них
устанавливается заголовок окна; во второй — собственно сцена scene, наконец, в третьей
выполняется команда на показ сцены.

Это почти всё. Но у нас пока остаётся пустым метод main(), а именно его будет пробовать
выполнить виртуальная машина Java. В этом методе нужно написать ровно одну строчку
(рис. 78):

Рис. 78. Наполнение метода main()

Метод launch унаследован нашим классом SimpleJFXApp от класса Application (и, в


отличие от метода start, он реализован).

Сохраните проект и запустите его (нажав на большой зелёный треугольник в линейке


инструментов). Должно получиться следующее (рис. 79):

Рис. 79. Экран после однократного нажатия на кнопку


Если вы нажмёте на кнопку ещё раз, слова «Привет, мир!» напечатаются ещё раз, и т. д.
Чтобы прекратить работу этого приложения, следует нажать на кнопку с крестиком в правом
верхнем углу окна (как во всех приложениях Windows).

Часть 6. Если что-то не заработало (в Netbeans)...

Кажется, что всё сделали по инструкции, но Netbeans не хочет запустить приложение, пишет
сообщения об ошибках и явно не желает работать. Конечно, стоит проверить «очевидные
вещи» — одинаково ли называются файл, содержащий класс, и сам класс (совпадение
должно быть и по регистру букв: SimpleJFXApp, simpleJFXApp и SimpleJfxApp — это
совершенно разные имена с точки зрения Java, хотя Windows будет считать их одинаковыми);
не забыли ли вы вписать launch(args) в метод main(); все ли фигурные скобки стоят на
своих местах и т. п.

Если в приложении всё хорошо, то можно попробовать выполнить настройку Netbeans


заново. Заметим, что речь не идёт о переустановке: в большинстве случаев она не требуется,
более того, если вы переустановите Netbeans, не удалив предварительно его настройки,
ничего не изменится.
Поэтому завершите работу Netbeans и запустите какой-либо файловый менеджер, чтобы
добраться до настроек. Важно, чтобы файловый менеджер мог показывать скрытые папки и
файлы. Проще всего использовать Far Manager — он по умолчанию показывает все папки и
файлы.
Найти настройки можно в каталоге (рис. 80)
C:\Users\имя_пользователя\AppData\Roaming\Netbeans

Рис.80 Папка Netbeans с настройками (красным закрашено имя пользователя)

Если у вас установлена только одна версия Netbeans, проще всего удалить весь каталог
целиком. Важно понимать, что вы удаляете только настройки, ваши проекты должны
находиться в другом каталоге. Если же версий Netbeans у вас установлено несколько, то
можно удалить настройки, относящиеся именно к нужной версии (рис. 81). Также следует
удалить файл .superId. Если вы работаете в Far Manager, то удалить каталог или файл можно,
установив курсор (подсвеченную строку) на имя каталога или файла и нажав клавишу F8 (на
некоторых ноутбуках, вероятно, придётся ещё включить режим работы функциональных
клавиш).

Рис. 81. Нужно удалить настройки Netbeans и файл .superId

Теперь после запуска Netbeans вы увидите стартовую страницу (как на рис. 26) и сможете
вновь выполнить все настройки.