Обзор поддержки JDK 8 в IDE NetBeans

This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines.

Авторы: Томас Зезула (Tomas Zezula) и Алена Сташкова (Alyona Stashkova)

IDE NetBeans поддерживает функции JDK 8, такие как лямбда-выражения, повторные аннотации, компактные профили и т.д. Когда эти конструкции используются в коде, IDE распознает их, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий спецификации Java SE 8 Release Contents Early Draft Review.

Это практическое руководство научит вас работать с JDK 8 в IDE NetBeans и использовать поддержку таких функций Java SE 8, как лямбда-выражения, компактные профили и повторные аннотации.

netbeans stamp 80 74
Figure 1. Содержимое на этой странице применимо к IDE NetBeans 7.4 и бета-версии 8.0

Для работы с этим учебным курсом требуются программное обеспечение и материалы, перечисленные в таблице ниже.

Программное обеспечение или ресурс Требуемая версия

IDE NetBeans

версия 7.4 и 8.0

Комплект для разработчика на языке Java (JDK)

версия 8

Включение поддержки JDK 8 в IDE NetBeans

После загрузки и установки JDK 8 на компьютере необходимо зарегистрировать эту платформу в IDE:

  1. В среде IDE выберите "Сервис" > "Платформы Java".

  2. В диалоговом окне 'Диспетчер платформ Java' нажмите 'Добавить платформу'.

  3. В диалоговом окне 'Добавление платформы Java' выберите Java Standard Edition и нажмите 'Далее'.

  4. Укажите каталог, в котором находится JDK, и нажмите 'Далее'.

jdk8 small
  1. Проверьте правильность местоположений по умолчанию для zip-архива Platform Sources и документации API. Для закрытия диалога добавления платформы Java нажмите кнопку "Готово". Платформа JDK 8 зарегистрирована в IDE.

jdk8registered small
  1. Убедитесь в том, что в списке "Платформы" выбран пункт "JDK 1.8", и нажмите кнопку "Закрыть".

Настройка проекта для работы с JDK 8

После регистрации платформы JDK 8 в IDE необходимо настроить проект для работы с JDK 8 и выполнения компиляции, запуска и отладки.

Создайте новый проект Java SE на основе примера игры Anagram, поставляемого в комплекте с IDE NetBeans.

  1. В меню IDE выберите Файл > Создать проект.

  2. В мастере создания проектов разверните категорию 'Образцы' и выберите Java.

  3. В списке 'Проекты' выберите 'Игра Anagram'. Затем нажмите кнопку "Дальше".

  4. На панели 'Имя и местоположение' оставьте без изменения данные в полях 'Имя проекта' и 'Местоположение проекта'.

  5. Нажмите 'Готово'. IDE создает проект Java SE и открывает его в окне 'Проекты'.

Настройка проекта для работы с JDK 8:

  1. В окне 'Проекты' щелкните правой кнопкой мыши проект AnagramGame и выберите 'Свойства' в контекстном меню.

  2. В диалоговом окне 'Свойства проекта' выберите категорию 'Библиотеки' и выберите JDK 1.8 в качестве платформы Java.

prj jdk8 small
  1. Выберите категорию 'Источники', затем выберите JDK 8 в списке 'Исходный/двоичный формат'.

prj source jdk8 small
  1. Нажмите OK для сохранения изменений. Теперь проект настроен на распознавание новых функций языка JDK 8.

Использование поддержки компактных профилей

В платформе Java SE 8 впервые реализованы подклассы профилей стандарта Java SE, которые можно использовать для развертывания и запуска приложений, не требующих наличия полного функционала платформы.

Имеющиеся на данный момент профили называются compact1, compact2 и compact3. Каждый профиль задает определенный набор пакетов Java API и включает в себя все API-интерфейсы более мелких профилей: compact1 является подклассом для compact2, который в свою очередь является подклассом для compact3, который является подклассом для Полного JRE. В таблице перечислены пакеты, включенные в состав каждого из профилей.

Compact1 Compact2 Compact3 Полный JRE

* java.lang * java.io * java.nio * java.text * java.math * java.net * javax.net * java.util * java.util.logging * java.security * javax.crypto * javax.security

compact1 плюс следующее:

* java.sql * javax.sql * javax.xml * org.w3c.dom * org.xml.sax * java.rmi * javax.rmi * javax.transaction

compact2 плюс следующее:

* java.lang.management * javax.management * javax.naming * javax.sql.rowset * javax.security.auth.kerberos * org.ietf.jgss * javax.script * javax.xml.crypto * java.util.prefs * javax.security.sasl * javax.security.acl * java.lang.instrument * javax.annotation.processing * javax.lang.model * javax.lang.model.element * javax.lang.model.type * javax.lang.model.util * javax.tools

compact3 плюс следующее:

* corba * awt * swing

IDE позволяет переключаться между этими профилями и профилем 'Полный JRE' по мере необходимости.

Выбор профиля для проекта Java SE:

  1. Щелкните проект правой кнопкой мыши и выберите 'Свойства' в контекстном меню.

  2. В диалоговом окне 'Свойства проекта' выберите категорию 'Источники'.

  3. Выберите из списка 'Профиль' поддерживаемый профиль JDK 8 для приложения.

prj src profile small
  1. Нажмите ОК.

IDE проверяет, принадлежат ли классы, используемые в проекте, определенному профилю. Чтобы рассмотреть это на примере, выберите Compact1 в качестве профиля проекта AnagramGame и нажмите ОК. В IDE отображаются сообщения об ошибках, указывающие на то, что проект AnagramGame несовместим с профилем compact1.

profile small

Вы можете вернуться и изменить профиль проекта AnagramGame на 'Полный JRE', поддерживаемый приложением Anagrams.

Использование поддержки лямбда-выражений

Лямбда-выражения являются более компактным способом представления механизмов анонимных внутренних классов и делают эти классы менее массивными.

В общем случае синтаксис лямбда-выражения состоит из набора параметров, маркера стрелки и тела функции (одиночного выражения или блока выражений):

(int a, int b) -> a * a + b * b;

IDE NetBeans обнаруживает конструкции, которые можно преобразовать в лямбда-выражения, и в редакторе отображаются соответствующие подсказки.

Например, в проекте AnagramGame подобная конструкция есть в файле Anagrams.java , показанном на рисунке.

lambda small

Если нажать на значок подсказки или нажать Alt-Enter, в IDE отображается подсказка 'Использование лямбда', в которой предлагается несколько вариантов:

lambda clicked small

Если выбрать подсказку 'Использование лямбда', IDE преобразует анонимный внутренний класс в лямбда-выражение.

lambda converted small

Если выбрать параметр 'Начать проверку в…​', в IDE отображается диалоговое окно 'Проверка', в котором можно выполнить одну проверку 'Преобразование в лямбда' для выбранного файла.

Примечание. Дополнительные сведения о запуске операции 'Проверка' в IDE см. в разделе Использование подсказок при анализе и рефакторинге исходного кода в документе Разработка приложений в IDE NetBeans.

inspect small

При нажатии на кнопку 'Проверка' IDE находит в файле все конструкции, которые можно преобразовать в лямбда-выражения, и отображает их в окне 'Инспектор'.

lambda inspection small

Если выбрать параметр 'Начать проверку и преобразование…​', в IDE отображается диалоговое окно 'Проверка и преобразование', в котором можно выполнить одну проверку 'Преобразование в лямбда' (или выбранную конфигурацию) для указанного кода и при необходимости оптимизировать его.

Примечание. Дополнительные сведения о запуске операции 'Проверка и преобразование' см. в разделе Использование подсказок при анализе и рефакторинге исходного кода в документе Разработка приложений в IDE NetBeans.

lambda transform small

Использование поддержки повторных аннотаций

Java SE 8 предоставляет функцию повторных аннотаций, которая позволяет применять однотипные аннотации к отдельным элементам программы, как показано в приведенном ниже примере кода:

@ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2seproject")
@ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2eeproject")
public class MyService extends Foo {}

Поддержка повторных аннотаций в IDE NetBeans позволяет писать код с одними и теми же аннотациями при условии, что объявлены соответствующие типы аннотаций (повторные или содержащие):

  • Повторная аннотация должна иметь обозначение @Repeatable () , в противном случае при компиляции произойдет ошибка

  • Содержащая аннотация должна включать в себя элемент value типа 'массив'; тип компонента типа 'массив' должен быть типом повторной аннотации Отправить отзыв по этому учебному курсу

См. также