| // |
| // 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+] |