Produtividade em Java com Grails

35
Produtividade em Java Com Grails

description

INFORUSO / INOVATEC 2009

Transcript of Produtividade em Java com Grails

Page 1: Produtividade em Java com Grails

Produtividade em Java

Com Grails

Page 2: 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”

Page 3: Produtividade em Java com Grails

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...

Page 4: Produtividade em Java com Grails

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

Page 5: Produtividade em Java com Grails

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

Page 6: Produtividade em Java com Grails

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

Page 7: Produtividade em Java com Grails

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

Page 8: Produtividade em Java com Grails

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

Page 9: Produtividade em Java com Grails

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

Page 10: Produtividade em Java com Grails

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.”

Page 11: Produtividade em Java com Grails

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)

Page 12: Produtividade em Java com Grails

Classe Java

public class Usuario {

private String nome;private Date dataNascimento;

public String getNome() {

return nome;

}

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

Page 13: Produtividade em Java com Grails

Classe Groovy ☺

class Usuario {

String nomeDate dataNascimento

}

Obs.: Aceita todas a sintaxe da linguagem Java!

Page 14: Produtividade em Java com Grails

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);

}

Page 15: Produtividade em Java com Grails

Coleção em Groovy ☺

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

println it

}

//Fui embora mais cedo!

Page 16: Produtividade em Java com Grails

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!

Page 17: Produtividade em Java com Grails

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...

Page 18: Produtividade em Java com Grails

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)

Page 19: Produtividade em Java com Grails

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.

Page 20: Produtividade em Java com Grails

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)

Page 21: Produtividade em Java com Grails

Exemplo: Configuração

environments {development {

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

...

Page 22: Produtividade em Java com Grails

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!

Page 23: Produtividade em Java com Grails

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!

Page 24: Produtividade em Java com Grails

Exemplo: Consultas

def silvas = Usuario.withCriteria {

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

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

maxResults (5)

order (‘dataAniversario’, ‘desc’)

}

Page 25: Produtividade em Java com Grails

Exemplo: Visão

<body>

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

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

</g:each></body>

Page 26: Produtividade em Java com Grails

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/

Page 27: Produtividade em Java com Grails

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

Page 28: Produtividade em Java com Grails

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...

Page 29: Produtividade em Java com Grails

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! ☺

Page 30: Produtividade em Java com Grails

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

Page 31: Produtividade em Java com Grails

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”

Page 32: Produtividade em Java com Grails

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!

Page 33: Produtividade em Java com Grails

Perguntas?

Page 34: Produtividade em Java com Grails

Obrigado!

Visite-nos: www.eteg.com.br

Email: [email protected]: @wanswins

Page 35: Produtividade em Java com Grails

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