Produtividade em Java com Grails

Post on 30-Nov-2014

1.599 views 5 download

description

INFORUSO / INOVATEC 2009

Transcript of Produtividade em Java com Grails

Produtividade em Java

Com Grails

Objetivo

“Apresentar a framework Grails, como uma evolução dentro da plataforma Java, que

eleva a produtividade com o menor risco, e está pronta para a computação nas nuvens”

Introdução

� Plataformas?� Java, .NET, PHP, Ruby, Python...

� Frameworks?� Hibernate/JPA, Spring, “EJB”...

� Frameworks Web?� Java: Tapestry 5, Wicket, JSF, Struts...� Rails, Django, WebForms/MVC...

Apresentação

� Eteg Tecnologia Ltda .� Sistemas Java e .Net� Capacitação / treinamento� MPS.BR Nível F

� Wanderson Santos� Arquiteto de Sistemas e Instrutor @ Eteg� Ampla experiência com plataformas Java, .NET e PHP� Entusiasta das práticas ágeis para desenvolvimento

Plataforma Java

� Plataforma = Fundação� Programamos com linguagem Java na plataforma

Java

� Linguagem Java (class, for, if, get/set...)� A linguagem exige muita repetição (ex. get/set)

� Plataforma Java (JVM, JAR/libs, WAR..)� A plataforma exige muita configuração

Software sempre

� “Revoluções por minuto”

� A todo momento surgem...� Novas linguagens, mais avançadas que as

anteriores� Novas plataformas, mais avançadas que as

anteriores

Como lidar com este fato?

� Ignorar : não mudar nada� “Vamos manter nossos sistemas em VB 6”� “Eu ainda não tive problemas com JSP/JDBC”

� Resultado� Perda de produtividade para o mercado� Escassez de talentos� Qualidade x Produtividade

Como lidar com este fato?

� Revolução : mudar tudo� “Migrar nossos sistemas em Delphi para .NET”� “Abandonar o Java para trilhar no Ruby On Rails”

� Resultado� Perda de ativos de reuso� Reescrita de todas as bibliotecas (arrg!)� Grandes arquiteturas de integração

Como lidar com este fato?

� Evolução : mudar o que não está bom� “Vamos manter a plataforma Java e migrar para

linguagem Groovy”

� Resultado� Mantém ativos de reuso (mesma plataforma)� Migração iterativa

� Novo módulo ou sistemas será mais produtivo

Veredito

� O problema não é aprender....� Desenvolvedores querem sempre melhorar sua

produtividade, aprender coisas novas� Tendência: programador poliglota

� Uma linguagem para cada objetivo (DSLs). Ex.: SQL

� O problema é perder o que foi feito!� “Todas as bibliotecas em Delphi tiveram que ser

convertidas para Java.”

O que é Groovy?

� “Linguagem Java 2.0”� Sintaxe reduzida e poder funcional� Linguagem padrão Java (JSR-241)

� Inclui recursos encontrados no Python, Ruby e Smalltalk, mantendo sintaxe Java� Inferência de tipos (def), closures, etc.

� JDK padrão turbinada (Groovy JDK)

Classe Java

public class Usuario {

private String nome;private Date dataNascimento;

public String getNome() {

return nome;

}

(...não cabe no slide! ☺)

Classe Groovy ☺

class Usuario {

String nomeDate dataNascimento

}

Obs.: Aceita todas a sintaxe da linguagem Java!

Coleção em Java

List frutas = new ArrayList();

frutas.add(‘pera’);frutas.add(‘uva’);

frutas.add(‘maca’);

for (String fruta : frutas) {

System.out.println(fruta);

}

Coleção em Groovy ☺

def frutas = [‘pera’,’uva’,’maca’]frutas.each {

println it

}

//Fui embora mais cedo!

I Love Groovy ☺

� println "${usuario.nome}, ${usuario.idade}”> João Ribeiro, 35

� def hoje = new Date()println hoje.format (‘MMM/yy’)> Set/2009

Tem muito, mas muito mais!

Arquitetura Java

� Configurar e manter uma boa arquitetura demanda tempo e muito conhecimento� Muitas bibliotecas e frameworks � Muitas camadas

� Escravos de Jó

� Muita configuração� XML, XML, XML...

Grails – O cálice sagrado

� Full-Stack Framework� Groovy + Spring + Hibernate

� “Groovy On Rails”� A disruptividade do Rails dentro da conhecida

Plataforma Java

� Guiada por princípios� Convenção sob Configuração � “Não se repita” (DRY)

Arquitetura Grails

� Utiliza camadas convencionais� View� Controller� Service*� Domain

� Cada camada tem uma pasta específica� Só utiliza camada Service para controlar

transação de persistência.

Disruptividades

� Utiliza a sintaxe concisa e clara do Groovy

� No XML “hell”� Configuração por convenção� Mesmo a configuração necessária não usa XML

� No DAO� Métodos para persistência são injetados nas

entidades (ActiveRecord Pattern)

Exemplo: Configuração

environments {development {

dataSource {username = "sa"password = ""dbCreate = "create-drop" url = "jdbc:mysql://dbserver"

...

Exemplo: Persistência

def wans = new Usuario()

wans.nome = ‘Wanderson Santos’wans.dataNascimento =

Date.parse(‘dd/MM/yyyy’,’01/11/1981’)

wans.dataCadastro = new Date()

wans.save() //fui!

Disruptividades

� Abstrai as frameworks padrão de mercado� Meta-plataforma

� Contato “zero” com Hibernate e Spring

� Se precisar, pode contar com eles!

� Curva de aprendizado branda� Consideravelmente menor do que outras

soluções na plataforma Java

� Qualidade com produtividade!

Exemplo: Consultas

def silvas = Usuario.withCriteria {

def hoje = new Date()between (‘dataCadastro’, hoje-7, hoje)

like (‘nome’, ‘%Silva%')

maxResults (5)

order (‘dataAniversario’, ‘desc’)

}

Exemplo: Visão

<body>

Olá ${params.mundo} !<g:each in="${[1,2,3]}" var=“ numero">

<p>Número ${numero}</p>

</g:each></body>

Grails no mercado

� Mantida pela Spring Source

� Ávida comunidade (www.grails.org)� Documentação excepcional

� Guia do Usuário (passo-a-passo)� Guia de Referência

� http://www.grailsbrasil.com/

Ferramentas para Grails

� Baseado em linha de comando (rails-like)� Muitos programam sem IDE

� Estrutura de projeto com 1 comando� grails create-app infocon

� Excelente suporte no IntelliJ IDEA 8

� Suporte completo na Spring IDE (Eclipse) em Outubro/09

Grails Plugins

� Extensibilidade da framework� Similar ao conceito de JARs, porém orientadas as

convenções do Grails� grails install-plugin auditable

� Tem plugin pra tudo! ☺� Autenticação, Busca Avançada, Componentes

Visuais, Auditoria e vários outros...

Por que Grails?

� Mantem investimento na plataforma Java� Bibliotecas JARs, Tomcat, JBoss, JVM, etc.

� Traz uma nova forma de pensar uma aplicação (herança do Rails)� Remove gorduras extras da linguagem Java e

suas respectivas configurações

� Muito prático e produtivo � Thanks Groovy! ☺

Grails é verde!

� Roda nativamente na Cloud Foundry� Basta trocar o “DataSource”

� Cloud Foundry� Plataforma aberta baseada no Cloud Tools� Abstrai plataformas existentes (Amazon EC2)

� Eteg já escala em máquinas “virtualizadas”� A conhecida robustez da plataforma Java

Declarações

� LinkedIn (250 funcionários)� “For our usage, Grails is a lot more productive

than current crop of mainstream Java Web-AppFrameworks” [in Grails At LinkedIn]

� Eteg Tecnologia� “Grails simplificou nossa curva de aprendizado e

reduziu a complexidade de implementação de nossos sistemas”

� “Tivemos uma considerável melhoria de produtividade, reduzindo o total de horas consumidas por projeto”

Por onde começar?

� Grails User Guide (www.grails.org)

� IBM “Mastering Grails”� Diversos livros no mercado

� Cadastrar-se em fóruns e listas de discussão

� Muitas referências na Web!

Perguntas?

Obrigado!

Visite-nos: www.eteg.com.br

Email: wanderson@eteg.com.brTwitter: @wanswins

Referências

� Site oficial: http://www.grails.org

� Grails Introductionhttp://www.slideshare.net/glaforge/grails-introduction-ijtc-2007-presentation

� Grails At LinkedInhttp://www.slideshare.net/linkedin/grails-at-linked