| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- |
| Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
| --> |
| |
| <html> |
| <head> |
| <title>Обзор поддержки JDK 8 в IDE NetBeans</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> |
| <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION"> |
| |
| <meta name="description" content="A short guide to using JDK 7 features in NetBeans IDE."> |
| </head> |
| |
| <body> |
| |
| <h1>Обзор поддержки JDK 8 в IDE NetBeans</h1> |
| <div class="articledate" style="margin-left: 0px;">Авторы: Томас Зезула (Tomas Zezula) и Алена Сташкова (Alyona Stashkova)</div> |
| <p>IDE NetBeans поддерживает <a href="http://openjdk.java.net/projects/jdk8/features/" target="_blank">функции JDK 8</a>, такие как лямбда-выражения, повторные аннотации, компактные профили и т.д. Когда эти конструкции используются в коде, IDE распознает их, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий <a href="http://download.oracle.com/otndocs/jcp/java_se-8-edr-spec/index.html">спецификации Java SE 8 Release Contents Early Draft Review</a>. </p> |
| |
| <p>Это практическое руководство научит вас работать с JDK 8 в IDE NetBeans и использовать поддержку таких функций Java SE 8, как лямбда-выражения, компактные профили и повторные аннотации. </p> |
| <p><b>Содержание</b></p> |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 7.4" class="stamp" src="../../../images_www/articles/74/netbeans-stamp.png" title="Содержимое на этой странице применимо к IDE NetBeans 7.4"> |
| <ul class="toc"> |
| <li><a href="#platform" title="Включение поддержки JDK 8 в IDE NetBeans">Включение поддержки JDK 8 в IDE NetBeans</a></li> |
| <li><a href="#project" title="Настройка проекта для работы с JDK 8">Настройка проекта для работы с JDK 8</a></li> |
| <li><a href="#compact" title="Использование поддержки компактных профилей">Использование поддержки компактных профилей</a></li> |
| <li><a href="#lambda" title="Использование поддержки лямбда-выражений">Использование поддержки лямбда-выражений</a></li> |
| <li><a href="#annot" title="Использование поддержки повторных аннотаций">Использование поддержки повторных аннотаций</a></li> |
| |
| <li><a href="#see" title="См. также">См. также</a></li> |
| </ul> |
| |
| <p><b>Для работы с этим учебным курсом требуются программное обеспечение и материалы, перечисленные в таблице ниже.</b></p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Программное обеспечение или ресурс</th> |
| <th class="tblheader" scope="col">Требуемая версия</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.netbeans.org/downloads/index.html">IDE NetBeans</a></td> |
| <td class="tbltd1">версия 7.4</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://jdk8.java.net/download.html" target="_blank">Комплект для разработчика на языке Java (JDK)</a></td> |
| <td class="tbltd1">версия 8</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="platform"></a>Включение поддержки JDK 8 в IDE NetBeans</h2> |
| <p>После загрузки и установки JDK 8 на компьютере необходимо зарегистрировать эту платформу в IDE:</p> |
| |
| <ol> |
| <li>В среде IDE выберите "Сервис" > "Платформы Java".</li> |
| <li>В диалоговом окне 'Диспетчер платформ Java' нажмите 'Добавить платформу'. </li> |
| <li>В диалоговом окне 'Добавление платформы Java' выберите Java Standard Edition и нажмите 'Далее'. </li> |
| <li>Укажите каталог, в котором находится JDK, и нажмите 'Далее'. |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/jdk8.png" rel="lytebox" title="Выбрана платформа JDK 8"> <img alt="Выбрана платформа JDK 8" border="1" src="../../../images_www/articles/74/java/javase-jdk8/jdk8_small.png"></a> </p></li> |
| <li>Проверьте правильность местоположений по умолчанию для zip-архива Platform Sources и документации API. Для закрытия диалога добавления платформы Java нажмите кнопку "Готово".<br> Платформа JDK 8 зарегистрирована в IDE. |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/jdk8registered.png" rel="lytebox" title="Зарегистрированная платформа Java"> <img alt="Зарегистрированная платформа Java" border="1" src="../../../images_www/articles/74/java/javase-jdk8/jdk8registered_small.png"></a> </p></li> |
| <li>Убедитесь в том, что в списке "Платформы" выбран пункт "JDK 1.8", и нажмите кнопку "Закрыть".</li> |
| </ol> |
| <h2><a name="project"></a>Настройка проекта для работы с JDK 8</h2> |
| <p>После регистрации платформы JDK 8 в IDE необходимо настроить проект для работы с JDK 8 и выполнения компиляции, запуска и отладки. </p> |
| <p>Создайте новый проект Java SE на основе примера игры Anagram, поставляемого в комплекте с IDE NetBeans.</p> |
| <ol> |
| <li>В меню IDE выберите Файл > Создать проект.</li> |
| <li>В мастере создания проектов разверните категорию 'Образцы' и выберите Java.</li> |
| <li>В списке 'Проекты' выберите 'Игра Anagram'. Затем нажмите кнопку "Дальше". </li> |
| <li>На панели 'Имя и местоположение' оставьте без изменения данные в полях 'Имя проекта' и 'Местоположение проекта'.</li> |
| <li>Нажмите 'Готово'.<br>IDE создает проект Java SE и открывает его в окне 'Проекты'.</li> |
| </ol> |
| <p><b>Настройка проекта для работы с JDK 8:</b></p> |
| <ol> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши проект AnagramGame и выберите 'Свойства' в контекстном меню. </li> |
| <li>В диалоговом окне 'Свойства проекта' выберите категорию 'Библиотеки' и выберите JDK 1.8 в качестве платформы Java. |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/prj_jdk8.png" rel="lytebox" title="JDK 8 выбрана в качестве платформы Java"> <img alt="JDK 8 выбрана в качестве платформы Java" border="1" src="../../../images_www/articles/74/java/javase-jdk8/prj_jdk8_small.png"></a> </p></li> |
| <li>Выберите категорию 'Источники', затем выберите JDK 8 в списке 'Исходный/двоичный формат'. |
| |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/prj_source_jdk8.png" rel="lytebox" title="Выбор JDK 8 в качестве исходного/двоичного формата"> <img alt="Выбор JDK 8 в качестве исходного/двоичного формата" border="1" src="../../../images_www/articles/74/java/javase-jdk8/prj_source_jdk8_small.png"></a> </p> </li> |
| <li>Нажмите OK для сохранения изменений. <br>Теперь проект настроен на распознавание новых функций языка JDK 8.</li> |
| </ol> |
| <h2><a name="compact"></a>Использование поддержки компактных профилей</h2> |
| <p>В платформе Java SE 8 впервые реализованы <a href="http://openjdk.java.net/jeps/161">подклассы профилей стандарта Java SE</a>, которые можно использовать для развертывания и запуска приложений, не требующих наличия полного функционала платформы. </p> |
| <p>Имеющиеся на данный момент профили называются <i>compact1</i>, <i>compact2</i> и <i>compact3</i>. Каждый профиль задает определенный набор пакетов Java API и включает в себя все API-интерфейсы более мелких профилей: <i>compact1</i> является подклассом для <i>compact2</i>, который в свою очередь является подклассом для <i>compact3</i>, который является подклассом для <i>Полного JRE</i>. В таблице перечислены пакеты, включенные в состав каждого из профилей. </p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Compact1</th> |
| <th class="tblheader" scope="col">Compact2</th> |
| <th class="tblheader" scope="col">Compact3</th> |
| <th class="tblheader" scope="col">Полный JRE</th> |
| </tr> |
| <tr> |
| <td> |
| <ul> |
| <li>java.lang</li> |
| <li>java.io</li> |
| <li>java.nio</li> |
| <li>java.text</li> |
| <li>java.math</li> |
| <li>java.net</li> |
| <li>javax.net</li> |
| <li>java.util</li> |
| <li>java.util.logging</li> |
| <li>java.security</li> |
| <li>javax.crypto</li> |
| <li>javax.security</li> |
| </ul></td> |
| <td><i>compact1</i> плюс следующее: |
| <ul> |
| <li>java.sql</li> |
| <li>javax.sql</li> |
| <li>javax.xml</li> |
| <li>org.w3c.dom</li> |
| <li>org.xml.sax</li> |
| <li>java.rmi</li> |
| <li>javax.rmi</li> |
| <li>javax.transaction</li></ul></td> |
| <td><i>compact2</i> плюс следующее: |
| <ul> |
| <li>java.lang.management</li> |
| <li>javax.management</li> |
| <li>javax.naming</li> |
| <li>javax.sql.rowset</li> |
| <li>javax.security.auth.kerberos</li> |
| <li>org.ietf.jgss</li> |
| <li>javax.script</li> |
| <li>javax.xml.crypto</li> |
| <li>java.util.prefs</li> |
| <li>javax.security.sasl</li> |
| <li>javax.security.acl</li> |
| <li>java.lang.instrument</li> |
| <li>javax.annotation.processing</li> |
| <li>javax.lang.model</li> |
| <li>javax.lang.model.element</li> |
| <li>javax.lang.model.type</li> |
| <li>javax.lang.model.util</li> |
| <li>javax.tools</li> |
| </ul></td> |
| <td ><i>compact3</i> плюс следующее: |
| <ul> |
| <li>corba</li> |
| <li> awt</li> |
| <li>swing</li></ul></td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td></tr> |
| </tbody> |
| </table> |
| <p>IDE позволяет переключаться между этими профилями и профилем 'Полный JRE' по мере необходимости. </p> |
| <p><b>Выбор профиля для проекта Java SE:</b></p> |
| <ol> |
| <li>Щелкните проект правой кнопкой мыши и выберите 'Свойства' в контекстном меню. </li> |
| <li>В диалоговом окне 'Свойства проекта' выберите категорию 'Источники'. </li> |
| <li>Выберите из списка 'Профиль' поддерживаемый профиль JDK 8 для приложения. |
| |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/prj_src_profile.png" rel="lytebox" title="Список профилей"> <img alt="Список профилей" border="1" src="../../../images_www/articles/74/java/javase-jdk8/prj_src_profile_small.png"></a> </p> |
| </li> |
| <li>Нажмите ОК.</li> |
| </ol> |
| <p>IDE проверяет, принадлежат ли классы, используемые в проекте, определенному профилю. Чтобы рассмотреть это на примере, выберите Compact1 в качестве профиля проекта AnagramGame и нажмите ОК.<br>В IDE отображаются сообщения об ошибках, указывающие на то, что проект AnagramGame несовместим с профилем <i>compact1</i>.</p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/profile.png" rel="lytebox" title="Профиль"> <img alt="Профиль" border="1" src="../../../images_www/articles/74/java/javase-jdk8/profile_small.png"></a> </p> |
| <p>Вы можете вернуться и изменить профиль проекта AnagramGame на 'Полный JRE', поддерживаемый приложением Anagrams. </p> |
| |
| |
| |
| |
| <h2><a name="lambda"></a>Использование поддержки лямбда-выражений</h2> |
| |
| <p><a href="http://openjdk.java.net/projects/lambda/">Лямбда-выражения</a> являются более компактным способом представления механизмов анонимных внутренних классов и делают эти классы менее массивными.</p> |
| <p>В общем случае синтаксис лямбда-выражения состоит из набора параметров, маркера стрелки и тела функции (одиночного выражения или блока выражений):</p> |
| <pre>(int a, int b) -> a * a + b * b;</pre> |
| <p>IDE NetBeans обнаруживает конструкции, которые можно преобразовать в лямбда-выражения, и в редакторе отображаются соответствующие подсказки.</p> |
| <p>Например, в проекте AnagramGame подобная конструкция есть в файле <tt>Anagrams.java</tt>, показанном на рисунке.</p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/lambda.png" rel="lytebox" title="Лямбда"> <img alt="Лямбда при нажатии" border="1" src="../../../images_www/articles/74/java/javase-jdk8/lambda_small.png"></a> </p> |
| <p>Если нажать на значок подсказки или нажать Alt-Enter, в IDE отображается подсказка 'Использование лямбда', в которой предлагается несколько вариантов: </p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/lambda_clicked.png" rel="lytebox" title="Лямбда при нажатии"> <img alt="Лямбда при нажатии" border="1" src="../../../images_www/articles/74/java/javase-jdk8/lambda_clicked_small.png"></a> </p> |
| <p>Если выбрать подсказку 'Использование лямбда', IDE преобразует анонимный внутренний класс в лямбда-выражение. </p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/lambda_converted.png" rel="lytebox" title="Лямбда после преобразования"> <img alt="Лямбда после преобразования" border="1" src="../../../images_www/articles/74/java/javase-jdk8/lambda_converted_small.png"></a> </p> |
| <p>Если выбрать параметр 'Начать проверку в...', в IDE отображается диалоговое окно 'Проверка', в котором можно выполнить одну проверку 'Преобразование в лямбда' для выбранного файла.</p> |
| <p class="notes"><b>Примечание.</b> Дополнительные сведения о запуске операции 'Проверка' в IDE см. в разделе <a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613">Использование подсказок при анализе и рефакторинге исходного кода</a> в документе <i>Разработка приложений в IDE NetBeans</i>.</p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/inspect.png" rel="lytebox" title="Выполнить проверку"> <img alt="Выполнить проверку" border="1" src="../../../images_www/articles/74/java/javase-jdk8/inspect_small.png"></a> </p> |
| |
| <p>При нажатии на кнопку 'Проверка' IDE находит в файле все конструкции, которые можно преобразовать в лямбда-выражения, и отображает их в окне 'Инспектор'. </p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/lambda_inspection.png" rel="lytebox" title="Проверка лямбда"> <img alt="Проверка лямбда" border="1" src="../../../images_www/articles/74/java/javase-jdk8/lambda_inspection_small.png"></a> </p> |
| <p>Если выбрать параметр 'Начать проверку и преобразование...', в IDE отображается диалоговое окно 'Проверка и преобразование', в котором можно выполнить одну проверку 'Преобразование в лямбда' (или выбранную конфигурацию) для указанного кода и при необходимости оптимизировать его.</p> |
| <p class="notes"><b>Примечание.</b> Дополнительные сведения о запуске операции 'Проверка и преобразование' см. в разделе <a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613">Использование подсказок при анализе и рефакторинге исходного кода</a> в документе <i>Разработка приложений в IDE NetBeans</i>.</p> |
| <p class="align-center"><a href="../../../images_www/articles/74/java/javase-jdk8/lambda_transform.png" rel="lytebox" title="Рефакторинг лямбда"> <img alt="Рефакторинг лямбда" border="1" src="../../../images_www/articles/74/java/javase-jdk8/lambda_transform_small.png"></a> </p> |
| <h2><a name="annot"></a>Использование поддержки повторных аннотаций</h2> |
| <p>Java SE 8 предоставляет функцию <a href="http://openjdk.java.net/jeps/120">повторных аннотаций</a>, которая позволяет применять однотипные аннотации к отдельным элементам программы, как показано в приведенном ниже примере кода:</p> |
| |
| <pre class="examplecode"> |
| @ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2seproject") |
| @ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2eeproject") |
| public class MyService extends Foo {} |
| </pre> |
| <p>Поддержка повторных аннотаций в IDE NetBeans позволяет писать код с одними и теми же аннотациями при условии, что объявлены соответствующие типы аннотаций (повторные или содержащие): </p> |
| <ul> |
| <li>Повторная аннотация должна иметь обозначение <tt>@Repeatable ()</tt>, в противном случае при компиляции произойдет ошибка |
| </li> |
| <li>Содержащая аннотация должна включать в себя элемент <tt>value</tt> типа 'массив'; тип компонента типа 'массив' должен быть типом повторной аннотации</li> |
| </ul> |
| |
| |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback:%20Overview%20of%20JDK%208%20Support%20in%20NetBeans%20IDE">Отправить отзыв по этому учебному курсу</a></div> |
| <br style="clear:both;" > |
| <h2><a name="see"></a>См. также</h2> |
| <p>Дополнительные сведения о платформе JDK 8: </p> |
| <ul> |
| |
| |
| <li><a href="http://jdk8.java.net/">Проект JDK 8</a></li> |
| <li><a href="http://download.java.net/jdk8/docs/">Документация Java Platform Standard Edition 8 Early Access</a></li> |
| <li><a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html" target="_blank">Java SE 8. Краткое руководство по лямбда-выражениям</a> </li> |
| <li><a href="http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html" target="_blank">Практические руководства по Java: лямбда-выражения</a></li> |
| <li><a href="http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Практические руководства по Java: повторные аннотации</a></li> |
| </ul> |
| |
| <p>Дополнительные сведения о разработке приложений в IDE NetBeans см. следующие ресурсы: </p> |
| <ul> |
| <li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG366">Создание проектов Java</a> в документе <i>Разработка приложений в IDE NetBeans</i></li> |
| <li><a href="javase-intro.html">Разработка общих приложений, написанных на Java</a></li> |
| <li><a href="editor-codereference.html">Работа с кодом в редакторе Java IDE NetBeans</a></li> |
| <li><a href="../../trails/java-se.html">Учебная карта по общим сведениям о разработке на Java</a></li> |
| </ul> |
| </body> |
| </html> |