GROOVY. Diogo Eládio Igor

Documentos relacionados
Groovy. Cleisson Santos Guterres Lucas Augusto Santos Renato Menezes Machado

Grails. Desenvolvimento Java Açucarado

Migrando do para o. um e-book produzido por: CodePrestige

Programação Orientada a Objetos

Conceito de Linguagens de Programação - 1

JAVA. Professor: Bruno Toledo

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Arrays em Java. Prof. Renato Pimentel. GGI030 Programação Orientada a Objetos. Universidade Federal de Uberlândia Faculdade de Computação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Conceitos de Linguagem de Programação - 2

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

Análise de Programação

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

SCALA! Mariah Barros Cardoso Ruann Magalhães Homem Rudá Martinez Pimentel Deeke Yuri Pereira Constante

AULA 6 - ARRAYS. Array de 10 elementos

JavaScript (Elementos de Programação e Programação Básica)

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Idiomas de Programação

Linguagem de Programação III

Compilação dos trabalhos: questões de concurso

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Linguagem de Programação e Compiladores

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Linguagem Algorítmica OO. Linguagem Algorítmica

Gabriel Santa Clara Ucelli

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Programação Orientada a Objetos

PRDS C#.Net Alexandre L. Silva

Programação Java. Tratamento de Exceções

Linguagens de Programação

Groovy. Desenvolvimento ágil para plataforma Java. Lucas Mazzega Menegucci Rodolfo Gobbi de Angeli Ricardo Natale

Linguagem Java. Introdução. Rosemary Silveira Filgueiras Melo

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

PRIMEIROS PASSOS COM PYTHON. Prof. Msc. Luis Filipe Alves Pereira 2015

Valdex Santos. 09 de junho de 2011

4 Conceito de Herança

Instituto Superior de Engenharia de Lisboa

PHP: <?php echo("hello World");?> Printa Hello World na página do navegador, mais fácil do que no Java.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Estruturada e Orientada a Objetos

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

Revisão C++ - Parte 1

Avaliação de Frameworks de Produtividade para aplicações CRUD

p Ja usamos, por diversas vezes, a classe String. Vimos o sistema de pacotes do Java e nunca precisamos dar um import nessa classe.

POO Programação Orientada a Objetos. Classes e Objetos 2

Introdução à programação em C#

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

WORKSHOP FUNDAMENTOS DO UNITY 3D. WorkShop Fundamentos de UNITY 3D João Pires

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Cronograma de Aulas - Mococa 1º Módulo 23/05/2009 a 27/06/2009

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Estruturas de controle Parte 1

Desenvolvimento de Sistemas para WEB Site:

BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Palavras Reservadas da Linguagem Java

Seleção Múltipla Laços (while, do-while, for) AULA 05

Programação Android com Kotlin. Introdução a Kotlin. Othon Marcelo Nunes Batista Mestre em Informática

Algoritmos I Aula 13 Linguagem de Programação Java

Interfaces e Classes Internas

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Frameworks - Grails. Aécio Costa

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Histórico. Perl (Practical Extraction and Report Language). Criada por Larry Wall em 1987.

Linguagem de Programação II Implementação

Professor Leo Larback Esta apresentação pode ser baixada livremente no site

GRUPO: Rafael Igor Vanderlei Vieira

Tratamento de Exceções

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Módulo 9 VARIÁVEIS, TIPOS DE DADOS, OPERADORES, ESTRUTURAS DE CONTROLO P S I C P T G P S I

Lista de Linguagens de Programação 16

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Estruturas de Controle

Desenvolvendo aplicações Java

Linguagem de Programação Visual

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

Tratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)

Linguagens de Programação Scala. Gabriel Favalessa Gustavo Andrade

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Java na Prática. Célio Silva Aula 3

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Informática Parte 15 Prof. Márcio Hunecke

Transcrição:

GROOVY Diogo Eládio Igor

Como surgiu? Primeiro sinal de vida foi dado por James Strachan em seu blog em agosto de 2003. Várias versões foram lançadas entre 2004 e 2006, porém somente depois do processo de padronização JCP foi adotado a versão 1.0, lançada em janeiro de 2007 (beta). Versão 1.1 Final foi lançada em dezembro do mesmo ano, porém logo foi rebatizada de 1.5 devida as grandes modificações. A versão atual é a 1.7.

O que é? Groovy é uma linguagem ágil e dinâmica que roda sobre a JVM. Adiciona ferramentas fortes e modernas sobre o Java, inspiradas em linguagens como Python, Ruby e Smalltalk. Pode ser usada interpretada como um script ou compilada pelo groovyc. Assim como Java, Groovy também é OO, porém também pode-se programar de forma procedural com a mesma.

Recursos/Vantagens Suporte nativo a Closures: como se fosse uma função mais livre de variáveis. Nela pode-se passar variáveis que podem não estar definidas na assinatura. Exemplo: def soma = { } x, y -> println x + y soma 3, 5

DRY (Don t Repeat Yourself): evita repetição desnecessária de código. Exemplo: você faz uma classe, adiciona uma variável e não precisa fazer getter e setter para a mesma, entre vários outros usos. Exemplo2: public class Pessoa { def nome, idade; String tostring() { "Nome: ${nome} idade: ${idade} } } p = new Pessoa(nome: Joao, idade: 20) println p

Duck Typing: diminui a quantidade de código que precisa digitar, faz o código mais legível e flexível. GStrings: uso do operador $ para resolver uma variável ou expressão dentro de uma String. Suporte nativo a Mapas (tipo que que permite mapear dados, ligando um valor a outro) e Listas. Exemplo: def mapa = [1: Joao, 2: Maria ] mapa += [3: Jose ] mapa.each{ println Chave: ${it.key} - valor: ${it.value} }

Operadores: adicionam agilidade para o código, podem ser usados inclusive com classes. Exemplo: class Pessoa{ def nome, filho def rightshift(f){ filho = f } } def p1 = new Pessoa(nome: Joao ) def p2 = new Pessoa(nome: Jose ) p1 >> p2

Operações null-safe: evita Null Pointer Exception automaticamente. Basta apenas colocar o? na frente. Entre outras funcionalidades. Mais referência para estudo: http: //groovy.codehaus.org/

Diferenças entre Groovy e outras linguagens

Diferença entre Groovy e Java Como o Groovy é uma linguagem compatível com Java, por esse motivo é muito comum que as pessoas pensem as duas linguagens são idênticas, contudo existem algumas diferenças significativas. No Groovy, inúmeras classes e pacotes são importados automaticamente (default) tais quais: java.io.* java.lang.* java.math.bigdecimal java.math.biginteger java.net.* java.util.* groovy.lang.* groovy.util.*

Algumas situações que um desenvolvedor Java pode ser induzido ao erro ao iniciar o desenvolvimento em Groovy: = = significa igual para todos os tipos. Diferentemente do Java que para os tipos primários representa igualdade e para os Objetos identidade. Ou seja, não há a necessidade de usar equals(), pode-se utilizar diretamente o comando = = in é uma palavra chave, portanto não pode-se usá-la para nomear variáveis. Para declarar um array, em vez de escrever int a [] = {1, 2, 3} é preciso escrever: int a[] = [1, 2, 3]

Forma de simplificação do comando de looping for ; enquanto no java você precisa declarar o for da seguinte forma: for(int i=0; i<length-1; i++) { } no Groovy, pode se fazer também dessa forma, mas pode usar de uma simplificação sendo esta: for(i in 0..<length-1) { } ou até mesmo uma forma ainda mais simplificada: length.times { }

Algumas coisas que é interessante saber: A finalização das linhas com ponto e vírgula é opcional. O uso da palavra-chave return também é opcional. Pode-se usar a palavra-chave this dentro de métodos estáticos (aqueles que referenciam classes) Métodos e classes são públicas (public) em seu estado default. a cláusula throws não é interpretada pelo compilador groovy, uma vez que não existe diferenciação entre exceções verificadas e não verificadas.

Novidades no Groovy inexistente no java: Closure. Sintaxe nativa para listas e mapas. Interação polifórmica no switch-case. Tipo dinâmico ou estático são aceitáveis, por isso pode-se omitir o tipo na hora de declarar métodos ou variáveis. Pode-se embutir expressões lógicas dentro de um String. Sintaxe simplificada para escrever beans, com facilidade de adição e manipulação nas propriedades de eventos listeners.

Diferenças entre Groovy e Python Geral: Python Groovy repr(x) x.inspect(), x.dump() x.y if x else None x?.y Extraído de groovy.codehaus.org (21 de junho 2010)

Diferenças entre Groovy e Python Python Groovy not x!x x.empty len(x) x.size() Extraído de groovy.codehaus.org (21 de junho 2010)

Diferenças entre Groovy e Python Python Groovy m = 'strip'; getattr('! ', m)() m = 'trim'; '! '."$m"() args = ('a', 2); 'abcabc'.find(*args) args = ['a', 2]; 'abcabc'.indexof (*args) Extraído de groovy.codehaus.org (21 de junho 2010)

Diferenças entre Groovy e Ruby Existe uma grande similaridade entre o Groovy e Ruby, ambos utilizam de programação abstrata, em que tudo é um objeto. O Ruby usa o Ruby Library, o Groovy utiliza o Java Library, com algumas adições necessárias. As diferenças são poucas, contudo deve-se ter um cuidado especial, dos os desenvolvedores Ruby que estão migrando para Groovy, principalmente ao que tange a sintaxe dos closures.

Grails É um framework com intuito de otimizar a produtividade dos aplicativos WEB na linguagem Groovy. Utiliza o paradígma de programação "programação por convenção" o qual, minimiza o contato do desenvolvedor com a parte sintática e detalhes profundos na programação. Dessa forma o desenvolvedor tem disponível mais tempo com a execução da lógica e assim aumenta a produtividade Foi renomeado de Groovy on Rails para Grails após pedidos formais do desenvolvedor do projeto Ruby on Rails.

Grails Versão 0.1 em março/2006 Framework para aplicações WEB Alta Produtividade Usa Hibernate, Spring GORM - Grails Object Relational Mapping Scaffolding

Referências Bibliográficas Capítulo "From Java to Groovy" do Livro Groovy and Grails Recipes, Bashar Abdul-Jawad, 2009. Capítulo "Getting Started with Groovy" do Livro Groovy and Grails Recipes, Bashar Abdul-Jawad, 2009. Capítulo "Groovy Data types and Control Structures" do Livro Groovy and Grails Recipes, Bashar Abdul-Jawad, 2009. Capítulo "Rapid Web Development Using Groovy and Grails" do Livro Spring Persistence A Running Start, Paul Tepper Fisher and Soloman Duskis, 2009 http://groovy.codehaus.org acessado em Junho de 2010.