// 
//     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.
//

= Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok

image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]


* *Использование проекта Lombok для пользовательских аннотаций*

Для демонстрации принципов работы нестандартных аннотаций в IDE NetBeans используется проект Lombok, обеспечивающий удобный способ автоматического создания нескольких элементов кода Java, таких как методы получения, методы установки, конструкторы и другие. Дополнительные сведения о функциях проекта приведены на link:http://projectlombok.org/[+странице проекта Lombok+]. Следует, однако, помнить, что проект Lombok включает в себя ряд функций, которые могут работать не во всех средах разработки.

*Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.*

|===
|Программное обеспечение или материал |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 7 или 8 

|link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] |версия 1.12.4 и более поздние 
|===


== Создание проекта Java

В этом упражнении необходимо создать простой проект Java и класс с именем  ``MyBooks.java``  для демонстрации аннотаций в действии.

1. Выберите *Файл > Новый проект* в главном меню, чтобы открыть мастер создания проектов.
2. В списке 'Тип проекта' в категории 'Java' выберите 'Приложение Java'. Нажмите 'Далее'.
3. Введите на странице "Имя и местоположение" мастера текст * ``TestAnn`` * в качестве имени проекта.
4. Введите * ``testann.TestBooks`` * в поле "Создать главный класс", чтобы заменить имя класса по умолчанию. Нажмите кнопку "Завершить".
image::images/newproj.png[title="Создание нового проекта Java в IDE NetBeans"]

После нажатия кнопки "Готово" среда IDE создаст проект приложения Java и откроет класс ``TestBooks.java``  в редакторе. Как вы можете видеть, теперь новый проект отображается в окне "Проекты", а класс  ``TestBooks.java``  находится в пакете  ``testann``  в узле "Исходные файлы".



. Правой кнопкой мыши щелкните узел с пакетом  ``testann``  в окне "Проекты", затем выберите "Создать" > "Класс Java".


. Введите * ``MyBooks`` * в поле "Имя класса" и подтвердите создание класса в пакете  ``testann`` . Нажмите кнопку "Завершить".

После нажатия кнопки "Готово" среда IDE откроет новый класс в редакторе.



. В редакторе исходного кода добавьте три следующих поля в  ``MyBooks.java`` .

[source,java]
----

package testann;

public class MyBooks {   
    *private int year; //fields
    private String title;
    private String author;*

}
----


. Поместите курсор в объявление класса и нажмите сочетание клавиш CTRL+ПРОБЕЛ для вызова функции автозавершения кода редактора.


. Выберите  ``MyBooks (int year, String title, String author) - generate``  в списке автозавершения кода, чтобы создать конструктор для  ``MyBooks.java`` .
image::images/generate-constructor.png[title="Автозавершение кода для создания конструктора"]


. Сохраните изменения.


== Активация пользовательских аннотаций (lombok.jar) для проекта

В этом упражнении необходимо изменить окно свойств проекта, чтобы добавить библиотеку в путь к классу проекта и включить обработку аннотаций в редакторе.

1. Загрузите файл link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] и сохраните его в системе.
2. Щелкните правой кнопкой мыши узел проекта  ``TestAnn``  и выберите команду "Свойства".
3. Выберите категорию "Библиотеки" в диалоговом окне "Свойства проекта".
4. Нажмите кнопку "Добавить JAR/папку" во вкладке "Компиляция" и перейдите к загруженному файлу  ``lombok.jar`` .
image::images/properties1.png[title="Категория 'Библиотеки' в окне 'Свойства'"]

Ресурсы, добавленные на вкладке "Компиляция", соответствуют параметру  ``-classpath``  link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options[+компилятора Java+]. Поскольку файл  ``lombok.jar`` является отдельным файлом JAR, содержащим определения аннотаций и процессоры аннотаций, его необходимо добавить в путь к классам проекта, соответствующий вкладке "Компиляция".



. Выберите в окне "Свойства проекта" категорию "Компиляция".


. Убедитесь, что флажок "Включить обработку аннотаций" установлен (параметр активирован по умолчанию). Также установите флажок "Включить обработку аннотаций в редакторе". 
image::images/properties2.png[title="Выберите в окне &quot;Свойства проекта&quot; категорию &quot;Компиляция&quot;."]

Параметр "Включить обработку аннотаций" активирует обработку аннотаций при построении и компиляции проекта. Если флажок не установлен, параметр  ``-proc:none``  передается в компилятор Java, и компиляция выполняется без обработки аннотаций. Таким образом, при необходимости обработки аннотаций необходимо установить флажок "Включить обработку аннотаций".

При установке флажка "Включить обработку аннотаций в редакторе" результаты обработки аннотаций становятся видимыми в редакторе. Дополнительные артефакты, созданные процессорами аннотаций (классы, методы, поля и др.), становятся видимыми в редакторе среды IDE и доступными для функции автозавершения кода, навигатора, перехода к типу, поиска случаев использования и пр.



. В окне "Свойства проекта" нажмите кнопку "ОК" и вернитесь в файл  ``MyBooks.java`` .

Развернув узел "Библиотеки" в окне "Проекты", вы увидите, что теперь файл  ``lombok.jar``  находится в списке библиотек проекта.

image::images/projects-window.png[title="узел 'Библиотеки' в окне 'Проекты'"]


== Создание приложения при помощи пользовательских аннотаций Lombok

1. Введите в файле  ``MyBooks.java``  текст  ``@Data``  перед объявлением класса  ``MyBooks`` .  ``@Data``  представляет собой аннотацию, создающую шаблонный код для классов Java: методы получения для всех полей, методы установки для всех неполных полей и соответствующие реализации  ``toString`` ,  ``equals``  и  ``hashCode`` , включающие в себя поля класса.

Дополнительные сведения об аннотациях, поддерживаемых в проекте Lombok, приведены в разделе link:http://projectlombok.org/features/index.html[+Обзор функций+] Lombok.



. Щелкните всплывающую подсказку в левом поле редактора и добавьте импорт для  ``lombok.Data`` .
image::images/import-lombok.png[title="Подсказка в редакаторе для импорта lombok"]

Итоговый код в редакторе должен выглядеть следующим образом:


[source,java]
----

package testann;

import lombok.Data;


@Data
public class MyBooks {

    private int year; //fields
    private String title;
    private String author;

    public MyBooks(int year, String title, String author) {
        this.year = year;
        this.title = title;
        this.author = author;
    }
}
----

Обратите внимание, что необходимые артефакты кода, например методы получения, методы установки, toString и другие созданы и отображаются в окне навигатора. Аннотация  ``@Data``  создала весь шаблонный код, необходимый для типичного класса.

image::images/nav.png[title="Окно 'Навигатор', в котором отображаются участники проекта"]

Можно также вызвать окно автозавершения кода (CTRL+ПРОБЕЛ) и проверить доступность созданных артефактов для выбора. Теперь необходимо убедиться, что проект выполняет компиляцию, а созданные артефакты можно вызвать из других компонентов программы.



. Откройте файл  ``TestBooks.java``  с методом _main_ и добавьте следующий код (выделен полужирным шрифтом), чтобы создать новый объект класса  ``MyBooks`` .

[source,java]
----

package testann;

public class TestBooks {

    public static void main(String[] args) {
        *MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");*
    }
}
----


. Добавьте следующий код, который выводит на экран значения переменной  ``books`` .

Для возврата значений следует вызвать методы получения, автоматически созданные в файле  ``lombok.jar`` . Обратите внимание, что при вводе автоматически созданные артефакты доступны в окне автозавершения кода.


[source,java]
----

package testann;

public class TestBooks {

    public static void main(String[] args) {
        MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");
        *System.out.println("Year: " + books.getYear() + ", Title: " + books.getTitle() +  ", Author: " + books.getAuthor());*
    }
}
----


. Сохраните изменения.


. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Выполнить" (F6).

После запуска приложения на экране должны отобразиться следующие выходные данные, демонстрирующие успешность компиляции.

image::images/output.png[title="Окно вывода после запуска приложения"]

Таким образом, артефакты, созданные при помощи обработчика аннотаций Lombok, доступны из других компонентов программы.


== Что дальше?

* Документация Java SE - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+Аннотации+]
* Учебный курс Java SE - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+Аннотации+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]
