• Like
Produtividade em Java com Grails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Produtividade em Java com Grails

  • 1,266 views
Published

INFORUSO / INOVATEC 2009

INFORUSO / INOVATEC 2009

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,266
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
31
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Produtividade em JavaCom Grails
  • 2. 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”
  • 3. 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...
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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.”
  • 11. 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)
  • 12. Classe Javapublic class Usuario { private String nome; private Date dataNascimento; public String getNome() { return nome; } (...não cabe no slide! ☺)
  • 13. Classe Groovy ☺class Usuario { String nome Date dataNascimento} Obs.: Aceita todas a sintaxe da linguagem Java!
  • 14. Coleção em JavaList frutas = new ArrayList();frutas.add(‘pera’);frutas.add(‘uva’);frutas.add(‘maca’);for (String fruta : frutas) { System.out.println(fruta);}
  • 15. Coleção em Groovy ☺def frutas = [‘pera’,’uva’,’maca’]frutas.each { println it}//Fui embora mais cedo!
  • 16. 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!
  • 17. 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...
  • 18. 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)
  • 19. 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.
  • 20. 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)
  • 21. Exemplo: Configuraçãoenvironments { development { dataSource { username = "sa" password = "" dbCreate = "create-drop" url = "jdbc:mysql://dbserver"...
  • 22. Exemplo: Persistênciadef wans = new Usuario()wans.nome = ‘Wanderson Santos’wans.dataNascimento = Date.parse(‘dd/MM/yyyy’,’01/11/1981’)wans.dataCadastro = new Date()wans.save() //fui!
  • 23. 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!
  • 24. Exemplo: Consultasdef silvas = Usuario.withCriteria { def hoje = new Date() between(‘dataCadastro’, hoje-7, hoje) like(‘nome’, ‘%Silva%) maxResults(5) order(‘dataAniversario’, ‘desc’)}
  • 25. Exemplo: Visão<body> Olá ${params.mundo} ! <g:each in="${[1,2,3]}" var=“numero"> <p>Número ${numero}</p> </g:each></body>
  • 26. 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/
  • 27. 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
  • 28. 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...
  • 29. 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! ☺
  • 30. 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
  • 31. Declarações LinkedIn (250 funcionários) “For our usage, Grails is a lot more productive than current crop of mainstream Java Web-App Frameworks” [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”
  • 32. 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!
  • 33. Perguntas?
  • 34. Obrigado!Visite-nos: www.eteg.com.brEmail: wanderson@eteg.com.brTwitter: @wanswins
  • 35. Referências Site oficial: http://www.grails.org Grails Introduction http://www.slideshare.net/glaforge/grails- introduction-ijtc-2007-presentation Grails At LinkedIn http://www.slideshare.net/linkedin/grails-at- linked