Minicurso grails

1,113 views

Published on

Published in: Technology

Minicurso grails

  1. 1. O “Santo Graal” do desenvolvimento Web! Natã Melo (nata.venancio.melo@gmail.com) Créditos: Diego Cavalcantiquarta-feira, 9 de maio de 2012
  2. 2. quarta-feira, 9 de maio de 2012
  3. 3. Olhando o passadoquarta-feira, 9 de maio de 2012
  4. 4. • Perda de tempo para criar ambiente de desenvolvimento ... • ... e para configurar uma aplicação Olhando o passadoquarta-feira, 9 de maio de 2012
  5. 5. • Muitas tarefas repetitivas executadas manualmente • Muito tempo para aprender tecnologias (Spring, Hibernate, JSF, etc) Olhando o passadoquarta-feira, 9 de maio de 2012
  6. 6. • Baixa produtividade no desenvolvimento Web Olhando o passadoquarta-feira, 9 de maio de 2012
  7. 7. Resultado...quarta-feira, 9 de maio de 2012
  8. 8. Temos solução para esses problemas?quarta-feira, 9 de maio de 2012
  9. 9. Ruby on Rails CoC: Convention over Configuration DRY: Don’t Repeat Yourselfquarta-feira, 9 de maio de 2012
  10. 10. Ruby on Rails Stack Completo Expansibilidadequarta-feira, 9 de maio de 2012
  11. 11. E por que não Ruby on Rails? O investimento feito na equipe e nas ferramentas com Java não deve se perder!quarta-feira, 9 de maio de 2012
  12. 12. Desenvolvimento Web <<Rápido e com qualidade>>quarta-feira, 9 de maio de 2012
  13. 13. Framework baseado em MVC para desenvolvimento web com alta produtividadequarta-feira, 9 de maio de 2012
  14. 14. Padrão MVCquarta-feira, 9 de maio de 2012
  15. 15. quarta-feira, 9 de maio de 2012
  16. 16. •Spring •Hibernate •Groovy •Java •SiteMesh •Jetty •Apache Antquarta-feira, 9 de maio de 2012
  17. 17. Integração simples com o banco de dados Hibernate transparente para o programador +quarta-feira, 9 de maio de 2012
  18. 18. Arquitetura Grailsquarta-feira, 9 de maio de 2012
  19. 19. Casos de sucesso Em 2007, eram 7 mil downloads por mês. Em 2008, passou para 70 mil! Mantém a média atualmente!quarta-feira, 9 de maio de 2012
  20. 20. Casos de sucesso + 150 milhões de usuáriosquarta-feira, 9 de maio de 2012
  21. 21. Casos de sucesso + 1 bilhão de páginas acessadas por mêsquarta-feira, 9 de maio de 2012
  22. 22. quarta-feira, 9 de maio de 2012
  23. 23. Comunidade vibrante • http://grails.markmail.org/ • + de 200.000 mensagens • Em média 54 mensagens por diaquarta-feira, 9 de maio de 2012
  24. 24. Pausa para alguns conceitosquarta-feira, 9 de maio de 2012
  25. 25. Linguagem dinâmica e ágil para JVM Java com esteróides Todo o poder de Java mas com recursos poderosos emprestados de outras linguagens Integração com objetos e bibliotecas Javaquarta-feira, 9 de maio de 2012
  26. 26. public class Minicurso { private String titulo; public Minicurso (String titulo){ this.titulo = titulo; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getMensagem (){ return "Título do Minicurso: " + this.titulo; } }quarta-feira, 9 de maio de 2012
  27. 27. public class Minicurso { private String titulo; public Minicurso (String titulo){ this.titulo = titulo; } public String getTitulo() { return titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } public String getMensagem (){ return "Título do Minicurso: " + this.titulo; } }quarta-feira, 9 de maio de 2012
  28. 28. E os esteróides?quarta-feira, 9 de maio de 2012
  29. 29. “Groovyficando” o código class Minicurso { def titulo def getMensagem (){ "Título do Minicurso: ${titulo}" } } miniCurso = new Minicurso (titulo = "Grails") miniCurso.getMessagem ()quarta-feira, 9 de maio de 2012
  30. 30. Mais facilidades... Null Checking if (obj != null) ... if (obj) ...quarta-feira, 9 de maio de 2012
  31. 31. Mais facilidades... Null Checking Object obj = new Object (); String str = "Valor do objeto: " + obj == null ? "null" : obj.toString(); Object obj = new Object() String str = "Valor do objeto ${obj?.toString()}"quarta-feira, 9 de maio de 2012
  32. 32. Mais facilidades... Mapas import java.util.HashMap; import java.util.Map; Map m = new HashMap(); m.put("br", "Brasil"); m.put("us", "USA"); m = [br:"Brasil", us:"USA"]quarta-feira, 9 de maio de 2012
  33. 33. Mais facilidades... Looping for (int i = 0; i < list.size(); i++) { Object o = list.get(i); o.method(); } list.each(){ it.method() }quarta-feira, 9 de maio de 2012
  34. 34. Mais facilidades... Looping for (i in 0..<10) { print i }quarta-feira, 9 de maio de 2012
  35. 35. Mais facilidades... Return String getEdicao (num){ "Edicao: ${num} " }quarta-feira, 9 de maio de 2012
  36. 36. E ainda tem muito mais! http://groovy.codehaus.org/User+Guide quarta-feira, 9 de maio de 2012
  37. 37. http://www.springsource.com/ developer/stso http://netbeans.org/downloads/ index.html http://www.eclipse.org/ downloads/quarta-feira, 9 de maio de 2012
  38. 38. Mãos à obraquarta-feira, 9 de maio de 2012
  39. 39. Primeiros Passos Instalação • Download: http://grails.org/ Download • Descompactar a pasta • Configurar variável de ambiente GRAILS_HOME • Detalhes: http://grails.org/ Installation+Portuguesequarta-feira, 9 de maio de 2012
  40. 40. Comandos básicos • grails create-app • grails create-domain-class • grails generate-all • grails install-plugin • grails run-app • grails war grails helpquarta-feira, 9 de maio de 2012
  41. 41. Estrutura de diretórios e convenções de nomequarta-feira, 9 de maio de 2012
  42. 42. Você percebeu? • Nenhum arquivo XML de configuração • Nenhum arquivo de mapeamento • Nenhuma configuração de banco de dados • Nenhuma instalação de servidor de aplicação Tem muita mágica por baixo disso tudo!quarta-feira, 9 de maio de 2012
  43. 43. Domain Class <<BD Simplificado>> Table Album class Album { String title id title artist release_date String artist Date releaseDate static hasMany = [songs: Song] } Table Song class Song { id title duration album_id String title Double duration }quarta-feira, 9 de maio de 2012
  44. 44. Vamos criar uma simples aplicação!quarta-feira, 9 de maio de 2012
  45. 45. CRUD Criar Recuperar Atualizar (Update) Remover (Delete)quarta-feira, 9 de maio de 2012
  46. 46. Constraints class Usuario { String username String passwd String nomeCompleto String identidade static constraints = { username(size:6..15, matches:"[a-zA-Z0-9]+", unique:true, blank:false, nullable:false) passwd(size:6..100, matches:"[a-zA-Z0-9]+", blank:false, nullable:false, password:true) nomeCompleto(size:1..50, blank:false, nullable:false) identidade(size:1..20, blank:false, nullable:false, matches:"[0-9]+") } } Ler documentação para ver todas as restrições!quarta-feira, 9 de maio de 2012
  47. 47. Consultas ao BD Table Album class Album { String title id title artist release_date String artist Date releaseDate static hasMany = [songs: Song] } Table Song class Song { id title duration album_id String title Double duration } Métodos default: •Album.count() •Album.get(1) •Song.list() •song.save() •song.delete() •...quarta-feira, 9 de maio de 2012
  48. 48. Consultas ao BD Table Album class Album { String title id title artist release_date String artist Date releaseDate static hasMany = [songs: Song] } Table Song class Song { id title duration album_id String title Double duration } Buscas dinâmicas: •Song.findByTitle ("Parachutes") •Album.findByArtist ("Jotta A") •Song.findByDuration(3.24)quarta-feira, 9 de maio de 2012
  49. 49. “Grails não é somente um framework, mas uma plataforma” (Graeme Rocher) Plugins permitem compor aplicações de forma rápida, sem muita configuração!quarta-feira, 9 de maio de 2012
  50. 50. Mais de 750 plug-ins (Sem contar as APIs de Java) • Testes: Functional-test, Fitness, Code coverage, etc. • Interfaces Robustas: Flex, GWT, RichUI, etc. • Segurança: Spring Security, Apache Shiro, OpenID, etc. • Integração: JasperReports, JMS, Google App Engine, Facebook,Twitter, etc.quarta-feira, 9 de maio de 2012
  51. 51. Material de Apoio http://grails.org/doc/2.0.3/ http://grails.org/Tutorials http://grails.org/screencastsquarta-feira, 9 de maio de 2012
  52. 52. Mundo perfeito!?quarta-feira, 9 de maio de 2012
  53. 53. O que você precisa lembrar? Grails torna o desenvolvimento web simples, sem sacrificar a qualidade da aplicação!quarta-feira, 9 de maio de 2012
  54. 54. Dúvidas ?quarta-feira, 9 de maio de 2012
  55. 55. O “Santo Graal” do desenvolvimento Web! Natã Melo (nata.venancio.melo@gmail.com) Créditos: Diego Cavalcantiquarta-feira, 9 de maio de 2012

×