blob: 5c6b426ee95a2328adf179de0fa6af5af2f7adfc [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Обзор поддержки JDK 8 в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Обзор поддержки JDK 8 в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Обзор поддержки JDK 8 в IDE NetBeans
Авторы: Томас Зезула (Tomas Zezula) и Алена Сташкова (Alyona Stashkova)
IDE NetBeans поддерживает link:http://openjdk.java.net/projects/jdk8/features/[+функции JDK 8+], такие как лямбда-выражения, повторные аннотации, компактные профили и т.д. Когда эти конструкции используются в коде, IDE распознает их, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий link:http://download.oracle.com/otndocs/jcp/java_se-8-edr-spec/index.html[+спецификации Java SE 8 Release Contents Early Draft Review+].
Это практическое руководство научит вас работать с JDK 8 в IDE NetBeans и использовать поддержку таких функций Java SE 8, как лямбда-выражения, компактные профили и повторные аннотации.
image::images/netbeans-stamp-80-74.png[title="Содержимое на этой странице применимо к IDE NetBeans 7.4 и бета-версии 8.0"]
*Для работы с этим учебным курсом требуются программное обеспечение и материалы, перечисленные в таблице ниже.*
|===
|Программное обеспечение или ресурс |Требуемая версия
|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |версия 7.4 и 8.0
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 8
|===
== Включение поддержки JDK 8 в IDE NetBeans
После загрузки и установки JDK 8 на компьютере необходимо зарегистрировать эту платформу в IDE:
1. В среде IDE выберите "Сервис" > "Платформы Java".
2. В диалоговом окне 'Диспетчер платформ Java' нажмите 'Добавить платформу'.
3. В диалоговом окне 'Добавление платформы Java' выберите Java Standard Edition и нажмите 'Далее'.
4. Укажите каталог, в котором находится JDK, и нажмите 'Далее'.
[.feature]
--
image::images/jdk8_small.png[role="left", link="images/jdk8.png"]
--
. Проверьте правильность местоположений по умолчанию для zip-архива Platform Sources и документации API. Для закрытия диалога добавления платформы Java нажмите кнопку "Готово".
Платформа JDK 8 зарегистрирована в IDE.
[.feature]
--
image::images/jdk8registered_small.png[role="left", link="images/jdk8registered.png"]
--
. Убедитесь в том, что в списке "Платформы" выбран пункт "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.
[.feature]
--
image::images/prj_jdk8_small.png[role="left", link="images/prj_jdk8.png"]
--
. Выберите категорию 'Источники', затем выберите JDK 8 в списке 'Исходный/двоичный формат'.
[.feature]
--
image::images/prj_source_jdk8_small.png[role="left", link="images/prj_source_jdk8.png"]
--
. Нажмите OK для сохранения изменений.
Теперь проект настроен на распознавание новых функций языка JDK 8.
== Использование поддержки компактных профилей
В платформе Java SE 8 впервые реализованы link:http://openjdk.java.net/jeps/161[+подклассы профилей стандарта 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 для приложения.
[.feature]
--
image::images/prj_src_profile_small.png[role="left", link="images/prj_src_profile.png"]
--
. Нажмите ОК.
IDE проверяет, принадлежат ли классы, используемые в проекте, определенному профилю. Чтобы рассмотреть это на примере, выберите Compact1 в качестве профиля проекта AnagramGame и нажмите ОК.
В IDE отображаются сообщения об ошибках, указывающие на то, что проект AnagramGame несовместим с профилем _compact1_.
[.feature]
--
image::images/profile_small.png[role="left", link="images/profile.png"]
--
Вы можете вернуться и изменить профиль проекта AnagramGame на 'Полный JRE', поддерживаемый приложением Anagrams.
== Использование поддержки лямбда-выражений
link:http://openjdk.java.net/projects/lambda/[+Лямбда-выражения+] являются более компактным способом представления механизмов анонимных внутренних классов и делают эти классы менее массивными.
В общем случае синтаксис лямбда-выражения состоит из набора параметров, маркера стрелки и тела функции (одиночного выражения или блока выражений):
[source,java]
----
(int a, int b) -> a * a + b * b;
----
IDE NetBeans обнаруживает конструкции, которые можно преобразовать в лямбда-выражения, и в редакторе отображаются соответствующие подсказки.
Например, в проекте AnagramGame подобная конструкция есть в файле ``Anagrams.java`` , показанном на рисунке.
[.feature]
--
image::images/lambda_small.png[role="left", link="images/lambda.png"]
--
Если нажать на значок подсказки или нажать Alt-Enter, в IDE отображается подсказка 'Использование лямбда', в которой предлагается несколько вариантов:
[.feature]
--
image::images/lambda_clicked_small.png[role="left", link="images/lambda_clicked.png"]
--
Если выбрать подсказку 'Использование лямбда', IDE преобразует анонимный внутренний класс в лямбда-выражение.
[.feature]
--
image::images/lambda_converted_small.png[role="left", link="images/lambda_converted.png"]
--
Если выбрать параметр 'Начать проверку в...', в IDE отображается диалоговое окно 'Проверка', в котором можно выполнить одну проверку 'Преобразование в лямбда' для выбранного файла.
*Примечание.* Дополнительные сведения о запуске операции 'Проверка' в IDE см. в разделе link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+Использование подсказок при анализе и рефакторинге исходного кода+] в документе _Разработка приложений в IDE NetBeans_.
[.feature]
--
image::images/inspect_small.png[role="left", link="images/inspect.png"]
--
При нажатии на кнопку 'Проверка' IDE находит в файле все конструкции, которые можно преобразовать в лямбда-выражения, и отображает их в окне 'Инспектор'.
[.feature]
--
image::images/lambda_inspection_small.png[role="left", link="images/lambda_inspection.png"]
--
Если выбрать параметр 'Начать проверку и преобразование...', в IDE отображается диалоговое окно 'Проверка и преобразование', в котором можно выполнить одну проверку 'Преобразование в лямбда' (или выбранную конфигурацию) для указанного кода и при необходимости оптимизировать его.
*Примечание.* Дополнительные сведения о запуске операции 'Проверка и преобразование' см. в разделе link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+Использование подсказок при анализе и рефакторинге исходного кода+] в документе _Разработка приложений в IDE NetBeans_.
[.feature]
--
image::images/lambda_transform_small.png[role="left", link="images/lambda_transform.png"]
--
== Использование поддержки повторных аннотаций
Java SE 8 предоставляет функцию link:http://openjdk.java.net/jeps/120[+повторных аннотаций+], которая позволяет применять однотипные аннотации к отдельным элементам программы, как показано в приведенном ниже примере кода:
[source,java]
----
@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`` типа 'массив'; тип компонента типа 'массив' должен быть типом повторной аннотации
link:/about/contact_form.html?to=3&subject=Feedback:%20Overview%20of%20JDK%208%20Support%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]
== См. также
Дополнительные сведения о платформе JDK 8:
* link:http://jdk8.java.net/[+Проект JDK 8+]
* link:http://download.java.net/jdk8/docs/[+Документация Java Platform Standard Edition 8 Early Access+]
* link:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html[+Java SE 8. Краткое руководство по лямбда-выражениям+]
* link:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html[+Практические руководства по Java: лямбда-выражения+]
* link:http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html[+Практические руководства по Java: повторные аннотации+]
Дополнительные сведения о разработке приложений в IDE NetBeans см. следующие ресурсы:
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366[+Создание проектов Java+] в документе _Разработка приложений в IDE NetBeans_
* link:javase-intro.html[+Разработка общих приложений, написанных на Java+]
* link:../../trails/java-se.html[+Учебная карта по общим сведениям о разработке на Java+]