<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->

<html>
   <head>
      <title>Introdução ao Groovy</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 very simple and quick introduction to 
      the Grails application development workflow by walking you through the creation of a
         simple Hello World Java console application." >
</head>
   
<body>

<h1>Introdução ao Groovy</h1>
<p>
    Este documento lhe apresenta o <a href="http://groovy.codehaus.org/">Groovy</a> no NetBeans IDE. Você criará uma aplicação Java, adicionará um JFrame e recuperará uma mensagem simples de um arquivo Groovy.
</p>

<p><b>Conteúdo</b></p>
    <img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0">
    <ul>
        <li><a href="#activate">Ativar o Plug-in do Groovy</a></li>
        <li><a href="#application"> Criando a Aplicação</a></li>
        <li><a href="#java">Criando a Classe Java e o Arquivo Groovy</a></li>
        <li><a href="#groovy">Chamando o Groovy a partir do Java</a></li>
    </ul>



<p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b></p>

    <table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">Software ou Recurso</th>
                <th class="tblheader" scope="col">Versão Necessária</th>
            </tr> 
             <tr>
                    <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html" target="_blank">NetBeans IDE</a></td>
                    <td class="tbltd1">Pacote Java 7.2, 7.3, 7.4, 8.0</td>
          </tr>
            <tr>
                <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">JDK (Java Development Kit)</a></td>
              <td class="tbltd1">versão 7 ou 8</td>
            </tr>
            <tr>
                <td class="tbltd1">Plug-in do Groovy</td>
                <td class="tbltd1">-</td>
            </tr>
        </tbody>
    </table>
      
<a name="activate"></a>
<h2>Ativar o Plug-in do Groovy</h2>
<p>O suporte para Groovy é desativado por padrão quando você instala a versão Java do IDE. Para trabalhar com o Groovy no IDE, ative primeiramente o plug-in do Groovy no gerenciador de Plug-ins.</p>

<ol>
    <li>Escolha <strong>Ferramentas</strong> > <strong>Plug-ins</strong> no menu principal para abrir o gerenciador de Plug-ins.</li>
    <li>Clique na guia <strong>Instalado</strong> no gerenciador de Plug-ins.</li>
    <li>Selecione Mostrar Detalhes e localize o plug-in <strong>Groovy e Grails</strong> na lista de plug-ins.
        <p class="tips">Se preferir, digite <code>groovy</code> no campo Pesquisar para filtrar a lista de plug-ins.</p></li>
    <li>Marque a caixa de seleção do plug-in Groovy e Grails e clique em Ativar.<br> <img alt="tela do Gerenciador de plug-ins" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-plugin.png" title="Plug-in do Groovy selecionado no gerenciador de Plug-ins"></li>
    <li>Clique em Ativar na janela do Instalador do NetBeans IDE para ativar o plug-in do Groovy.</li>
    <li>Clique em Finalizar na janela do Instalador do NetBeans IDE após a instalação ser concluída e, em seguida, clique em Fechar no gerenciador de Plug-ins.</li>
</ol>

<a name="application"></a>
<h2>Criando a Aplicação</h2>

<p>Nesta seção, você criará uma nova aplicação Java.</p>

<ol>
    <li>Selecione Arquivo > Novo Projeto (Ctrl-Shift-N; ⌘-Shift-N no Mac) no menu principal para abrir o assistente Novo Projeto.</li>
    <li>Selecione Aplicação Java na categoria Java. Clique em Próximo.</li>

    <li>Digite <strong>GroovyJavaDemo</strong> como o Nome do Projeto e especifique a pasta na qual você deseja criar a aplicação no campo Localização do Projeto.</li>
    <li>Cancele a seleção da caixa de seleção Criar Classe Principal. Clique em Finalizar.</li>
</ol>
<p>Quando você clica em Finalizar, o IDE cria o projeto e exibe um nó do projeto na janela Projetos.</p>

<a name="java"></a>
<h2>Criando a Classe Java e o Arquivo Groovy</h2>

<p>Nesta seção, você criará um JFrame e uma classe Groovy.</p>

<ol>
  <li>Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Novo > Outro para abrir a caixa de diálogo Novo Arquivo. </li>
  <li>Selecione o Form JFrame na categoria Forms de GUI Swing. Clique em Próximo.<br> <img alt="tela do modelo de Form JFrame no assistente Novo Arquivo" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-newjframe.png" title="Modelo de Form JFrame no assistente Novo Arquivo"></li>
  <li>Digite <strong>DisplayJFrame</strong> como o Nome da Classe.</li>
  <li>Digite <strong>org.demo</strong> como o Pacote. Clique em Finalizar.<br> <img alt="tela do Painel Nome e Localização no assistente Novo Form JFrame" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-newjframe2.png" title="Painel Nome e Localização no assistente Novo Form JFrame">
        <p>Quando você clica em Finalizar, o IDE cria o form JFrame e abre o arquivo no editor.</li>
    <li>Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Novo > Outro para abrir a caixa de diálogo Novo Arquivo. </li>
    <li>Selecione a Classe Groovy na categoria Groovy. Clique em Próximo.<br> <img alt="tela do modelo de Classe Groovy no assistente Novo Arquivo" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-newgroovyclass.png" title="Modelo de Classe Groovy no assistente Novo Arquivo">
    <li>Digite <strong>GreetingProvider</strong> como o Nome da Classe.</li>
    <li>Selecione o pacote <tt>org.demo</tt> na lista drop-down Pacote. Clique em Finalizar.<br>
    <p>Quando você clica em Finalizar, o IDE cria o arquivo Groovy e abre-o no editor. </p></li>
</ol>
<p>Se você expandir o nó do projeto na janela Projetos poderá ver que os dois arquivos criados estão no nó Pacotes de Origem. </p>
      <!--<img src="../../../images_www/articles/73/java/groovy-quickstart/groovy-projectswindow.png" alt="screenshot of Groovy project in Projects window" title="Groovy project in Projects window" class="margin-around b-all">-->

<a name="groovy"></a>
<h2>Chamando o Groovy a partir do Java</h2>

<p>Nesta seção, você codificará a interação entre o arquivo Groovy e a classe Java.</p>

<ol>
    <li>Abra <tt>GreetingProvider.groovy</tt> no editor (se ainda não estiver aberto).</li>
    <li>Defina uma variável greeting na definição de classe adicionando o seguinte código (em negrito). Salve as alterações.
<pre class="examplecode">class GreetingProvider {

    <strong>def greeting = "Hello from Groovy"</strong>

}</pre>
    </li>
    <li>Abra <tt>DisplayJFrame.java</tt> no editor (se ainda não estiver aberto) e clique na guia Design. </li>
    <li>Abra a Paleta (Janela > Paleta do menu principal) e arraste e solte um elemento Campo de Texto (<tt>jTextField</tt>) da Paleta e para o JFrame.<br> <img alt="tela do JTextfield no DesignJFrame será aberta na view de Design do editor" class="margin-around" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-jtextfield.png" title="JTextfield no DesignJFrame será aberto na view de Design do editor"></li>
    <li>Clique na guia Código-fonte do editor e adicione o seguinte código à parte superior do corpo da classe para instanciar a classe Groovy e no construtor para chamar o método <tt>getGreeting()</tt> na classe Groovy.
        <pre class="examplecode">public class DisplayJFrameForm extends javax.swing.JFrame {<strong>

    GreetingProvider provider = new GreetingProvider();</strong>

    public DisplayJFrame() {
        initComponents();
        <strong>String greeting = provider.getGreeting().toString();
        jTextField1.setText(greeting);</strong>
    }</pre>
    <p class="tips">É possível utilizar a funcionalidade autocompletar código na classe Java para encontrar os métodos necessários na classe Groovy.</p>
    <img alt="tela do recurso autocompletar código no editor" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-codecompletion.png" title="Autocompletar código no editor">
    </li>        
    <li>Clique com o botão direito do mouse no nó na janela Projetos e selecione Executar.
    <p>Quando escolher Executar o IDE compila e aciona a aplicação.</p>
    <img alt="tela da aplicação" class="margin-around b-all" src="../../../images_www/articles/73/java/groovy-quickstart/groovy-runproject.png" title="Janela da aplicação exibindo o texto da classe Groovy no campo de texto">
    <p>Na janela da aplicação, você pode ver que o texto da classe Groovy é exibido no campo de texto.</p>
</ol>

<p>Agora você sabe como criar uma aplicação Java básica que interaja com o Groovy.</p>
      
      <div class="feedback-box"><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20NetBeans%20IDE%20Groovy%20Quick%20Start">Enviar Feedback neste Tutorial</a></div>
      <br style="clear:both;" />
     <a name="seealso"></a>
<h2>Consulte Também</h2>
<p>O NetBeans IDE também suporta o framework do Grails na Web, que usa a linguagem Groovy no desenvolvimento Java Web. Para aprender a usar o framework do Grails com o NetBeans IDE, consulte <a href="../web/grails-quickstart.html">Introdução ao Framework do Grails</a>.</p>
</body>

</html>
