blob: deb01138a27766dafecbc2b18579e280e8f60a7c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Обзор поддержки JDK 7 в 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. Also includes information on setting the JDK."/>
</head>
<body>
<h1>Обзор поддержки JDK 7 в IDE NetBeans</h1>
<p>В IDE NetBeans реализована поддержка для новых языковых функций JDK 7, таких как оператор diamond, оператор switch для перехода по переменным String, оператор multicatch и т.д. При использовании этих конструкций в коде, среда IDE распознает их, предлагает допустимые классы при завершении кода, правильно выделяет ошибки и позволяет пользователям автоматически исправлять синтаксис. Таким образом IDE NetBeans обеспечивает возможность написания кода, совместимого с языковыми спецификациями. </p>
<p>В этом учебном курсе будет рассмотрено включение поддержки JDK 7 в среде IDE, а также обработка новых языковых конструкций в среде IDE. </p>
<p><b>Содержание</b></p>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.0 и 7.1" class="stamp" src="../../../images_www/articles/70/netbeans-stamp-70-71.png" title="Содержимое на этой странице применимо к IDE NetBeans 7.0 и 7.1">
<ul class="toc">
<li><a href="#add" title="Настройка проектов">Регистрация Java 7 в IDE NetBeans</a></li>
<li><a href="#project">Настройка использования JDK 7 в проекте</a></li>
<li><a href="#switch">Использование новых языковых конструкций JDK 7: оператор переключения</a></li>
<li><a href="#more">Поддержка JDK 7: дополнительные примеры</a></li>
<li><a href="#nextsteps" 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.0 и 7.1</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Комплект для разработчика на языке Java (JDK)</a></td>
<td class="tbltd1">7</td>
</tr>
</tbody>
</table>
<h2><a name="add"></a>Регистрация Java 7 в IDE NetBeans </h2>
<!--<p>Before the official release of Java™ Platform, Standard Edition 7, you can obtain the JDK 7 source code and development builds from the <a href="http://openjdk.java.net/projects/jdk7" target="_blank">OpenJDK Project</a> website. </p>-->
<p><strong>Включение поддержки JDK 7 в IDE NetBeans: </strong></p>
<ol>
<li>Загрузите и установите JDK 7 на свою систему.</li>
<li>В среде IDE выберите &quot;Сервис&quot; &gt; &quot;Платформы Java&quot;.</li>
<li>Выберите команду &quot;Добавить платформу&quot; и укажите каталог, содержащий пакет JDK (например, в системе Windows это каталог установки JDK, местоположение которого по умолчанию <tt>C:\Program Files\Java\jdk1.7.0</tt>). <br> Каталог, содержащий платформу Java, помечен значком <img alt="Значок платформы Java" src="../../../images_www/articles/70/java/javase-jdk7/platform.gif">. </li>
<li>На этапе &quot;Имя платформы&quot; убедитесь в том, что местоположения архива ZIP источника платформы и документации по интерфейсу API действительны. </li>
<li>Для закрытия диалога добавления платформы Java нажмите кнопку &quot;Готово&quot;.</li>
<li>Убедитесь в том, что в списке &quot;Платформы&quot; выбран пункт &quot;JDK 1.7&quot;, и нажмите кнопку &quot;Закрыть&quot;.</li>
</ol>
<table>
<tr>
<!-- Start Embed Video -->
<td class="valign-top" class="align-center" width="480" >
<embed src="http://bits.netbeans.org/media/register-jdk7.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed>
<td>Для просмотра полной версии перейдите по <a href="http://bits.netbeans.org/media/register-jdk7.swf">этой ссылке</a>. Для загрузки щелкните, удерживая клавишу CTRL (1,1 Мб).</td>
<!-- End Embed Video -->
</tr>
</table>
<p class="notes"><strong>Примечание.</strong> Документация Javadoc для платформы интерфейса API, используемого по умолчанию, расположен <a href="http://download.java.net/jdk7/docs/" target="_blank">по этому адресу</a>. Для автономного использования можно загрузить файл JAR документации Javadoc со <a href="http://dlc.sun.com.edgesuite.net/jdk7/binaries/index.html" target="_blank">страницы двоичных снимков JDK7</a> и указать его местоположение в системе. </p>
<h2><a name="project"></a>Настройка использования JDK 7 в проекте</h2>
<p>После регистрации JDK 7 в среде IDE необходимо настроить проект для использования JDK при компиляции, выполнении и отладке. </p>
<ol>
<li>Создайте проект Java. Выберите команды &quot;Файл&quot; &gt; &quot;Создать проект&quot;, а затем выберите тип проекта &quot;Приложение Java&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>В качестве имени проекта введите <tt>SwitchTest</tt> и укажите его местоположение. </li>
<li>В окне 'Файлы' щелкните правой кнопкой мыши проект <tt>SwitchTest</tt> и выберите 'Свойства' > 'Библиотеки'. На этой вкладке в списке платформ Java пункт JDK 1.7<br> <img alt="Указание JDK 7 как целевого формата" class="margin-around b-all" src="../../../images_www/articles/70/java/javase-jdk7/props-libs.png"></li>
<li>Перейдите на вкладку &quot;Исходные коды&quot; в окне &quot;Свойства проекта&quot; и выберите JDK 7 в качестве формата исходных/двоичных файлов. <br> <img alt="Указание JDK 7 как исходного формата" class="margin-around" height="431" src="../../../images_www/articles/70/java/javase-jdk7/props-sources.png" width="573"></li>
<li>Нажмите кнопку &quot;ОК&quot; для подтверждения изменений. Теперь проект настроен на распознавание новых функций языка JDK 7.<br>
</li>
</ol>
<table>
<tr>
<!-- Start Embed Video -->
<td class="valign-top" class="align-center" width="480" >
<embed src="http://bits.netbeans.org/media/configuring-project-jdk7.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed>
<td>Для просмотра полной версии перейдите по <a href="http://bits.netbeans.org/media/configuring-project-jdk7.swf">этой ссылке</a>. Для загрузки щелкните, удерживая клавишу CTRL (1,3 Мб).</td>
<!-- End Embed Video -->
</tr>
</table>
<h2><a name="switch"></a>Использование новых языковых конструкций JDK 7: оператор переключения</h2>
<p>JDK 7 содержит <a href="http://openjdk.java.net/projects/jdk7/features/" target="_blank">множество новых функций и расширений</a> в различных аспектах, в том числе при интернационализации, вводе-выводе, работе с сетью, безопасности и т.д. Для ознакомления с поддержкой JDK 7 в редакторе Java среды IDE проще всего продемонстрировать некоторые изменения, введенные в проекте Coin. </p>
<p>Одним из таких изменений является использование типа String в операторе switch. В предыдущих версиях Java аргументами оператора <tt>switch</tt> могли быть только такие простейшие типы данных как <tt>byte</tt>, <tt>short</tt>, <tt>char</tt>, <tt>int</tt> и <tt>enum</tt>. Начиная с JDK 7, аргументы типа <tt>String</tt> также можно использовать в выражении оператора <tt>switch</tt>. </p>
<ol>
<li>Откройте файл <tt>SwitchTest.java</tt> и вставьте следующий код. В этом примере отображаются коды RGB для различных цветов. <br> JDK 7 позволяет переменной <tt>color</tt> иметь тип <tt>String</tt>.
<pre class="examplecode">package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = "red";
String colorRGB;
switch (color.toLowerCase()) {
case "black": colorRGB = "000000"; break;
case "red": colorRGB = "ff0000"; break;
case "green": colorRGB = "008000"; break;
case "blue": colorRGB = "0000ff"; break;
default: colorRGB = "Invalid color"; break;
}
System.out.println(colorRGB);
}
}
</pre>
<p class="tips">Если вставленный код некорректно форматируется в редакторе, нажмите сочетание клавиш ALT+SHIFT+F для выполнения повторного форматирования.</p>
</li>
<li>В окне 'Файлы' щелкните правой кнопкой мыши узел проекта и выберите 'Выполнить'. На экране отобразится вывод приложения, который представляет собой код RGB для красного цвета. <br> Таким образом, сборка выполнена успешно, а приложение успешно работает при указании целевой платформы и исходного формата JDK 7. <br> <img alt="Выходные данные запуска проекта" class="margin-around b-all" height="82" src="../../../images_www/articles/70/java/javase-jdk7/output.png" width="326"></li>
<li>Вернемся к JDK 6 и проверим компилирование приложения с помощью компилятора JDK 6. <br>В окне 'Файлы' щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. На вкладке &quot;Библиотеки&quot; установите платформу <tt>JDK 1.6</tt>, а на вкладке &quot;Исходные файлы&quot; выберите для параметра &quot;Формат исходных файлов&quot; значение <tt>JDK 6</tt>.<br> Сразу видно, что синтаксический анализатор JDK6 не распознает синтаксис. Компиляция завершается с ошибкой из-за несовместимого типа переменной. <br> <img alt="Выходные данные запуска проекта" class="margin-around b-all" height="142" src="../../../images_www/articles/70/java/javase-jdk7/error.png" width="482"></li>
<li>Теперь воспользуемся оператором <tt>if-then-else</tt> вместо <tt>switch</tt>, как показано на рисунке. <br> Если в качестве целевой платформы используется JDK 7, то среда IDE распознает такие случаи и предлагает преобразовать их в <tt>switch</tt>. <br> Щелкните подсказку, и конструкция <tt>if-then-else</tt> будет автоматически преобразована в конструкцию <tt>switch</tt>, которая использовалась ранее. <br> <img alt="Преобразование схемы if-then-else в переключатель" class="margin-around b-all" height="320" src="../../../images_www/articles/70/java/javase-jdk7/convert.png" width="398"></li>
<li>Запустите приложение с другими значениями. </li>
</ol>
<table>
<tr>
<!-- Start Embed Video -->
<td class="valign-top" class="align-center" width="480" >
<embed src="http://bits.netbeans.org/media/jdk7-switch-statement.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed>
<td>Для просмотра полной версии перейдите по <a href="http://bits.netbeans.org/media/jdk7-switch-statement.swf">этой ссылке</a>. Для загрузки щелкните, удерживая клавишу CTRL (2,5 Мб).</td>
<!-- End Embed Video -->
</tr>
</table>
<h2><a id="more" name="more"></a>Поддержка JDK 7: дополнительные примеры</h2>
<p>Чтобы проиллюстрировать возможности распознавания и автоматического исправления кода в редакторе Java среды IDE для обеспечения совместимости со спецификациями языка JDK 7, воспользуемся фрагментом кода, который не имеет смысла, но содержит все основные улучшения. </p>
<p>При анализе этого фрагмента кода и применении подсказок редактора будут продемонстрированы следующие возможности. </p>
<ul>
<li>Автоматический вывод типов, при котором компилятор Java определяет тип общего экземпляра без необходимости его явного указания. Так называемый <em>оператор &quot;бубна&quot;</em> позволяет отметить случаи вывода типа. </li>
<li>Улучшенная обработка исключений или <em>мультизахват</em>, при котором один блок <tt>catch</tt> может использоваться для нескольких типов исключений. <br>
</li>
<li>Новый синтаксис операторов закрытия ресурсов, используемый функцией автоматического управления ресурсами. </li>
</ul>
<ol>
<li>Замените существующий код приложения в файле <tt>SwitchTest.java</tt> следующим кодом.<br>
<pre class="examplecode">
package switchtest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class SwitchTest {
public void test() throws IOException {
List&lt;String&gt; list = new ArrayList&lt;String&gt;();
HashMap&lt;String, Integer&gt; map = new HashMap&lt;String, Integer&gt;();
HashMap&lt;String, Integer&gt; map2 = new HashMap&lt;String, Integer&gt;();
String a = "ehlo";
try {
Method m = Object.class.getMethod("toString");
m.invoke(this);
} catch(NoSuchMethodException e) {
e.printStackTrace();
} catch(InvocationTargetException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
}
FileInputStream in = null;
try {
in = new FileInputStream("foo.txt");
int k;
while ((k = in.read()) != -1) {
System.out.write(k);
}
} finally {
if (in != null) {
in.close();
}
}
}
}
</pre>
</li>
<li>Обратите внимание, что в среде IDE отображаются подсказки по оптимизации кода в соответствии со спецификациями JDK 7. Щелкните подсказки и выберите предложенные действия. <br>
</li>
<li>По принятии всех предложений будет создан код, совместимый с JDK 7. Этот код будет выглядеть так же, как код, показанный ниже.<br> <img alt="Фрагмент преобразованного кода" class="margin-around b-all" src="../../../images_www/articles/70/java/javase-jdk7/converted.png"><br>
</li>
</ol>
<table>
<tr>
<!-- Start Embed Video -->
<td class="valign-top" class="align-center" width="480" >
<embed src="http://bits.netbeans.org/media/jdk7-examples.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed>
<td>Для просмотра полной версии перейдите по <a href="http://bits.netbeans.org/media/jdk7-examples.swf">этой ссылке</a>. Для загрузки щелкните, удерживая клавишу CTRL (1,8 Мб).</td>
<!-- End Embed Video -->
</tr>
</table>
<div class="indent"></div>
<!--<br>-->
<div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback: JDK 7 Support in NetBeans IDE 7.0: A Quick Overview">Мы ждем ваших отзывов</a></div>
<br style="clear:both;" />
<h2><a name="nextsteps"></a>Что дальше?</h2>
<p>Дополнительные сведения о JDK 7 и IDE NetBeans см.: </p>
<ul>
<li><a href="http://wiki.netbeans.org/NewAndNoteworthyNB70#JDK7_support" target="_blank">Новые замечательные возможности версии 7.0</a> - см. дополнительные сведения о возможностях, реализованных в IDE NetBeans.</li>
<li><a href="http://blogs.sun.com/arungupta/entry/screencast_35_jdk_7_project" target="_blank">Демонстрационная версия: функции JDK 7 Project Coin в бета-версии IDE NetBeans 7.0</a> - видеодемонстрация поддержки функций JDK 7 в IDE NetBeans. </li>
<li><a href="http://download.oracle.com/javase/tutorial/essential/io/fileio.html" target="_blank">Учебные курсы по Java: ввод-вывод файлов</a> — раздел учебных курсов Java, содержащий многочисленные примеры об изменениях JDK 7 во вводе-выводе.</li>
<li><a href="http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html" target="_blank">Учебные курсы по Java: ветвление и объединение</a> — описание новой платформы ветвления и объединения в JDK7. </li>
</ul>
<p>Дополнительные сведения о разработке приложений в IDE NetBeans см. следующие ресурсы: </p>
<ul>
<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>