| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- |
| Copyright (c) 2009, 2014, 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."> |
| </head> |
| |
| <body> |
| |
| <h1>Обзор поддержки JDK 7 в IDE NetBeans</h1> |
| <p>В IDE NetBeans реализована поддержка для новых языковых функций Java 7, таких как оператор diamond, оператор switch для перехода по переменным string, оператор multicatch и т.д. При использовании этих конструкций в коде, среда IDE распознает их, предлагает корректные классы при завершении кода, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий <a href="http://docs.oracle.com/javase/specs/jls/se7/html/index.html">спецификации языка Java, Java SE 7 Edition</a>. </p> |
| <p>В этом практическом руководстве вы узнаете, как в IDE обрабатываются языковые конструкции Java 7. </p> |
| <p><b>Содержание</b></p> |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 7.4 и 8.0" class="stamp" src="../../../images_www/articles/74/netbeans-stamp-80-74.png" title="Содержимое на этой странице применимо к IDE NetBeans 7.4 и 8.0"> |
| <ul class="toc"> |
| <li><a href="#platform">Проверка регистрации JDK 7 в IDE</a></li> |
| <li><a href="#project">Проверка конфигурации проекта</a></li> |
| <li><a href="#switch">Использование новых языковых конструкций JDK 7: оператор переключения</a></li> |
| <li><a href="#more">Поддержка JDK 7: дополнительные примеры</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="https://netbeans.org/downloads/index.html">IDE NetBeans</a></td> |
| <td class="tbltd1">версия 7.4 или 8.0</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 или 8</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="platform"></a>Проверка регистрации JDK 7 в IDE NetBeans</h2> |
| |
| <p>Проверка регистрации JDK 7 в IDE NetBeans:</p> |
| <ol> |
| <li>В среде IDE выберите "Сервис" > "Платформы Java".</li> |
| <li>Проверьте, что в списке 'Платформы' в диалоговом окне 'Диспетчер платформ Java' выбрана версия JDK 1.7. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/platform.png" rel="lytebox" title="Зарегистрированная платформа Java"> <img alt="Зарегистрированная платформа Java" border="1" src="../../../images_www/articles/74/java/javase-jdk7/platform-small.png"></a></p> |
| </li> |
| <li>Выберите "Close" (Закрыть).</li> |
| </ol> |
| <h2><a name="project"></a>Проверка конфигурации проекта</h2> |
| <p>Проверка пригодности конфигурации проекта для работы с зарегистрированной платформой JDK, включая компиляцию, запуск и отладку:</p> |
| <ol> |
| <li>Создайте проект Java (выберите 'Файл > Создать проект', затем в списке 'Тип проекта' выберите 'Приложение Java').</li> |
| <li>Нажмите кнопку "Далее".</li> |
| <li>В качестве имени проекта введите <tt>SwitchTest</tt> и укажите его местоположение. </li> |
| <li>Нажмите 'Готово'.</li> |
| <li>В окне 'Проекты' щелкните правой кнопкой мыши узел проекта <tt>SwitchTest</tt> и выберите 'Свойства > Библиотеки'. Убедитесь, что в списке 'Платформы Java' на этой вкладке выбрана версия JDK 1.7. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/props-libs.png" rel="lytebox" title="Платформа JDK 7 выбрана в качестве целевого формата"> <img alt="Платформа JDK 7 выбрана в качестве целевого формата" border="1" src="../../../images_www/articles/74/java/javase-jdk7/props-libs-small.png"></a></p></li> |
| <li>В окне 'Свойства проекта' перейдите на вкладку 'Исходный код'. В списке 'Исходный/двоичный формат' должна быть выбрана версия JDK 7. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/props-sources.png" rel="lytebox" title="Платформа JDK 7 выбрана в качестве исходного формата"> <img alt="Платформа JDK 7 выбрана в качестве исходного формата" border="1" src="../../../images_www/articles/74/java/javase-jdk7/props-sources-small.png"></a></p> |
| </li> |
| <li>Нажмите кнопку "ОК" для закрытия диалогового окна "Свойства проекта". Ваш проект настроен для работы с компонентами языка Java 7.<br> |
| </li> |
| </ol> |
| |
| <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. |
| <p class="align-center"> |
| <img alt="Выходные данные запуска проекта" border="1" src="../../../images_www/articles/74/java/javase-jdk7/output.png"></p></li> |
| <li>Вернемся к JDK 6 и проверим компилирование приложения с помощью компилятора JDK 6. <br> В окне 'Проекты' щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. В категории 'Источники' в списке 'Исходный/двоичный формат' выберите <tt>JDK 6</tt> и нажмите ОК.<br> Сразу видно, что синтаксический анализатор JDK6 не распознает синтаксис. Компиляция завершается с ошибкой из-за несовместимого типа переменной. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/error.png" rel="lytebox" title="Ошибка"> <img alt="Ошибка" border="1" src="../../../images_www/articles/74/java/javase-jdk7/error-small.png"></a></p> |
| </li> |
| <li>Теперь перепишите код, используя оператор <tt>if-then-else</tt> вместо оператора <tt>switch</tt>: |
| <pre class="examplecode">package switchtest; |
| |
| public class SwitchTest { |
| |
| public static void main(String[] args) { |
| |
| String color = "red"; |
| String colorRGB; |
| if (color.equals("black")) { |
| colorRGB = "000000"; |
| } else if (color.equals("red")) { |
| colorRGB = "ff0000"; |
| } else if (color.equals("green")) { |
| colorRGB = "008000"; |
| } else if (color.equals("blue")) { |
| colorRGB = "0000ff"; |
| } else { |
| colorRGB = "Invalid color"; |
| } |
| System.out.println(colorRGB); |
| } |
| } |
| </pre> |
| |
| Если в качестве исходного/двоичного формата выбрана версия JDK 7, IDE распознает такие случаи и предлагает преобразовать их в <tt>switch</tt>, как показано на рисунке. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/convert.png" rel="lytebox" title="Подсказка для преобразования в switch"> <img alt="Подсказка для преобразования в switch" border="1" src="../../../images_www/articles/74/java/javase-jdk7/convert-small.png"></a></p> |
| Щелкните подсказку, и конструкция <tt>if-then-else</tt> будет автоматически преобразована в конструкцию <tt>switch</tt>, которая использовалась ранее.</li> |
| </ol> |
| <h2><a id="more" name="more"></a>Поддержка JDK 7: дополнительные примеры</h2> |
| <p>Чтобы проиллюстрировать возможности распознавания и автоматического исправления кода в редакторе Java среды IDE для обеспечения совместимости со спецификациями языка JDK 7, воспользуемся фрагментом кода, который не имеет смысла, но содержит все основные улучшения. </p> |
| <p>При анализе этого фрагмента кода и применении подсказок редактора будут продемонстрированы следующие возможности. </p> |
| <ul> |
| <li>Автоматический вывод типов, при котором компилятор Java определяет тип общего экземпляра без необходимости его явного указания. Так называемый <em>оператор "бубна"</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.lang.reflect.Method; |
| import java.io.IOException; |
| import java.lang.reflect.InvocationTargetException; |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| |
| public class SwitchTest { |
| |
| public void test() throws IOException { |
| List<String> list = new ArrayList<String>(); |
| HashMap<String, Integer> map = new HashMap<String, Integer>(); |
| HashMap<String, Integer> map2 = new HashMap<String, Integer>(); |
| 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. Этот код будет выглядеть так же, как код, показанный ниже. |
| <p class="align-center"> |
| <a href="../../../images_www/articles/74/java/javase-jdk7/converted.png" rel="lytebox" title="Фрагмент преобразованного кода"> <img alt="Фрагмент преобразованного кода" border="1" src="../../../images_www/articles/74/java/javase-jdk7/converted-small.png"></a></p> |
| |
| </li> |
| </ol> |
| |
| <div class="indent"></div> |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback: Overview of JDK 7 Support in NetBeans IDE">Отправить отзыв по этому учебному курсу</a></div> |
| <br style="clear:both;" > |
| <h2><a name="see"></a>См. также</h2> |
| <p>Дополнительные сведения о JDK 7 и IDE NetBeans см.: </p> |
| <ul> |
| <li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG465" target="_blank">Настройка целевого JDK</a> в документе <i>Разработка приложений с помощью NetBeans IDE</i></a></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="../../trails/java-se.html">Учебная карта по общим сведениям о разработке на Java</a></li> |
| <li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366" target="_blank">Создание проектов Java</a> в документе <i>Разработка приложений в IDE NetBeans</i></a></li> |
| </ul> |
| </body> |
| </html> |