Posts

Showing posts with the label groovy

Spring Boot Groovy Console

Image
Observability is a must-have nowadays in modern cloud services. There are multiple levels and options to provide observability into a service. Logging is the basic one but is well used can perform miracles, metrics, dashboards, and alerts and at the top of the chain however, the true nirvana is to have a self-managed / self-healing system and for troubleshooting a query interface. If you let it sink for a moment and think about it you will realize we often had such power in the past with relational databases with a SQL client for instance. However using a Spring Boot stack using polyglot persistence, with JPA, Reactive Programing, Multiple property sources, and Beans it's easy to get into the application and shared libs internals. So what's best? To have access to all properties at runtime and spring beans and be able to execute CODE in a very fluent way. That's where Groovy comes into the play. Inspired by Gabor Bata work , today I will show how we can get that and more w...

Having fun with the Jenkins DSL

Image
Jenkins it's a outstanding deployment tool. I love Jenkins, i use for a very long time.  I remember when was called Hudson.  There are several things that made Jenkins one for the most used solutions for deploys. Jenkins has a awesome community with more than 1k plugins . For this post i will cover a specific plugin called Jenkins Job DSL . This plugin gives you a Groovy DSL to code your Jobs, yes Code not XML. :-) This is good for lots of reasons. First of All in a DevOps context this allow you to automate the job creation which is tedious and manual. Moreover the DSL is great because it allow you to create a massive number of job, so in a microservices context lets say you have 50 microservices and all run in they own jetty and they code is on GitHub and build is done using maven. You can automate all that and create a JOB using the DSL this job will create the other jobs. Even if you have one job only for me it makes sense because you have it automated. We will ...

Setting up a full JVM Env with Vagrant: Java 8, Scala 2.11, Groovy 2.4, Clojure 1.6, Maven 3.3, Gradle 2.4, Sbt 0.13 and Lein

Image
On the previous posts i show how to use docker , docker-compose and nodejs with vagrant now let`s do a full jvm env :-) This setup is pretty easy and straightforward for you however it could take some time depending of your internet bandwidth because we gonna download several components. Remember you need to have Vagrant installed already, this time we gonna need more than just the Vagrant file because java, scala, clojure for instance require we setup environment variables so we gonna need change some files for clojure and sbt  in order to make everything work smoothly.

Groovy Power: Flexibilidade, Simplicidade e Código Legível

Image
Eu um post anterior comentei sobre a importância de se escrever um código mais fluente, ligível e auto-explicativo. Muitas vezes são com pequenas ações que podemos melhorar este aspecto sobre o código que escrevemos. Estas pequenas ações são caracterizadas com um bom disgn coeso e pouco acoplado, bons nomes de classes e métodos, variáveis com nomes significativos e código fluente e claro. Criar código fluente e claro pode ser especialemte desafiador. É facto que certas linguagens facilitam ou dificultam esta tarefa, Java não é a linguagem mais fluente do mundo mas existem alternativas. No post anterior eu ensinei a criar uma DSL com Java sem nenhum framework e com batsante fluencia. Neste post quero comentar sobre a linguagem dinamica Groovy que é a referência padrão de linguagens dinamicas para a JVM. Existem outras bem funcionais e interessantes como JRuby, BeanShell, Jython, Scala e tantas outras. Em especial hoje vou falar de Groovy, por que? Por que como desenvolvedor Java ...

Consumindo Webservices em Groovy com GroovyWS

No post anterior mostrei como criar um Webservice wsdl de forma fácil usando Spring Framework, Apache CXF, Anotações e tudo isso rodando no servidor da ORACLE o Weblogic. Nesse post vou mostrar como é simples de consumir o mesmo Webservice do exemplo anterior usando Groovy. Para isso vamos precisar do module do Groovy chamado de GroovyWS, você precisa baixar a solução aqui . Vou usar o mesmo Webservice construído no post anterior que esta aqui: http://localhost:7001/spring-cxf-pojo/DateService?wsdl eu instalei direto no diretório $GROOVY_HOME/lib e colei o jar groovyws-standalone-0.5.0.jar. Agora basta executar o seguinte código, eu fiz isso pelo groovyConsole mesmo, tente você também: /** * Script Groovy que faz o consumo de um Webservice WSDL com groovy usando o module de GroovyWS. * * @autor Diego Pacheco * @since 15/06/2009 * @version 1.o * */ import groovyx.net.ws.WSClient proxy = new WSClient("http://localhost:7001/spring-cxf-pojo/DateService?wsdl", this....

Scripts Groovy

Hoje vim compartilhar alguns scripts Groovy. Vou postar 3 scripts sendo que um é muito simples mas tem o seu valor e os outros dois tem mais utilidade prática, todos servem para que o leitor possa aprender mais sobre Groovy. Atualmente se tenho que fazer um script para fazer alguma coisa eu não penso duas vezes e uso Groovy, por que é simples, fácil e o código fica limpo e claro. Os scripts são esses: wcSvnCls.groovy pomDepReader.groovy toJSlash.groovy O primeiro script é de utilizada geral, o segundo script serve para quem mexe com o controle de versão Subversion e o terceiro para quem usa Maven 2. Esses scripts são válidos para windows ou Linux, não testei no Mac mas deve rolar também. O primeiro Script o toJSlash.groovy normaliza as barras, sabendo que as barras do windows são "\" e as do Java e Linux "/" então esse scriptzinho faz essa conversão: /** * Script Groovy que faz a conversao das barras do windows para as barras do java/linux * Ess...

Atualizando o Twitter com Groovy

Alguns dizem que o Twitter vai substituir o blogging eu particularmente acredito que uma coisa não substitui a outra. Até por que a idéia do twitter é atualização simples e freqüente e o blogging é maior volume de informação com menos freqüência. O Twitter é extremamente útil para passar pequenas informações ou dicas, como por exemplo links de artigos, atualizações de software entre tantas outras coisas. Vou mostrar como é fácil atualizar o seu twitter com um script groovy . O Twitter tem uma API REST para acesso as suas informações. Vamos utilizar essa API para atualizar o seu twitter através de um script. Você poderia fazer mais coisas, pois a api permite diversas operação em cima da sua conta no Twitter. Para tal feito vou utilizar um modulo extra do Groovy que é o HttpBuilder , como o nome já diz é um builder que tem capacidade de trabalhar com requisições http através dos métodos POST e GET utilizando JSON ou XML. package com.blogspot.diegopacheco.httpbuildergroovytw...

Proxy/Interceptor à la carte com Groovy

Groovy é uma linguagem de script fantástica, tem um poder e facilidade assombrosa. Muitas dessas facilidades não existem quando trabalhamos com Java. Algumas existem mas não são para meros mortais e em muitas vezes temos que envolver diversos outros frameworks para executar o que queremos. O Groovy possui diversas maneiras de se trabalhar com proxy/interceptors e vou mostrar algumas dessas maneiras nesse post. Considere então a seguinte interface Java. package com.blogspot.diegopacheco.groovy.proxy; /** * Interface que representa o contrato de OrdemCompra * * @author Diego Pacheco * @since 17/02/2009 * @version 1.0 * */ public interface OrdemCompra { public void comprar(); } Vamos aplicar o proxy Groovy em cima de uma interface Java, a interface OrdemCompra. Você poderia aplicar esse proxy em uma interface Groovy também. Vou mostrar a primeira fora de proxy com o proxy-o-mate que é um dos módulos do Groovy. package com.blogspot.diegopacheco.groovy.proxy import static org....

Swing Fácil com Groovy: Como criar seus próprios componentes

Não tenho dúvidas que o desenvolvimento de aplicações desktop com Java tem seu problemas. Não digo apenas pela estrutura de composite do Swing, ou de classes gigantes com muitas responsabilidades como o JFrame. Mas mesmo com todos esses problemas vejo o desenvolvimento de aplicações Swing para Java ainda com viabilidade. Hoje é dia é comodismo desenvolver aplicações para Web. O que acontece é que nem todos os sistemas ou nem todas as funcionalidades dos sistemas podem ser feitas na web, por que? Complexidade do desenvolvimento com JavaScript Consumo de memória do cliente(Browser) Complexidade de tecnologias Ajax VS problemas de uso de Arquiteturas Commet. Falta de bons IDEs e Debuggers para JavaScript Pouca performance na execução de JS devido a sua arvore DOM. Tempo de desenvolvimento e custo de manutenção Quando desenvolvemos com Swing puro por mais nojento que possa ser ainda assim nos livramos de muitos problemas. Vejam que eu não sou contra o desenvolvimento para web, m...

Backup fácil no Ubuntu com Groovy e Groosh

Image
Em um projeto de desenvolvimento de software é comum usar boas práticas de gerência de configuração e ambiente. Essas práticas são na maioria traduzidas em processos de ferramentas. Ferramentas são utilizadas para diversos propósitos como controlar a versão do código ou controlar os buils do projeto ou controlar e gerenciar o bugs e issues do projeto. Normalmente por questões de custo e performance essas ferramentas ficam em um ambiente Linux. Logo não basta apenas ter um bom conjunto de ferramentas que auxiliam no desenvolvimento mas é necessário ter bons scripts de backup também. Utilizando o Bugzilla por exemplo como ferramenta de BugTracking você possuirá uma base de bugs e ocorrências sobre eles. Você não vai querer perder esses dados pois eles são muito úteis para tratar e controlar a evolução doa software mas também para o trabalho de métricas de um profissional de Qualidade de software. Bom já que não queremos perder essas informações precisamos fazer backup. Mas qual a ...

Plugin do Groovy parou de funcionar no Ganymede

Image
Instalei o eclipse 3.4.1 aka Ganymede SR1, de cara ele já se mostrou problemático em relação aos plugins, tive que matar a pasta '.metadata' do workspace e criar de novo. Ai eu consegui fazer os updates básicos da plataforma. O pessoal anda reclamando que todos esses problemas com plugins do eclipse são referentes ao novo sistema de provisionamento 'P2' do eclipse, na verdade é possível que esses plugins tenham que ser reescritos ou o eclipse pode ter algum bug relacionado a essa questão. Reparem que na tela de update do eclipse as coisas já estão estranham mesmo assim, teimoso, eu continuei e ai veio a confirmação. Não funcionou! Agora é voltar a versão antiga do eclipse que tinha suporte a esse plugin do Groovy até que os caras corrijam as coisas. Se alguém achou uma solução nessa mesma versão do eclipse, me fale!

Threads e Closures em Groovy

Image
Groovy é a mais famosa linguagem de scripts para Java. O Projeto é líder de implementação da especificação JSR 223 e ainda existe a proposta da JSR 241 . Groovy é uma linguagem de script para a plataforma java que se caracteriza por prover: - Agilidade e produtividade para o desenvolvimento. - Interpolaridade total com Java. - Suporte a Closures e Duck Typing . - Adiciona features ao Java baseado em linguagens como o Python e Ruby . - Dentre as features podemos destacar: Categories , GStrings e Builders . Groovy é um linguagem de Scripts extremamente poderosa e ao mesmo tempo sem perder a diversão :). O Spring Framework já prove integração com Groovy . É possível injetar um bean Java em um Bean Groovy e vice-versa através do Spring. Vamos ver algumas coisas ingressantes em prática agora. Após instalar o Groovy você pode digitar no console groovyconsole e uma tela como está deverá aparecer: Esse é o console gráfico do Groovy, com ele podemos fazer teses e até mesmo scripts inteiros...