| // |
| // 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 7 в IDE NetBeans |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Обзор поддержки JDK 7 в IDE NetBeans - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Обзор поддержки JDK 7 в IDE NetBeans |
| |
| В IDE NetBeans реализована поддержка для новых языковых функций Java 7, таких как оператор diamond, оператор switch для перехода по переменным string, оператор multicatch и т.д. При использовании этих конструкций в коде, среда IDE распознает их, предлагает корректные классы при завершении кода, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий link:http://docs.oracle.com/javase/specs/jls/se7/html/index.html[+спецификации языка Java, Java SE 7 Edition+]. |
| |
| В этом практическом руководстве вы узнаете, как в IDE обрабатываются языковые конструкции Java 7. |
| |
| |
| 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)+] |версия 7 или 8 |
| |=== |
| |
| |
| == Проверка регистрации JDK 7 в IDE NetBeans |
| |
| Проверка регистрации JDK 7 в IDE NetBeans: |
| |
| 1. В среде IDE выберите "Сервис" > "Платформы Java". |
| 2. Проверьте, что в списке 'Платформы' в диалоговом окне 'Диспетчер платформ Java' выбрана версия JDK 1.7. |
| |
| [.feature] |
| -- |
| image::images/platform-small.png[role="left", link="images/platform.png"] |
| -- |
| |
| |
| |
| . Выберите "Close" (Закрыть). |
| |
| |
| == Проверка конфигурации проекта |
| |
| Проверка пригодности конфигурации проекта для работы с зарегистрированной платформой JDK, включая компиляцию, запуск и отладку: |
| |
| 1. Создайте проект Java (выберите 'Файл > Создать проект', затем в списке 'Тип проекта' выберите 'Приложение Java'). |
| 2. Нажмите кнопку "Далее". |
| 3. В качестве имени проекта введите ``SwitchTest`` и укажите его местоположение. |
| 4. Нажмите 'Готово'. |
| 5. В окне 'Проекты' щелкните правой кнопкой мыши узел проекта ``SwitchTest`` и выберите 'Свойства > Библиотеки'. Убедитесь, что в списке 'Платформы Java' на этой вкладке выбрана версия JDK 1.7. |
| |
| [.feature] |
| -- |
| image::images/props-libs-small.png[role="left", link="images/props-libs.png"] |
| -- |
| |
| |
| |
| . В окне 'Свойства проекта' перейдите на вкладку 'Исходный код'. В списке 'Исходный/двоичный формат' должна быть выбрана версия JDK 7. |
| |
| [.feature] |
| -- |
| image::images/props-sources-small.png[role="left", link="images/props-sources.png"] |
| -- |
| |
| |
| |
| . Нажмите кнопку "ОК" для закрытия диалогового окна "Свойства проекта". Ваш проект настроен для работы с компонентами языка Java 7. |
| |
| |
| == Использование новых языковых конструкций JDK 7: оператор переключения |
| |
| JDK 7 содержит link:http://openjdk.java.net/projects/jdk7/features/[+множество новых функций и расширений+] в различных аспектах, в том числе при интернационализации, вводе-выводе, работе с сетью, безопасности и т.д. Для ознакомления с поддержкой JDK 7 в редакторе Java среды IDE проще всего продемонстрировать некоторые изменения, введенные в проекте Coin. |
| |
| Одним из таких изменений является использование типа String в операторе switch. В предыдущих версиях Java аргументами оператора ``switch`` могли быть только такие простейшие типы данных как ``byte`` , ``short`` , ``char`` , ``int`` и ``enum`` . Начиная с JDK 7, аргументы типа ``String`` также можно использовать в выражении оператора ``switch`` . |
| |
| 1. Откройте файл ``SwitchTest.java`` и вставьте следующий код. В этом примере отображаются коды RGB для различных цветов. |
| JDK 7 позволяет переменной ``color`` иметь тип ``String`` . |
| |
| [source,java] |
| ---- |
| |
| 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); |
| } |
| } |
| |
| ---- |
| |
| Если вставленный код некорректно форматируется в редакторе, нажмите сочетание клавиш ALT+SHIFT+F для выполнения повторного форматирования. |
| |
| |
| |
| . В окне 'Проекты' щелкните правой кнопкой мыши узел проекта и выберите 'Запустить файл'. На экране отобразится вывод приложения, который представляет собой код RGB для красного цвета. |
| Таким образом, сборка выполнена успешно, а приложение успешно работает при указании целевой платформы и исходного формата JDK 7. |
| |
| image::images/output.png[] |
| |
| |
| |
| . Вернемся к JDK 6 и проверим компилирование приложения с помощью компилятора JDK 6. |
| В окне 'Проекты' щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. В категории 'Источники' в списке 'Исходный/двоичный формат' выберите ``JDK 6`` и нажмите ОК. |
| Сразу видно, что синтаксический анализатор JDK6 не распознает синтаксис. Компиляция завершается с ошибкой из-за несовместимого типа переменной. |
| |
| [.feature] |
| -- |
| image::images/error-small.png[role="left", link="images/error.png"] |
| -- |
| |
| |
| |
| . Теперь перепишите код, используя оператор ``if-then-else`` вместо оператора ``switch`` : |
| |
| [source,java] |
| ---- |
| |
| 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); |
| } |
| } |
| |
| ---- |
| Если в качестве исходного/двоичного формата выбрана версия JDK 7, IDE распознает такие случаи и предлагает преобразовать их в ``switch`` , как показано на рисунке. |
| |
| [.feature] |
| -- |
| image::images/convert-small.png[role="left", link="images/convert.png"] |
| -- |
| |
| Щелкните подсказку, и конструкция ``if-then-else`` будет автоматически преобразована в конструкцию ``switch`` , которая использовалась ранее. |
| |
| |
| == Поддержка JDK 7: дополнительные примеры |
| |
| Чтобы проиллюстрировать возможности распознавания и автоматического исправления кода в редакторе Java среды IDE для обеспечения совместимости со спецификациями языка JDK 7, воспользуемся фрагментом кода, который не имеет смысла, но содержит все основные улучшения. |
| |
| При анализе этого фрагмента кода и применении подсказок редактора будут продемонстрированы следующие возможности. |
| |
| * Автоматический вывод типов, при котором компилятор Java определяет тип общего экземпляра без необходимости его явного указания. Так называемый _оператор "бубна"_ позволяет отметить случаи вывода типа. |
| * Улучшенная обработка исключений или _мультизахват_, при котором один блок ``catch`` может использоваться для нескольких типов исключений. |
| * Новый синтаксис операторов закрытия ресурсов, используемый функцией автоматического управления ресурсами. |
| |
| 1. Замените существующий код приложения в том же файле ``SwitchTest.java`` следующим кодом: |
| |
| [source,java] |
| ---- |
| |
| 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(); |
| } |
| } |
| } |
| } |
| |
| ---- |
| |
| |
| . Обратите внимание, что в среде IDE отображаются подсказки по оптимизации кода в соответствии со спецификациями JDK 7. Щелкните подсказки и выберите предложенные действия. |
| |
| |
| . По принятии всех предложений будет создан код, совместимый с JDK 7. Этот код будет выглядеть так же, как код, показанный ниже. |
| |
| [.feature] |
| -- |
| image::images/converted-small.png[role="left", link="images/converted.png"] |
| -- |
| |
| link:/about/contact_form.html?to=3&subject=Feedback: Overview of JDK 7 Support in NetBeans IDE[+Отправить отзыв по этому учебному курсу+] |
| |
| |
| |
| == См. также |
| |
| Дополнительные сведения о JDK 7 и IDE NetBeans см.: |
| |
| * link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG465[+Настройка целевого JDK+] в документе _Разработка приложений с помощью NetBeans IDE_ |
| * link:http://download.oracle.com/javase/tutorial/essential/io/fileio.html[+Учебные курсы по Java: ввод-вывод файлов+] — раздел учебных курсов Java, содержащий многочисленные примеры об изменениях JDK 7 во вводе-выводе. |
| * link:http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html[+Учебные курсы по Java: ветвление и объединение+] — описание новой платформы ветвления и объединения в JDK7. |
| |
| Дополнительные сведения о разработке приложений в IDE NetBeans см. следующие ресурсы: |
| |
| * link:javase-intro.html[+Разработка общих приложений, написанных на Java+] |
| * link:../../trails/java-se.html[+Учебная карта по общим сведениям о разработке на Java+] |
| * link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366[+Создание проектов Java+] в документе _Разработка приложений в IDE NetBeans_ |