// 
//     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``  в узле "Исходные файлы".


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

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

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


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

[source,java]
----

package testann;

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

}
----

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

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

[start=10]
. Сохраните изменения.


== Активация пользовательских аннотаций (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, содержащим определения аннотаций и процессоры аннотаций, его необходимо добавить в путь к классам проекта, соответствующий вкладке "Компиляция".


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

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

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

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


[start=7]
. В окне "Свойства проекта" нажмите кнопку "ОК" и вернитесь в файл  ``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.


[start=2]
. Щелкните всплывающую подсказку в левом поле редактора и добавьте импорт для  ``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+ПРОБЕЛ) и проверить доступность созданных артефактов для выбора. Теперь необходимо убедиться, что проект выполняет компиляцию, а созданные артефакты можно вызвать из других компонентов программы.


[start=3]
. Откройте файл  ``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");*
    }
}
----

[start=4]
. Добавьте следующий код, который выводит на экран значения переменной  ``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());*
    }
}
----

[start=5]
. Сохраните изменения.

[start=6]
. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Выполнить" (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[+Отправить отзыв по этому учебному курсу+]
