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

= Введение в Groovy
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Введение в Groovy - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Введение в Groovy

Этот документ используется для начала работы с link:http://groovy.codehaus.org/[+Groovy+] в IDE NetBeans. В процессе работы будет создано приложение на языке Java, добавлен элемент JFrame, а из файла Groovy будет получено простое сообщение.


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


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

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

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |пакет Java, версии 7.2, 7.3, 7.4, 8.0 

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

|Подключаемый модуль Groovy |- 
|===


== Активация подключаемого модуля Groovy

Поддержка Groovy отключена по умолчанию при установке Java-версии среды IDE. Для работы с Groovy в IDE сначала необходимо активировать подключаемый модуль Groovy в диспетчере подключаемых модулей.

1. Выберите *'Сервис'* > *'Подключаемые модули'* в главном меню, чтобы открыть диспетчер подключаемых модулей.
2. Перейдите на вкладку *Установлено* в диспетчере подключаемых модулей.
3. Выберите 'Показать сведения' и найдите подключаемый модуль *Groovy и Grails* в списке подключаемых модулей.

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

4. Установите подключаемый модуль 'Groovy and Grails' и нажмите 'Активировать'.
image::images/groovy-plugin.png[title="Подключаемый модуль 'Groovy' выбран в диспетчере подключаемых модулей"]
5. Нажмите кнопку 'Активировать' в окне 'Мастер установки NetBeans IDE', чтобы активировать подключаемый модуль Groovy.
6. Нажмите кнопку 'Завершить' в окне 'Мастер установки NetBeans IDE' после завершения установки и затем нажмите 'Закрыть' в диспетчере подключаемых модулей.


== Создание приложения

В этом разделе вы узнаете, как создать новое приложение Java.

1. Выберите 'Файл > Создать проект' (Ctrl-Shift-N; ⌘-Shift-N в Mac) в главном меню, чтобы открыть мастер создания проектов.
2. В категории Java выберите 'Приложение Java'. Нажмите кнопку "Далее".
3. В поле 'Имя проекта' введите *GroovyJavaDemo*, а в поле 'Местоположение проекта' укажите папку, где будет создано приложение.
4. Снимите флажок "Создать главный класс". Нажмите кнопку "Готово".

При нажатии на кнопку 'Готово' IDE создает проект, который отображается в окне 'Проекты'.


== Создание класса Java и файла Groovy

В этом разделе вы узнаете, как создать элемент JFrame и класс Groovy.

1. Щелкните правой кнопкой мыши узел проекта в окне 'Проекты' и выберите 'Создать > Другое'. Откроется диалоговое окно мастера создания файлов.
2. В категории 'Формы Swing GUI' выберите 'Форма JFrame'. Нажмите 'Далее'.
image::images/groovy-newjframe.png[title="Шаблон формы JFrame в мастере создания файлов"]
3. В поле 'Имя класса' введите *DisplayJFrame*.
4. В поле 'Пакет' введите *org.demo*. Нажмите 'Готово'.
image::images/groovy-newjframe2.png[title="Панель 'Имя и местоположение' в мастере создания форм JFrame"]

При нажатии на кнопку 'Готово' в среде IDE создается форма JFrame, и в редакторе открывается соответствующий файл.

5. Щелкните правой кнопкой мыши узел проекта в окне 'Проекты' и выберите 'Создать > Другое'. Откроется диалоговое окно мастера создания файлов.
6. В категории Groovy выберите 'Класс Groovy'. Нажмите 'Далее'.
image::images/groovy-newgroovyclass.png[title="Шаблон класса Groovy в мастере создания файлов"]
7. В поле 'Имя класса' введите *GreetingProvider*.
8. В списке 'Пакеты' выберите пакет  ``org.demo`` . Нажмите кнопку "Завершить".

При нажатии на кнопку 'Готово' IDE создает файл Groovy и открывает его в редакторе.

Если развернуть узел проекта в окне 'Проекты', можно увидеть два только что созданных файла под узлом 'Исходные пакеты'.


== Вызов файла Groovy из класса Java

В этом разделе вы узнаете, как создать код для взаимодействия между файлом Groovy и классом Java.

1. Откройте файл  ``GreetingProvider.groovy``  в редакторе (если он еще не открыт).
2. Задайте переменную приветствия в определении класса, добавив следующий код (выделен полужирным шрифтом). Сохраните изменения.

[source,java]
----

class GreetingProvider {

    *def greeting = "Hello from Groovy"*

}
----
3. Откройте файл  ``DisplayJFrame.java``  в редакторе (если он еще не открыт) и перейдите на вкладку 'Конструирование'.
4. Откройте палитру (выберите 'Окно > Палитра' в главном меню) и перетащите элемент 'Текстовое поле' ( ``jTextField`` ) и палитры на форму JFrame.
image::images/groovy-jtextfield.png[title="Элемент JTextfield в файле DesignJFrame на вкладке 'Конструирование' в редакторе"]
5. Перейдите на вкладку 'Исходный код' и добавьте следующий исходный код в верхнюю часть тела класса, чтобы создать экземпляр класса Groovy и вызвать метод  ``getGreeting()``  в классе Groovy в конструкторе.

[source,java]
----

public class DisplayJFrameForm extends javax.swing.JFrame {*

    GreetingProvider provider = new GreetingProvider();*

    public DisplayJFrame() {
        initComponents();
        *String greeting = provider.getGreeting().toString();
        jTextField1.setText(greeting);*
    }
----

Для поиска в классе Java методов, необходимых для класса Groovy, можно использовать автозавершение кода.

image::images/groovy-codecompletion.png[title="Автозавершение кода в редакторе"]
6. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите "Выполнить".

Если выбрать команду 'Выполнить', IDE выполнит сборку и запуск приложения.

image::images/groovy-runproject.png[title="Окно приложения с текстом из класса Groovy в текстовом поле"]

В текстовом поле в окне приложения отображается текст из класса Groovy.

Теперь читатель может создать базовое приложение на языке Java, взаимодействующее с Groovy.

link:/about/contact_form.html?to=3&subject=Feedback:%20NetBeans%20IDE%20Groovy%20Quick%20Start[+Отправить отзыв по этому учебному курсу+]



== Дополнительные сведения

IDE NetBeans также поддерживает веб-платформу Grails, в которой используется язык Groovy при веб-разработках на Java. Дополнительные сведения об использовании платформы Grails с IDE NetBeans см. в разделе link:../web/grails-quickstart.html[+Введение в платформу Grails+].

