Groovy & grails

Embed Size (px)

DESCRIPTION

Introdução a Groovy e Grails

Citation preview

  • 1. Groovy & GrailsArian Pasqualiquarta-feira, 12 de outubro de 11

2. eu Arian Pasquali 24 anos Formado em Sistemas de Informao Java, Objective-C, Flex, Groovy SCJP, SCJA, ACE 6 anos de Javaquarta-feira, 12 de outubro de 11 3. Orientao a Objetos Plataforma Multi-plataforma Garbage CollectorInterplanetriaMquina virtual Java Community Process Just-in-time compilerquarta-feira, 12 de outubro de 11 4. Java fcil?quarta-feira, 12 de outubro de 11 5. simples importjava.io.*; classFileRead { publicstaticvoidmain(Stringargs[]) { try{ //Openthefilethatisthefirst //commandlineparameter FileInputStreamfstream=newFileInputStream("textfile.txt"); //GettheobjectofDataInputStream DataInputStreamin=newDataInputStream(fstream); BufferedReaderbr=newBufferedReader(newInputStreamReader(in)); StringstrLine; //ReadFileLineByLine while((strLine=br.readLine())!=null){ //Printthecontentontheconsole System.out.println(strLine); } //Closetheinputstream in.close(); }catch(Exceptione){//Catchexceptionifany System.err.println("Error:"+e.getMessage()); } } }quarta-feira, 12 de outubro de 11 6. Java como linguagemFora Orientao a ObjetosNo d pra fazer scriptFortemente tipadaNo suporta programao funcionalVerbose syntaxDifcil de aprenderA evoluo da linguagem lentaquarta-feira, 12 de outubro de 11 7. linguagens dinmicasganhando popularidadePythonRubyquarta-feira, 12 de outubro de 11 8. Java como plataformaMquina virtualGesto de ambienteSeguranaPerformanceMo de obraquarta-feira, 12 de outubro de 11 9. Linguagens portadas pra JVMRuby -> JRubyPython -> JythonLisp -> JathaErlang -> ErjangJavaScript -> RhinoLua -> LuaJPHP -> Caucho Quercus.........quarta-feira, 12 de outubro de 11 10. mais alternativas?quarta-feira, 12 de outubro de 11 11. quarta-feira, 12 de outubro de 11 12. Groovy extends Java Java com super poderesquarta-feira, 12 de outubro de 11 13. Groovy Linguagem dinmica baseada em Java queroda na JVM Com mais recursos Syntax mais simples MOP - Meta Object Protocol Tipagem dinmica opcional Clojures DSLsquarta-feira, 12 de outubro de 11etc, etc, etc 14. Curva de aprendizadoBaseado no JavaBaixa curva de aprendizado para desenvolvedores Java/ Ruby/PythonIntegrao transparente com qualquer cdigo Java existentequarta-feira, 12 de outubro de 11 15. Interoperabilidadequarta-feira, 12 de outubro de 11 16. Compilado le.groovyle.javabytecode bytecodeThe Java Virtual MachineCompilada. No interpretada.quarta-feira, 12 de outubro de 11 17. Uma classe em JavaUma 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. Uma classe .groovy Uma classe em Javapublic 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. Se voc j programaem JavaVoc j programa emGroovyquarta-feira, 12 de outubro de 11 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. Tipos dinmicos usando def Tudo em Groovy public a no ser que voc informe Auto getters and setters ; no nal da linha opcional return opcional () opcionalquarta-feira, 12 de outubro de 11 22. Lists e Mapsold way groovy wayquarta-feira, 12 de outubro de 11 23. Lists e Mapsquarta-feira, 12 de outubro de 11 24. Lists e Mapsquarta-feira, 12 de outubro de 11 25. Lists e Mapsquarta-feira, 12 de outubro de 11 26. GStringquarta-feira, 12 de outubro de 11 27. Clojures {Bloco de cdigo ou ponteiro para um mtodo}quarta-feira, 12 de outubro de 11 28. Operadoresquarta-feira, 12 de outubro de 11 29. Operator overloadingquarta-feira, 12 de outubro de 11 30. Elvis Operator old way groovy wayquarta-feira, 12 de outubro de 11 31. Safe Navigation Operatorold way groovy wayquarta-feira, 12 de outubro de 11 32. Meta-Programming{capacidade de adicionar comportamento em tempo de execuo}quarta-feira, 12 de outubro de 11 33. Meta-Programming{ possvel interceptar chamada de mtodos e simular AOP}quarta-feira, 12 de outubro de 11 34. Meta-Programming mas e se o mtodo no existir?quarta-feira, 12 de outubro de 11 35. Vamos aprender Java?http://www.ickr.com/photos/oskay/472097903/quarta-feira, 12 de outubro de 11 36. Instalao Download JDK Download Groovy binaries http://groovy.codehaus.org/Downloadquarta-feira, 12 de outubro de 11 37. Instalao JAVA_HOME (Java 1.5 ou >) GROOVY_HOME set PATH para testar digite no terminal groovy -vquarta-feira, 12 de outubro de 11 38. Instalao groovysh - comand line client groovyconsole - gui clientquarta-feira, 12 de outubro de 11 39. Groovy Consolequarta-feira, 12 de outubro de 11 40. Java Beans mais simplesquarta-feira, 12 de outubro de 11 41. quarta-feira, 12 de outubro de 11 42. quarta-feira, 12 de outubro de 11 43. Java Beansquarta-feira, 12 de outubro de 11 44. Java BeansNos casos mais tpicos, normalmente a nossaclasse caria assimquarta-feira, 12 de outubro de 11 45. Leitura de arquivosquarta-feira, 12 de outubro de 11 46. Lendo arquivos em Javaquarta-feira, 12 de outubro de 11 47. importjava.io.*;classFileRead{publicstaticvoidmain(Stringargs[]){try{//Openthefilethatisthefirst//commandlineparameterFileInputStreamfstream=newFileInputStream("textfile.txt");//GettheobjectofDataInputStreamDataInputStreamin=newDataInputStream(fstream); BufferedReaderbr=newBufferedReader(newInputStreamReader(in));StringstrLine;//ReadFileLineByLinewhile((strLine=br.readLine())!=null){//PrintthecontentontheconsoleSystem.out.println(strLine);}//Closetheinputstreamin.close();}catch(Exceptione){//CatchexceptionifanySystem.err.println("Error:"+e.getMessage());}}}quarta-feira, 12 de outubro de 11 48. Lendo arquivos em Groovyquarta-feira, 12 de outubro de 11 49. deffile = new File("textfile.txt")file.eachLine { line ->println line }quarta-feira, 12 de outubro de 11 50. Escrevendo arquivosquarta-feira, 12 de outubro de 11 51. Lendo um diretrioquarta-feira, 12 de outubro de 11 52. Aplicaes Scripting (builds, banco de dados, geraode cdigo) Domain Specic Languages Externalizao de regra de negcio Ex: Frmulas matemticas Webquarta-feira, 12 de outubro de 11 53. Ento vocquerusargroovy?quarta-feira, 12 de outubro de 11 54. quarta-feira, 12 de outubro de 11 55. Mais um framework web? Struts VRaptor Cocoon Wicket Tapestry JSF etc, etc e etc...quarta-feira, 12 de outubro de 11 56. quarta-feira, 12 de outubro de 11 57. quarta-feira, 12 de outubro de 11 58. Princpios e mantras Full-stack Convenes no lugar de conguraes Inspirado no Ruby on Rails, Django e TurboGears No reinventar a roda Hibernate, Spring, JEE Ser o mais simples possvel Reduzindo complexidade Pra Aumentar produtividade Javaquarta-feira, 12 de outubro de 11 59. Full-stack web framework Mapeamento Objeto Relacional basedado no Hibernate Camada de View - GSP, SiteMesh Injeo de Dependiencia Camada de Controller baseado no SpringMVC Scaffolding (CRUD) Internacionalizao (i18n) Webserver embutido - tomcat ou jetty Build (gerenciamento de dependncias) - Maven, Ivy Gerenciamento de conguraes por ambiente Testes - jUnitquarta-feira, 12 de outubro de 11 60. Grails stackquarta-feira, 12 de outubro de 11 61. grails create-app udescquarta-feira, 12 de outubro de 11 62. um projeto grailsquarta-feira, 12 de outubro de 11 63. quarta-feira, 12 de outubro de 11 64. Congurao por ambientequarta-feira, 12 de outubro de 11 65. MVCModelViewControllerquarta-feira, 12 de outubro de 11 66. Domain modelvalidaoeventosquarta-feira, 12 de outubro de 11 67. CRUDquarta-feira, 12 de outubro de 11 68. Queryingquarta-feira, 12 de outubro de 11 69. Dynamic Findersquarta-feira, 12 de outubro de 11 70. Controllers Responsvel por tratar os requests Renderiza ou prepara a respostaquarta-feira, 12 de outubro de 11 71. ControllersNegaciao de contedoFacilita construo de APIs RESTquarta-feira, 12 de outubro de 11 72. ServicesNo coloque regras de negcio dentro de Controllers. Use ServicesTransacionais por defaultquarta-feira, 12 de outubro de 11 73. + de 680 Pluginsquarta-feira, 12 de outubro de 11 74. Ferramentas Eclipse (SpringSource) Netbeans InteliJIDEA (melhor opo, porm paga) Editor de textos : TextMate, vim, etcquarta-feira, 12 de outubro de 11 75. duvidas ?quarta-feira, 12 de outubro de 11 76. arianpasquali.com about.me/[email protected], 12 de outubro de 11