Mostrando postagens com marcador groovy. Mostrar todas as postagens
Mostrando postagens com marcador groovy. Mostrar todas as postagens

quarta-feira, 22 de maio de 2013

Tagged under: , , , ,

As Novidades do Groovy 2!

Já fazia um tempo sem codificar em Groovy, mas resolvi conferir as novidades da versão 2, motivado pelo lançamento da versão 2.0 do Gaelyk, framework para a cloud da Google, o Google App Engine.

Comecei assistindo o webinar What's new in Groovy 2.0? do Guillaume Laforge, líder dos dois projetos:


Principais Novidades

Eu até pensei em escrever aqui as principais novidades, mas isso já foi feito muito bem neste post na InfoqBR, que contém um tradução bem completa de um texto do próprio Guillaume explicando tudo. Transcrevo aqui um resumo:


"Pode-se dizer que o Groovy 2.0 atende a três necessidades principais:
  1. Maior desempenho: através do suporte à invocação dinâmica do JDK 7 para acelerar o Groovy, mas também da compilação estática do JDK 5, e além. Especialmente para aqueles que estão dispostos a abandonar alguns aspectos dinâmicos para se proteger do "monkey patching", pode-se ganhar a mesma velocidade do Java;
  2. Mais integração com Java: com o suporte às melhorias do Projeto Coin do Java 7, o Groovy e o Java estão com sintaxes mais parecidas. E com a verificação estática de tipos, ambas as linguagens podem ter o mesmo nível de verificação e segurança de tipos que o fornecido pelo javac;
  3. Mais modularidade: com um novo patamar de modularidade, o Groovy abre as portas para produtos "menores", por exemplo, para a integração de aplicações móveis no Android. Permite ainda que as APIs do Groovy cresçam e evoluam através de novas versões e novos módulos de extensão, e que os usuários colaborem com métodos de extensão para os tipos já existentes."

Se interessou?

Então é instalar e programar! Usei (e gostei!) o GVM (the Groovy enViroment Manager), que tornou bem fácil o processo inicial. Segue o passo a passo para quem usa Linux (meu caso, Ubuntu). Se quiser ver outras formas de instalação, acesse a página de download. Abra o terminal e execute os comandos abaixo na sequencia:

sudo apt-get install curl 

curl -s get.gvmtool.net | bash

source "$HOME/.gvm/bin/gvm-init.sh"

gvm install groovy

groovy -version

Como resultado, você terá o Groovy 2.1.3 instalado na sua máquina, já configurado como a versão padrão. A saída do último comando será algo assim:

Groovy Version: 2.1.3 JVM: 1.6.0_20 Vendor: Sun Microsystems Inc. OS: Linux


Agora é meter a mão na massa. Aqui no próprio blog tem o post Groovy, meus primeiros passos - configurando o ambiente. Sugiro também o Begginers Tutorial no site oficial da linguagem.



Pra concluir....

A última dica é o vídeo e os slides abaixo, disponibilizados pelo pessoal da Bluesoft. Ismael Zacarias apresenta em 20 minutos um resumo das novidades que foram listadas na InfoQ.

 
Novidades do groovy - Ismael Zacarias from Bluesoft on Vimeo.

 

segunda-feira, 28 de março de 2011

Tagged under: , , , , ,

II javaBahia nas universidades 2011: saiba como foi


Aconteceu na FIB no dia 26 de março, sábado, o segundo encontro javaBahia nas Faculdades. Neste evento tiveram duas apresentações: Cleverson Sacramento, falando sobre o Demoiselle e Lucilia falando sobre testes. No final, um dojo com Groovy conduzido por Serge Rehem (mais informações no dojo-bahia).

Público da FIB


Cleverson Sacramento

Lucília de Oliveira

Otávio Santana,Serge Rehem, Lucília de Oliveira


O evento foi muito bom e com um ótimo público. Agradecimento aos professores, alunos e toda Organização da FIB.


Fotos:


Find more photos like this on Open Source University Meetup









Videos:












Apresentações:





quinta-feira, 17 de março de 2011

Tagged under: , , ,

II encontro do JavaBahia nas Faculdades

Local: FIB
Sala: 148 S2
Data: 26 de março, sábado
Horário: 9:00 às 12:00
Inscrição: http://www.jugevents.org/jugevents/event/show.html?id=35951
Entrada gratuita


1) Palestra: Iniciando com o Demoiselle 2.0
A versão 2.0 do Demoiselle foi liberada em dezembro de 2010 e está aderente à especificação Java EE 6. O núcleo do framework faz uso intenso do CDI (Dependency and Context Inject), enquanto suas extensões fazem uso das demais especificações (JSF2, JPA2, Validation, Servlet3 e EJB 3.1). Esta palestra aborda as principais funcionalidades do framework para auxiliar nos primeiros passos de uma aplicação. Você vai descobrir como é fácil e rápido decolar com a versão 2.0 do Demoiselle.
Palestrante: Cleverson Sacramento (ZyC)
Minicurriculo: é mestre em Sistemas e Computação pela Universidade Salvador (UNIFACS) e MBA em Gestão de Sistemas de Sistemas de Informação pela Faculdade de Tecnologia Empresarial (FTE). Trabalha na Coordenação Estratégica de Tecnologia do Serpro na regional Salvador. Faz parte da equipe de desenvolvedores dedicados ao projeto Demoiselle e é entusiasta da versão 2.0. É fundador do projeto opensource Rasea (http://rasea.org/) e gosta de escrever sobre tecnologia e outras coisas no seu blog (http://cleversonsacramento.wordpress.com/). É fã de uma boa pedalada e adora fazer um som com os amigos.
2) Palestra: Desmistificando o Testes de Software
Apresentar os principais conceitos de Testes de Software, e demonstrar os principios iniciais para se comecar a estruturar uma equipe testes dentro de uma organização, abrandengo desde o processo de validação a ferramentas de Gestão de Testes.
Palestrante: Lucilia de Oliveira
Minicurriculo: Graduada em Sistemas de Informação pela FIB - Estácio de Sá, atualmente exerce o cargo de Analista de Testes da SAEB - Secretaria de Administração do Estado da Bahia. Iniciando, o curso de Especialização em Engenharia e Qualidade de Software no Centro Universitário Unijorge.

3)Coding-dojo com Groovy.
Um Coding Dojo é um encontro onde um grupo de programadores se reúne para trabalhar em conjunto em um desafio de programação. Eles estão lá para se divertir, e, através de uma metodologia pragmática, melhorar suas habilidades de programação e de trabalho em grupo.
Sensei: Serge Rehem
Minicurriculo: é analista do Serpro, atualmente lidera a equipe técnica do Framework Demoiselle, na projeção da Coordenação Estratégica de Tecnologia (Cetec) na regional Salvador. É JUGLeader do grupo JavaBahia, o primeiro a levar o Maré de Agilidade para fora de Brasilia, em março de 2009. Desde então vem usando e divulgando metodologias ágeis, espalhando junto com outros grupos de usuários a idéia de misturar Linguagens de programação e Agilidade. Assim surgiram as duas edições do evento LinguÁgil. É autor do blog bazedral.blogspot.com, onde escreve sobre Colaboração. É ainda bodyboarder eventual, aproveitando as ondas da deliciosa praia de Guarajuba, no litoral norte baiano.


Veja como foi o anterior

quinta-feira, 9 de setembro de 2010

Tagged under: , , , , ,

Testes Unitários com Groovy - Parte 1

Nos meus primeiros passos com Groovy falei sobre como instalar o Groovy e configurar o Gedit no Ubuntu. Ficou pendente tratar sobre testes unitários. Se eu soubesse que era tão fácil, tinha falado disso também. Vamos lá.

É só pensar em testes unitários para nos lembramos da família *Unit, então fui logo procurar se existia um "GUnit". Rapidamente descobri que não precisa, pois Groovy é Java, portanto totalmente integrável ao JUnit. Na documentação oficial do Groovy esta seção sobre o essencial http://groovy.codehaus.org/Unit+Testing. Farei aqui um resumo, indo direto ao código. Eu deveria fazer isso com TDD, mas num blog seria meio chato (quem sabe eu faça um vídeo hora dessas).

Vamos começar por uma classe simples, arquivo GroovyCalc.groovy, uma calculadora com as 4 operações básicas. Inicialmente vou fazer todos os métodos retornarem o valor -100, para garantir a falha de 100% dos testes que vem em seguida.



class GroovyCalc {
def soma(a,b) { -100 }
def multiplica(a,b) { -100 }
def subtrai(a,b) { -100 }
def divide(a,b) { -100 }
}


Para fazer uma classe de teste, basta criar o arquivo GroovyCalcTest.groovy no mesmo pacote. A classe GroovyCalcTest deve estender de groovy.util.GroovyTestCase (não é preciso import, pois groovy.util.* já está disponível por default), que já oferece tudo do JUnit 3 e mais algumas coisinhas interessantes. Criei 8 testes para as 4 operações, buscando mostrar formas diferentes de implementação.

class GroovyCalcTest extends GroovyTestCase {
def calc

void setUp() {
calc = new GroovyCalc()
}

void testSoma3mais2igual5() {
assert 5 == calc.soma(3,2)
}

void testMultiplica3por2igual6() {
assert 6 == calc.multiplica(3,2): "2 multiplicado por 3 deveria ser 6"
}

void testSubtrai() {
assertEquals 1, calc.subtrai(3,2)
}

void testDivide3por2igual1eMeio() {
assertEquals "3 dividido por 2 deveria ser 1.5", 1.5, calc.divide(3,2)
}

void testDivisaoPor0geraExcecaoForma1() {
try {
def result = calc.divide (3, 0)
} catch(ArithmeticException e) {
return;
}
fail();
}

void testDivisaoPor0geraExcecaoForma2() {
try {
def result = calc.divide (3, 0)
} catch(java.lang.ArithmeticException e) {
assertEquals("/ by zero", e.getMessage());
return;
}
fail("Divisão por 0 deveria lançar ArithmeticException '/ by zero'");
}

void testDivisaoPor0geraExcecaoForma3() {
shouldFail(ArithmeticException) {
def result = calc.divide (3, 0)
}
}

void testDivisaoPor0geraExcecaoForma4() {
def msg = shouldFail(ArithmeticException) {
def result = calc.divide (3, 0)
}
assertTrue msg == "/ by zero"
}
}
Para executar os testes, é só digitar groovy GroovyCalcTest na linha de comando. Todos os testes irão falhar, e você receberá uma saída como esta abaixo. Saliento que, por questões de espaço (a saída completa tem 273 linhas!), omiti as linhas de "debug" do Java, deixando apenas as 3 primeiras do erro 1 (linhas 5 a 8).


.E.E.F.F.F.F.F.F
Time: 0,016
There were 2 errors:
1) testSoma3mais2igual5(GroovyCalcTest)java.lang.AssertionError: Expression: (5 == calc.soma(3, 2))
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:394)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:676)
at GroovyCalcTest.testSoma3mais2igual5(GroovyCalcTest.groovy:9)
...
2) testMultiplica3por2igual6(GroovyCalcTest)java.lang.AssertionError: 2 multiplicado por 3 deveria ser 6. Expression: (6 == calc.multiplica(3, 2))
There were 6 failures:
1) testSubtrai(GroovyCalcTest)junit.framework.AssertionFailedError: expected:<1> but was:<-100>
2) testDivide3por2igual1eMeio(GroovyCalcTest)junit.framework.AssertionFailedError: 3 dividido por 2 deveria ser 1.5 expected:<1.5> but was:<-100>
3) testDivisaoPor0geraExcecaoForma1(GroovyCalcTest)junit.framework.AssertionFailedError: null
4) testDivisaoPor0geraExcecaoForma2(GroovyCalcTest)junit.framework.AssertionFailedError: Divisão por 0 deveria lançar ArithmeticException '/ by zero'
5) testDivisaoPor0geraExcecaoForma3(GroovyCalcTest)junit.framework.AssertionFailedError: Closure GroovyCalcTest$_testDivisaoPor0geraExcecaoForma3_closure1@df1832 should have failed with an exception of type java.lang.ArithmeticException
6) testDivisaoPor0geraExcecaoForma4(GroovyCalcTest)junit.framework.AssertionFailedError: Closure GroovyCalcTest$_testDivisaoPor0geraExcecaoForma4_closure2@1576e70 should have failed with an exception of type java.lang.ArithmeticException

FAILURES!!!
Tests run: 8, Failures: 6, Errors: 2

Vamos agora a alguns comentários. Observe que os 2 primeiros testes são encarados como Erros e os 6 restantes como Falhas. Isso porque nos testes 1 e 2 utilizamos diretamente a instrução assert, bastante versátil mas não muito boa para indicar exatamente a causa do problema. Veja no erro 1 que a mensagem é apenas um AssertionError. No erro 2 é exibida a mensagem "2 multiplicado por 3 deveria ser 6", configurada como parâmetro adicional no assert.

Os demais testes sempre utilizam o assert*, encarados como Falha se suas condições não são satisfeitas. Todos os métodos herdados do JUnit podem ser utilizados (veja relação) e o Groovy nos dá ainda algumas opções adicionais (seção Groovy Test Assertions). Os assert* podem receber uma mensagem como primeiro parâmetro (foi o que fiz na linha 21). Usei basicamente assertEquals e assertTrue, que normalmente atendem satisfatoriamente a maioria das situações.

Os 3 testes finais verificam se a divisão por zero está corretamente lançando exceções. A forma 1 usa bloco Try/Catch e provoca uma falha usando o método fail(). A forma 2 é semelhante, mas também testa se a mensagem da exceção é correta, adicionalmente passando uma mensagem ao fail(). As formas 3 e 4 fazem o mesmo, mas de maneira mais elegante (na minha opinião) usando o método shouldFail() fornecido pelo GrooyvTestCase. Legal, não?

class GroovyCalc {
def soma(a,b) { a + b }
def multiplica(a,b) { a * b }
def subtrai(a,b) { soma(a, -1*b) }
def divide(a,b) { multiplica(a,1/b) }
}


O resultado dos testes será:

$ groovy GroovyCalcTest
........
Time: 0,023

OK (8 tests)

É isso. Para programas simples, um editor de textos e a linha de comando são suficientes para desenvolver e testar com qualidade. Sistemas maiores e mais complexos normalmente precisam do apoio de um IDE. É isso que vermos no próximo post. Até!

quinta-feira, 12 de agosto de 2010

Tagged under: , , , , ,

Groovy, meus primeiros passos - configurando o ambiente

Eu já simpatizava com o Groovy há algum tempo, por causa de leituras (principalmente da JavaMagazine), mas ainda não tinha tomado iniciativa de aprender. Por causa das sessões de Coding-Dojo, que o dojo-bahia vem realizando, a vontade de conhecer linguagens novas vem aumentando. O próximo Dojo está marcado para 25/08. E eu me comprometi em coordenar. Advinha qual será a linguagem?! :-D

Bom, eu poderia ir no caminho mais fácil que conheço. Baixar o NetBeans 6.9.1 que já vem com o suporte completo a Groovy. Até já usei e fiz uns testes (gosto bastante do NetBeans!), mas para a simplicidade do Dojo vou optar pelo prompt de comando e editor de texto simples. Vou relatar aqui os passos que segui para configurar o ambiente no Ubuntu 8.04, que é a versão atual usada no Serpro.

1) Instalando o Groovy
Supondo que você já tem Java instalado, vamos direto ao ponto. Abra o terminal e digite sudo apt-get install groovy. Quando concluir, digite groovy -v e pronto! E você verá a versão instalada (no meu caso, apareceu Groovy Version: JVM: 14.3-b01)

É só isso mesmo. Aqui uma referencia mais detalhada, que fala inclusive do Grails, que não vou tratar no momento.

Se você ficou entediado com essa forma de verificar se o Groovy está instalado, então experimente digitar isso na linha de comando: groovy -e "new File('.').eachFileRecurse { println it }". Ele vai listar todos os arquivos da sua pasta! Agora tente fazer isso em Java com uma única linha...

Ainda tá chato? Então vai no groovysh e tenha uma noção do que você pode fazer:


2) Configurando o Gedit para reconhecer o Groovy

Tem quem goste de vi, pico, nano, e por ai vai. Eu mesmo comecei minha carreira programando em Cobol, usando vi, num Cobra 3270 (e olha que nem sou tão velho assim). Na época era fera, mas tô enferrujado então melhor não arriscar. O Gedit já vem no Gnome, é conhecido e fácil de utilizar, então tá escolhido.

Depois do passo 1 já é possível criar programas Groovy, mas o Gedit por default não conhece sua sintaxe, então não deixa o código colorido o que já seria uma boa ajuda para os iniciantes que verão Groovy pela primeira vez no Dojo. Fui procurar como habilitar. É simples.

Baixa e descompacta o arquivo grails-gedit.tar.bz2. No prompt, executa o ./install.sh. Ele vai automaticamente copiar uns arquivos *.lang e *-mime.xml nas pastas /usr/share/gtksourceview-2.0/language-specs/ e /usr/share/mime/packages/. Depois, execute o comando sudo update-mime-database /usr/share/mime. E só! Descobri isso neste site.

Agora se você criar um arquivo qualquer com a extensão .groovy o Gedit já vai reconhecer. Veja:


3) Mais umas coisinhas legais pro Gedit

Eu também não sabia, mas o Gedit aceita plug-ins. Veja no site oficial do gedit que já existem tem alguns oficiais, outros de terceiros. Neste outro site tem uma lista bem legal em português. Para instalar os oficiais, comando sudo apt-get install gedit-plugins. Depois abre o Gedit, escolhe Editar/Preferências, aba Plug-ins e habilita os que achar interessante. Selecionei 3: Comentar código; Fechamento automático de parenteses; Comentário embutido. Neste post tem outras dicas para um ambiente de programação com gedit.

4) Executando uma aplicação Groovy

Vou adaptar o exemplo teste1.groovy, mostrado no passo 3. Para executá-lo você pode usar o próprio Gedit, pedindo para Ver/Painel Inferior (Ctrls+F9), e digitar groovy teste1.groovy. O resultado aparecerá logo abaixo.

Clique na imagem para melhor visualizar

No próximo post direi como configurar esse ambiente para permitir trabalharmos com teste unitários, afinal Coding-Dojo sem TDD é que nem cozido sem banana da terra. :-P