blob: 0a3036a174033025b67da4bb84835341fb06077c [file] [log] [blame]
<!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 выберите &quot;Сервис&quot; &gt; &quot;Платформы Java&quot;.</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 нажмите кнопку &quot;Готово&quot;.<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>Убедитесь в том, что в списке &quot;Платформы&quot; выбран пункт &quot;JDK 1.8&quot;, и нажмите кнопку &quot;Закрыть&quot;.</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'. Затем нажмите кнопку &quot;Дальше&quot;. </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) -&gt; 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&amp;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&amp;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,&quot;org-nebeans-modules-j2seproject&quot;)
@ProjectServiceProvider(service=Foo.class,&quot;org-nebeans-modules-j2eeproject&quot;)
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&amp;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>