Groovy & Grails

713 views
622 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
713
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Groovy & Grails

  1. 1. Groovy & Grails Arian Pasqualiquarta-feira, 12 de outubro de 11
  2. 2. eu Arian Pasquali 24 anos Formado em Sistemas de Informação Java, Objective-C, Flex, Groovy SCJP, SCJA, ACE 6 anos de Javaquarta-feira, 12 de outubro de 11
  3. 3. Orientação a Objetos Plataforma Multi-plataforma Garbage Collector Interplanetária Máquina virtual Java Community Process Just-in-time compilerquarta-feira, 12 de outubro de 11
  4. 4. Java é fácil?quarta-feira, 12 de outubro de 11
  5. 5. é simples import java.io.*; class FileRead  {    public static void main(String args[])   {       try{     // Open the file that is the first      // command line parameter     FileInputStream fstream = new FileInputStream("textfile.txt");     // Get the object of DataInputStream     DataInputStream in = new DataInputStream(fstream);    BufferedReader br = new BufferedReader(new InputStreamReader(in));     String strLine;     //Read File Line By Line     while ((strLine = br.readLine()) != null)   {       // Print the content on the console       System.out.println (strLine);     }     //Close the input stream     in.close();     }catch (Exception e){//Catch exception if any       System.err.println("Error: " + e.getMessage());     }   } }quarta-feira, 12 de outubro de 11
  6. 6. Java como linguagem • Força Orientação a Objetos • Não dá pra fazer script • Fortemente tipada • Não suporta programação funcional • Verbose syntax • Difícil de aprender • A evolução da linguagem é lentaquarta-feira, 12 de outubro de 11
  7. 7. linguagens dinâmicas ganhando popularidade • Python • Rubyquarta-feira, 12 de outubro de 11
  8. 8. Java como plataforma • Máquina virtual • Gestão de ambiente • Segurança • Performance • Mão de obraquarta-feira, 12 de outubro de 11
  9. 9. Linguagens portadas pra JVM • Ruby -> JRuby • Python -> Jython • Lisp -> Jatha • Erlang -> Erjang • JavaScript -> Rhino • Lua -> LuaJ • PHP -> Caucho Quercus • .........quarta-feira, 12 de outubro de 11
  10. 10. mais alternativas?quarta-feira, 12 de outubro de 11
  11. 11. quarta-feira, 12 de outubro de 11
  12. 12. Groovy extends Java é Java com super poderesquarta-feira, 12 de outubro de 11
  13. 13. Groovy • Linguagem dinâmica baseada em Java que roda na JVM • Com mais recursos • Syntax mais simples • MOP - Meta Object Protocol • Tipagem dinâmica opcional • Clojures • DSLs •quarta-feira, 12 de outubro de 11 etc, etc, etc
  14. 14. Curva de aprendizado • Baseado no Java • Baixa curva de aprendizado para desenvolvedores Java/ Ruby/Python • Integração transparente com qualquer código Java existentequarta-feira, 12 de outubro de 11
  15. 15. Interoperabilidadequarta-feira, 12 de outubro de 11
  16. 16. Compilado file.groovy file.java bytecode bytecode The Java Virtual Machine Compilada. Não interpretada.quarta-feira, 12 de outubro de 11
  17. 17. Uma classe em Java Uma classe .java public class HelloWorld { private String name; public String getName() { return name; } public void setName(String message) { this.name = message; } public String message() { return "Hello World of "+this.name; } public static void main(String[] args) { HelloWorld hello = new HelloWorld(); hello.setName("Grooooooovy"); System.out.println(hello.message()); } }quarta-feira, 12 de outubro de 11
  18. 18. Uma classe .groovy Uma classe em Java public class HelloWorld { private String name; public String getName() { return name; } public void setName(String message) { this.name = message; } public String message() { return "Hello World of "+this.name; } public static void main(String[] args) { HelloWorld hello = new HelloWorld(); hello.setName("Grooooooovy"); System.out.println(hello.message()); } }quarta-feira, 12 de outubro de 11
  19. 19. Se você já programa em Java Você já programa em Groovyquarta-feira, 12 de outubro de 11
  20. 20. A mesma classe a mesma classe em groovy em Groovy class HelloWorld { String name def message() { "Hello World of $name" } } def hello = new HelloWorld(name:"Grooovy") println hello.message()quarta-feira, 12 de outubro de 11
  21. 21. • Tipos dinâmicos usando “def” • Tudo em Groovy é public a não ser que você informe • Auto getters and setters • ; no final da linha é opcional • “return“ é opcional • () é opcionalquarta-feira, 12 de outubro de 11
  22. 22. Lists e Maps old way groovy wayquarta-feira, 12 de outubro de 11
  23. 23. Lists e Mapsquarta-feira, 12 de outubro de 11
  24. 24. Lists e Mapsquarta-feira, 12 de outubro de 11
  25. 25. Lists e Mapsquarta-feira, 12 de outubro de 11
  26. 26. GStringquarta-feira, 12 de outubro de 11
  27. 27. Clojures {Bloco de código ou ponteiro para um método}quarta-feira, 12 de outubro de 11
  28. 28. Operadoresquarta-feira, 12 de outubro de 11
  29. 29. Operator overloadingquarta-feira, 12 de outubro de 11
  30. 30. Elvis Operator old way groovy wayquarta-feira, 12 de outubro de 11
  31. 31. Safe Navigation Operator old way groovy wayquarta-feira, 12 de outubro de 11
  32. 32. Meta-Programming {capacidade de adicionar comportamento em tempo de execução}quarta-feira, 12 de outubro de 11
  33. 33. Meta-Programming {é possível interceptar chamada de métodos e simular AOP}quarta-feira, 12 de outubro de 11
  34. 34. Meta-Programming mas e se o método não existir?quarta-feira, 12 de outubro de 11
  35. 35. Vamos aprender Java? http://www.flickr.com/photos/oskay/472097903/quarta-feira, 12 de outubro de 11
  36. 36. Instalação • Download JDK • Download Groovy binaries • http://groovy.codehaus.org/Downloadquarta-feira, 12 de outubro de 11
  37. 37. Instalação • JAVA_HOME (Java 1.5 ou >) • GROOVY_HOME • set PATH • para testar digite no terminal groovy -vquarta-feira, 12 de outubro de 11
  38. 38. Instalação • groovysh - comand line client • groovyconsole - gui clientquarta-feira, 12 de outubro de 11
  39. 39. Groovy Consolequarta-feira, 12 de outubro de 11
  40. 40. Java Beans mais simplesquarta-feira, 12 de outubro de 11
  41. 41. quarta-feira, 12 de outubro de 11
  42. 42. quarta-feira, 12 de outubro de 11
  43. 43. Java Beansquarta-feira, 12 de outubro de 11
  44. 44. Java Beans Nos casos mais típicos, normalmente a nossa classe ficaria assimquarta-feira, 12 de outubro de 11
  45. 45. Leitura de arquivosquarta-feira, 12 de outubro de 11
  46. 46. Lendo arquivos em Javaquarta-feira, 12 de outubro de 11
  47. 47. import java.io.*; class FileRead  {    public static void main(String args[])   {       try{     // Open the file that is the first      // command line parameter     FileInputStream fstream = new FileInputStream("textfile.txt");     // Get the object of DataInputStream     DataInputStream in = new DataInputStream(fstream);    BufferedReader br = new BufferedReader(new InputStreamReader(in));     String strLine;     //Read File Line By Line     while ((strLine = br.readLine()) != null)   {       // Print the content on the console       System.out.println (strLine);     }     //Close the input stream     in.close();     }catch (Exception e){//Catch exception if any       System.err.println("Error: " + e.getMessage());     }   } }quarta-feira, 12 de outubro de 11
  48. 48. Lendo arquivos em Groovyquarta-feira, 12 de outubro de 11
  49. 49. def file = new File("textfile.txt") file.eachLine { line -> println line }quarta-feira, 12 de outubro de 11
  50. 50. Escrevendo arquivosquarta-feira, 12 de outubro de 11
  51. 51. Lendo um diretórioquarta-feira, 12 de outubro de 11
  52. 52. Aplicações • Scripting (builds, banco de dados, geração de código) • Domain Specific Languages • Externalização de regra de negócio • Ex: Fórmulas matemáticas • Webquarta-feira, 12 de outubro de 11
  53. 53. Então você quer usar groovy?quarta-feira, 12 de outubro de 11
  54. 54. quarta-feira, 12 de outubro de 11
  55. 55. Mais um framework web? Struts VRaptor Cocoon Wicket Tapestry JSF etc, etc e etc...quarta-feira, 12 de outubro de 11
  56. 56. quarta-feira, 12 de outubro de 11
  57. 57. quarta-feira, 12 de outubro de 11
  58. 58. Princípios e mantras • Full-stack • Convenções no lugar de configurações • Inspirado no Ruby on Rails, Django e TurboGears • Não reinventar a roda • Hibernate, Spring, JEE • Ser o mais simples possível • Reduzindo complexidade • Pra Aumentar produtividade • “Java”quarta-feira, 12 de outubro de 11
  59. 59. Full-stack web framework • Mapeamento Objeto Relacional basedado no Hibernate • Camada de View - GSP, SiteMesh • Injeção de Dependiencia • Camada de Controller baseado no SpringMVC • Scaffolding (CRUD) • Internacionalização (i18n) • Webserver embutido - tomcat ou jetty • Build (gerenciamento de dependências) - Maven, Ivy • Gerenciamento de configurações por ambiente • Testes - jUnitquarta-feira, 12 de outubro de 11
  60. 60. Grails stackquarta-feira, 12 de outubro de 11
  61. 61. grails create-app udescquarta-feira, 12 de outubro de 11
  62. 62. um projeto grailsquarta-feira, 12 de outubro de 11
  63. 63. quarta-feira, 12 de outubro de 11
  64. 64. Configuração por ambientequarta-feira, 12 de outubro de 11
  65. 65. MVC • Model • View • Controllerquarta-feira, 12 de outubro de 11
  66. 66. Domain model validação eventosquarta-feira, 12 de outubro de 11
  67. 67. CRUDquarta-feira, 12 de outubro de 11
  68. 68. Queryingquarta-feira, 12 de outubro de 11
  69. 69. Dynamic Findersquarta-feira, 12 de outubro de 11
  70. 70. Controllers • Responsável por tratar os requests • Renderiza ou prepara a respostaquarta-feira, 12 de outubro de 11
  71. 71. Controllers • Negaciação de conteúdo • Facilita construção de APIs RESTquarta-feira, 12 de outubro de 11
  72. 72. Services • Não coloque regras de negócio dentro de Controllers. Use Services • Transacionais por defaultquarta-feira, 12 de outubro de 11
  73. 73. + de 680 Pluginsquarta-feira, 12 de outubro de 11
  74. 74. Ferramentas • Eclipse (SpringSource) • Netbeans • InteliJIDEA (melhor opção, porém é paga) • Editor de textos : TextMate, vim, etcquarta-feira, 12 de outubro de 11
  75. 75. duvidas ?quarta-feira, 12 de outubro de 11
  76. 76. arianpasquali.com about.me/arianpasquali arian.pasquali@informant.com.brquarta-feira, 12 de outubro de 11

×