Groovy Tutorial de script para iniciantes
O que รฉ uma Groovy Roteiro?
apache Groovy รฉ orientado a objetos e Java linguagem de programaรงรฃo compatรญvel com sintaxe construรญda para o Java plataforma. Esta linguagem dinรขmica possui muitos recursos semelhantes aos Python, Ruby, Smalltalk e Pero. Groovy o cรณdigo fonte รฉ compilado em Java Bytecode para que possa ser executado em qualquer plataforma que tenha o JRE instalado. Groovy tambรฉm realiza diversas tarefas nos bastidores, o que o torna mais รกgil e dinรขmico.
Groovy linguagem pode ser usada como uma linguagem de script para o Java plataforma. ร quase como uma super versรฃo do Java que oferece Javacapacidades empresariais. Ele tambรฉm oferece muitos recursos de produtividade, como suporte DSL, fechamentos e digitaรงรฃo dinรขmica. Ao contrรกrio de algumas outras linguagens, ele foi projetado como um complemento, nรฃo como um substituto. Java.
Porque Groovy?
Aqui estรฃo os principais motivos pelos quais vocรช deve usar e aprender Groovy-
- Groovy รฉ uma linguagem รกgil e dinรขmica
- Integraรงรฃo perfeita com todos os existentes Java objetos e bibliotecas
- Parece fรกcil e natural de Java desenvolvedores
- Cรณdigo mais conciso e significativo em comparaรงรฃo com Java
- Vocรช pode usรก-lo o quanto quiser com Java Aplicativos
Groovy Histรณria
- 2003: Desenvolvido por Bob McWhirter e James Strachan
- 2004: Comissionado no JSR 241, mas foi abandonado
- 2005: Trazido de volta por Jeremy Rayner e Guillaume Laforge
- 2007: Groovy versรฃo 1.0
- 2012: Groovy versรฃo 2
- 2014: Groovy versรฃo 2.3 (suporte oficial dado para JDK 8)
- 2015: Groovy tornou-se um projeto na Apache Software Foundation
Caracterรญsticas do Groovy
- Lista, mapa, intervalo, literais de expressรฃo regular
- Multimรฉtodo e metaprogramaรงรฃo
- Groovy classes e scripts geralmente sรฃo armazenados em arquivos .groovy
- Os scripts contรชm Groovy declaraรงรตes sem qualquer declaraรงรฃo de classe.
- Os scripts tambรฉm podem conter definiรงรตes de mรฉtodos fora das definiรงรตes de classe.
- Ele pode ser compilado e totalmente integrado com os tradicionais Java aplicaรงรฃo.
- Suporte de nรญvel de idioma para mapas, listas e expressรตes regulares
- Suporta fechamentos, digitaรงรฃo dinรขmica, protocolo de metaobjeto
- Suporte para digitaรงรฃo estรกtica e dinรขmica e sobrecarga de operador
- Declaraรงรฃo literal para listas (matrizes), mapas, intervalos e expressรตes regulares
Como instalar Groovy
Passo 1) Certifique-se de ter Java instalado.
Passo 2) Acesse http://groovy-lang.org/download.html e clique em instalador.
Nota: Vocรช tambรฉm pode instalar Groovy usando o arquivo Zip ou como um Eclipse IDE. Neste Groovy tutorial, vamos nos ater a Windows Instalar
Passo 3) Inicie o instalador baixado. Selecione o idioma e clique em OK
Passo 4) Lanรงar. Na tela de boas-vindas, clique em PRรXIMO
Passo 5) Concorde com os termos da licenรงa
Passo 6) Selecione os componentes que deseja instalar e clique em PRรXIMO
Passo 7) Selecione Diretรณrio de instalaรงรฃo e clique em PRรXIMO
Passo 8) Escolha a pasta do menu Iniciar e clique em PRรXIMO
Passo 9) Assim que a instalaรงรฃo estiver concluรญda, deixe os caminhos padrรฃo e clique em PRรXIMO
Passo 10) Clique em NEXT
Passo 11) No menu Iniciar procure por Groovy cรดnsul
Groovy Exemplo Olรก Mundo
Considere que queremos imprimir uma string simples โHello Worldโ em Java. O cรณdigo para obter a string Groovy olรก mundo seria
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
O cรณdigo acima รฉ vรกlido em ambos Java e Groovy as Groovy รฉ um superconjunto de Java. Mas a vantagem com Groovy รฉ que podemos eliminar a criaรงรฃo de classes, a criaรงรฃo de mรฉtodos pรบblicos, etc. e obter a mesma saรญda com um cรณdigo de linha รบnica, como segue:
println "Hello World."
Nรฃo hรก necessidade de ponto e vรญrgula
Nรฃo hรก necessidade de parรชnteses
System.out.println รฉ reduzido para println
Groovy Variรกveis
In Java, a vinculaรงรฃo estรกtica รฉ obrigatรณria. Significa que o tipo de uma variรกvel deve ser declarado antecipadamente.
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
No exemplo acima disso Groovy tutorial, o tipo de variรกvel (inteiro) รฉ declarado antecipadamente usando a palavra-chave โintโ. Se vocรช fosse declarar um nรบmero de ponto flutuante, usaria a palavra-chave float.
Se vocรช tentar atribuir um valor String a um int (remova o comentรกrio da linha 5), โโreceberรก o seguinte erro
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
Em contraste, Groovy suporta digitaรงรฃo dinรขmica. As variรกveis โโsรฃo definidas usando a palavra-chave โdefโ e o tipo de variรกvel nรฃo precisa ser declarado antecipadamente. O compilador descobre o tipo de variรกvel em tempo de execuรงรฃo e vocรช pode atรฉ mesmo o tipo de variรกvel.
Considere o seguinte exemplo interessante,
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
Saรญda:
class java.lang.Integer class java.lang.String
In Groovy, vocรช pode criar strings multilinhas. Apenas certifique-se de colocar a String entre aspas triplas.
def x = """Groovy at Guru99""" println x
Saรญda:
Groovy at Guru99
Observaรงรฃo: Vocรช ainda pode usar tipos de variรกveis โโcomo byte, short, int, long, etc. Groovy. Mas vocรช nรฃo pode alterar dinamicamente o tipo de variรกvel, pois o declarou explicitamente.
Considere o seguinte cรณdigo:
int x = 104 println x x = "Guru99"
Dรก o seguinte erro
104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
at jdoodle.run(jdoodle.groovy:3)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Command exited with non-zero status 1
Groovy-Operatoros
Um operador รฉ um sรญmbolo que informa ao compilador para fazer certas manipulaรงรตes matemรกticas ou lรณgicas.
Groovy tem os seguintes cinco tipos de operadores โ
- Operadores aritmรฉticos: Somar (+), Subtrair (-), Multiplicaรงรฃo (*), Divisรฃo (/)
- Operadores relacionais: igual a (==), diferente de (!=), Less do que (<) Less maior ou igual a (<=), maior que (>), maior ou igual a (>=)
- Operadores lรณgicos: E (&&), Ou(||), Nรฃo(!)
- Operadores bit a bit: And(&), Or(|), (^), Xor ou operador Exclusive-or
- Operadores de atribuiรงรฃo: Operador de negaรงรฃo (~)
Groovy-Rotaรงรตes
In Java, vocรช definiria um loop da seguinte maneira
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
Saรญda:
0 1 2 3 4
Vocรช pode obter o mesmo resultado em Groovy usando atรฉ palavras-chave
0.upto(4) {println "$it"}
Vocรช obtรฉm a mesma saรญda acima. $it รฉ um encerramento que fornece o valor do loop atual.
Considere o seguinte cรณdigo
2.upto(4) {println "$it"}
Dรก uma saรญda
2 3 4
Vocรช tambรฉm pode usar a palavra-chave โtimesโ para obter o mesmo resultado
5.times{println "$it"}
Considere, vocรช deseja imprimir 0,2,4 com para loop em Java
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
Saรญda:
0 2 4
Vocรช pode usar o mรฉtodo step para o mesmo
0.step(7,2){println "$it"}
Groovy- Tomando uma decisรฃo
| Manifestaรงรตes | Engano |
|---|---|
| Se Declaraรงรฃo | Como em Java, a instruรงรฃo if serรก executada se a condiรงรฃo for verdadeira. |
| Declaraรงรฃo if/else | Na instruรงรฃo if/else, inicialmente uma condiรงรฃo รฉ avaliada na instruรงรฃo if. Se a condiรงรฃo for verdadeira, as instruรงรตes serรฃo executadas depois disso. Ele para antes da condiรงรฃo else e sai do loop. No entanto, se a condiรงรฃo for falsa, as instruรงรตes no bloco de instruรงรตes else sรฃo executadas. Entรฃo ele sai do loop. |
| Instruรงรฃo If aninhada | ร usado quando hรก um requisito para ter mรบltiplas instruรงรตes if. |
| Declaraรงรฃo de mudanรงa | A instruรงรฃo if-else aninhada pode se tornar ilegรญvel quando vocรช tem diversas condiรงรตes. Para tornar o cรณdigo mais legรญvel, a instruรงรฃo switch รฉ usada. |
| Instruรงรฃo de switch aninhada | In Groovy tambรฉm รฉ possรญvel usar instruรงรตes switch aninhadas. |
Groovy Lista
A estrutura da lista permite armazenar uma coleรงรฃo de itens de dados. Em um Groovy linguagem de programaรงรฃo, a List contรฉm uma sequรชncia de referรชncias de objetos. Ela tambรฉm mostra uma posiรงรฃo na sequรชncia. Um literal List รฉ apresentado como uma sรฉrie de objetos separados por vรญrgulas e colocados entre colchetes.
Exemplo de lista Grovy:
Uma lista de Strings- ['Angular', 'Nodejs,]
Uma lista de referรชncias de objetos โ ['Groovy', 2,4 2.6]
Uma lista de valores inteiros โ [16, 17, 18, 19]
Uma lista vazia- [ ]
A seguir estรฃo listados os mรฉtodos disponรญveis em Groovy:
| O Propรณsito | Descriรงรฃo |
|---|---|
| adicionar() | Permite anexar o novo valor ao final desta lista. |
| contรฉm () | Retorna verdadeiro se esta lista contiver um determinado valor. |
| get() | Retorna o elemento na posiรงรฃo definida |
| estรก vazia() | Retorna o valor verdadeiro se a lista nรฃo contiver elementos |
| menos() | Este comando permite criar uma nova Lista composta pelos elementos do original excluindo aqueles que estรฃo especificados na coleรงรฃo. |
| mais() | Permite criar uma nova Lista composta pelos elementos do original juntamente com os mencionados na coleรงรฃo. |
| pop () | Remove o รบltimo item da lista |
| retirar() | Remove o elemento na posiรงรฃo especรญfica |
| marcha rรฉ() | Crie uma nova lista que inverte os elementos da lista original |
| Tamanho() | Retorna o nรบmero de elementos desta lista |
| ordenar() | Retorna uma cรณpia classificada |
Considere o seguinte Groovy exemplo de roteiro
def y = ["Guru99", "is", "Melhor", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())
Saรญda:
[Guru99, is, Melhor, for, Groovy] true Melhor Learning
Groovy mapas
Um mapa Groovy รฉ uma coleรงรฃo de pares de valores-chave
Exemplos de Groovy mapas:
- [Tutorial: 'Java, Tutorial: 'Groovy] โ Coleรงรฃo de pares chave-valor que tem Tutorial como chave e seus respectivos valores
- [:] Representa um mapa vazio
Aqui estรก uma lista de mรฉtodos de mapa disponรญveis em Groovy.
| O Propรณsito | Descriรงรฃo |
|---|---|
| contรฉmKey() | Verifique se o mapa contรฉm esta chave ou nรฃo? |
| get() | Este comando procura a chave neste Mapa e retorna o valor correspondente. Se vocรช nรฃo encontrar nenhuma entrada neste mapa, ele retornarรก nulo. |
| conjunto de chaves() | Permite encontrar um conjunto de chaves neste mapa |
| por() | Associa o valor especificado ร chave fornecida neste mapa. Se o Mapa continha anteriormente um mapeamento para esta chave. Entรฃo o valor antigo serรก substituรญdo pelo valor especificado. |
| Tamanho() | Retorna o nรบmero de mapeamentos de valores-chave. |
| valores () | Este comando retorna uma visualizaรงรฃo de coleรงรฃo dos valores. |
Groovy Exemplo:
def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")
saรญda
Jen
Groovy- Fechamentos
Um fechamento bacana รฉ um pedaรงo de cรณdigo agrupado como um objeto. Ele atua como um mรฉtodo ou uma funรงรฃo.
Exemplo de fechamento simples
def myClosure = {
println "My First Closure"
}
myClosure()
Saรญda:
My First Closure
Um encerramento pode aceitar parรขmetros. A lista de identificaรงรตes รฉ separada por vรญrgula com
uma seta (->) marcando o final da lista de parรขmetros.
def myClosure = {
a,b,c->
y = a+b+c
println y
}
myClosure(1,2,3)
Saรญda:
6
Um fechamento pode retornar um valor.
def myClosure = {
a,b,c->
return (a+b+c)
}
println(myClosure(1,2,3))
Saรญda:
6
Existem muitos fechamentos integrados como โItโ, โidentidadeโ, etc. Os fechamentos podem receber outros fechamentos como parรขmetros.
Groovy Vs. Java
| Groovy | Java |
|---|---|
| In Groovy, o especificador de acesso padrรฃo รฉ pรบblico. Isso significa que um mรฉtodo sem qualquer modificador de acesso especificado รฉ pรบblico e acessรญvel fora dos limites de classe e pacote. | In Java, o modificador de acesso padrรฃo รฉ um pacote, ou seja, se vocรช nรฃo especificar o modificador de acesso para campos, mรฉtodos ou classe, ele se tornarรก package-private, |
| Getters e setters sรฃo gerados automaticamente para os membros da classe. | Java, vocรช precisa definir o mรฉtodo getters e setters para campos |
| Groovy permite substituiรงรฃo de variรกveis โโusando aspas duplas com strings. | Java nรฃo oferece suporte ร substituiรงรฃo de variรกveis. |
| A digitaรงรฃo de informaรงรตes รฉ opcional. | A digitaรงรฃo de informaรงรตes รฉ obrigatรณria em Java. |
| Groovy nรฃo รฉ necessรกrio terminar com ponto e vรญrgula. | In Java, toda instruรงรฃo termina com ponto e vรญrgula. |
| Groovy รฉ automaticamente uma classe de empacotamento chamada Script para cada programa | In Java, vocรช precisa do mรฉtodo main para tornar uma classe executรกvel. |
Mitos sobre Groovy
| Mito | Realidade |
|---|---|
| Podemos usar Groovy apenas para scripts. | Ele pode ser usado para scripts. No entanto, vocรช pode realizar muitas outras tarefas alรฉm dela. |
| Groovy รฉ tudo sobre fechamentos. โร sรณ linguagem de programaรงรฃo funcional. " | Groovy adota linguagens de programaรงรฃo funcionais como Lisp ou Closure. |
| Groovy รฉ a escolha ideal se vocรช quiser fazer TDD | Esta afirmaรงรฃo รฉ verdadeira. No entanto, certamente nรฃo รฉ a รบnica razรฃo para usar Groovy. |
| Vocรช pode usar Groovy somente se vocรช quiser usar Grails. | Grails รฉ uma poderosa estrutura de desenvolvimento web.
BUT Groovy oferece mais do que isso. |
Contras de usar Groovy
- JVM e Groovy o tempo de inรญcio do script รฉ lento, o que limita os scripts no nรญvel do sistema operacional
- Groovy nรฃo รฉ totalmente aceito em outras comunidades.
- Nรฃo รฉ conveniente usar Groovy sem usar IDE
- Groovy pode ser mais lento, o que aumentou o tempo de desenvolvimento
- Groovy pode precisar de muita memรณria
- Conhecimento de Java รฉ imperativo.
Groovy Ferramentas
Discutiremos 3 ferramentas importantes neste Groovy tutorial de roteiro
1. groovysh: Executa cรณdigo de forma interativa.
2. groovyConsole: GUI para execuรงรฃo de cรณdigo interativo
3. bacana: executa scripts bacanas. Vocรช pode usรก-lo como Perl, Python, etc.
Groovysh
- shell de linha de comando
- Ajuda vocรช a executar Groovy codificar interativamente
- Permite inserir declaraรงรตes ou scripts inteiros
Groovy consolรก
- Interface Swing que atua como um mรญnimo Groovy editor de desenvolvimento.
- Permite que vocรช interaja Groovy cรณdigo
- Ajuda vocรช a carregar e executar Groovy arquivos de script
Groovy
ร o processador que executa Groovy programas e scripts. Vocรช
Pode ser usado para testar simples Groovy expressรตes.
Resumo
- Groovy รฉ uma linguagem de programaรงรฃo orientada a objetos usada para Java plataforma
- Groovy o script oferece integraรงรฃo perfeita com todos os existentes Java objetos e bibliotecas
- Bob McWhirter e James Strachan desenvolveram o groovy em 2003
- Literais de lista, mapa, intervalo e expressรตes regulares sรฃo recursos importantes de Groovy
- Quatro tipos de operadores suportados por Groovy sรฃo 1. Relacional 2. Lรณgico 3. Bitwise 4. Atribuiรงรฃo
- Groovy executou a tomada de decisรฃo usando instruรงรตes if, if/else, Nested if, switch, Netsted switch
- A estrutura da lista permite armazenar uma coleรงรฃo de itens de dados
- Um mapa Groovy รฉ uma coleรงรฃo de pares de valores-chave
- In Groovy, Getters e setters sรฃo gerados automaticamente para membros da classe
- In Java, vocรช pode usar o mรฉtodo fornecer getters e setters para campos
- O maior mito sobre Groovy รฉ que ele sรณ pode ser usado para scripts que nรฃo estรฃo corretos
- รs vezes Groovy pode ser mais lento, o que aumentou o tempo de desenvolvimento
- Trรชs Groovy As ferramentas sรฃo: groovysh que executa cรณdigo, groovy Console que รฉ uma GUI para execuรงรฃo de cรณdigo interativo e groovy que executa scripts













