SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
Groovy & Grails
                                        Arian Pasquali




quarta-feira, 12 de outubro de 11
eu
                         Arian Pasquali
                         24 anos

                         Formado em Sistemas de
                         Informação

                         Java, Objective-C, Flex,
                         Groovy

                         SCJP, SCJA, ACE

                         6 anos de Java



quarta-feira, 12 de outubro de 11
Orientação a Objetos

                                       Plataforma
     Multi-plataforma
                                         Garbage Collector

          Interplanetária
                                          Máquina virtual

         Java Community Process     Just-in-time compiler

quarta-feira, 12 de outubro de 11
Java é fácil?




quarta-feira, 12 de outubro de 11
é 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
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 é lenta


quarta-feira, 12 de outubro de 11
linguagens dinâmicas
                    ganhando popularidade

                      •      Python

                      •      Ruby




quarta-feira, 12 de outubro de 11
Java como plataforma

                      •      Máquina virtual

                      •      Gestão de ambiente

                      •      Segurança

                      •      Performance

                      •      Mão de obra




quarta-feira, 12 de outubro de 11
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
mais alternativas?



quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
Groovy extends Java
                                    é Java com super poderes




quarta-feira, 12 de outubro de 11
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
Curva de aprendizado
                      •      Baseado no Java

                      •      Baixa curva de
                             aprendizado para
                             desenvolvedores Java/
                             Ruby/Python

                      •      Integração transparente
                             com qualquer código
                             Java existente




quarta-feira, 12 de outubro de 11
Interoperabilidade




quarta-feira, 12 de outubro de 11
Compilado

                                       file.groovy            file.java




                                        bytecode             bytecode



                                          The Java Virtual Machine


                                    Compilada. Não interpretada.
quarta-feira, 12 de outubro de 11
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
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
Se você já programa
                  em Java
                  Você já
               programa em
                  Groovy

quarta-feira, 12 de outubro de 11
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
•       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

                    •       () é opcional

quarta-feira, 12 de outubro de 11
Lists e Maps
                    old way




                       groovy way




quarta-feira, 12 de outubro de 11
Lists e Maps




quarta-feira, 12 de outubro de 11
Lists e Maps




quarta-feira, 12 de outubro de 11
Lists e Maps




quarta-feira, 12 de outubro de 11
GString




quarta-feira, 12 de outubro de 11
Clojures
                 {Bloco de código ou ponteiro para um método}




quarta-feira, 12 de outubro de 11
Operadores




quarta-feira, 12 de outubro de 11
Operator overloading




quarta-feira, 12 de outubro de 11
Elvis Operator

   old way


   groovy way




quarta-feira, 12 de outubro de 11
Safe Navigation
                                       Operator
      old way




     groovy way



quarta-feira, 12 de outubro de 11
Meta-Programming
          {capacidade de adicionar comportamento em tempo
                             de execução}




quarta-feira, 12 de outubro de 11
Meta-Programming
        {é possível interceptar chamada de métodos e simular
                                 AOP}




quarta-feira, 12 de outubro de 11
Meta-Programming
                                     mas e se o método não existir?




quarta-feira, 12 de outubro de 11
Vamos aprender Java?




                                        http://www.flickr.com/photos/oskay/472097903/

quarta-feira, 12 de outubro de 11
Instalação

                      • Download JDK
                      • Download Groovy binaries
                      • http://groovy.codehaus.org/Download


quarta-feira, 12 de outubro de 11
Instalação

                      • JAVA_HOME (Java 1.5 ou >)
                      • GROOVY_HOME
                      • set PATH
                      • para testar digite no terminal groovy -v

quarta-feira, 12 de outubro de 11
Instalação


                      • groovysh - comand line client
                      • groovyconsole - gui client


quarta-feira, 12 de outubro de 11
Groovy Console




quarta-feira, 12 de outubro de 11
Java Beans mais simples



quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
Java Beans




quarta-feira, 12 de outubro de 11
Java Beans
                          Nos casos mais típicos, normalmente a nossa
                          classe ficaria assim




quarta-feira, 12 de outubro de 11
Leitura de arquivos



quarta-feira, 12 de outubro de 11
Lendo arquivos em Java



quarta-feira, 12 de outubro de 11
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
Lendo arquivos em
                                         Groovy



quarta-feira, 12 de outubro de 11
def file = new File("textfile.txt")
  file.eachLine { line ->
    println line
   }




quarta-feira, 12 de outubro de 11
Escrevendo arquivos




quarta-feira, 12 de outubro de 11
Lendo um diretório




quarta-feira, 12 de outubro de 11
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
                      • Web
quarta-feira, 12 de outubro de 11
Então
                                     você
                                      quer
                                      usar
                                    groovy?

quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
Mais um framework web?
                       Struts
                       VRaptor
                       Cocoon
                       Wicket
                       Tapestry
                       JSF
                       etc, etc e etc...

quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
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
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 - jUnit
quarta-feira, 12 de outubro de 11
Grails stack




quarta-feira, 12 de outubro de 11
grails create-app udesc



quarta-feira, 12 de outubro de 11
um projeto grails




quarta-feira, 12 de outubro de 11
quarta-feira, 12 de outubro de 11
Configuração por ambiente




quarta-feira, 12 de outubro de 11
MVC

                      •      Model

                      •      View

                      •      Controller




quarta-feira, 12 de outubro de 11
Domain model


    validação



    eventos


quarta-feira, 12 de outubro de 11
CRUD




quarta-feira, 12 de outubro de 11
Querying




quarta-feira, 12 de outubro de 11
Dynamic Finders




quarta-feira, 12 de outubro de 11
Controllers
                      •       Responsável por tratar os requests

                      •       Renderiza ou prepara a resposta




quarta-feira, 12 de outubro de 11
Controllers

                      •      Negaciação de
                             conteúdo

                      •      Facilita construção de
                             APIs REST




quarta-feira, 12 de outubro de 11
Services
                      •      Não coloque regras de negócio dentro de Controllers. Use
                             Services

                      •      Transacionais por default




quarta-feira, 12 de outubro de 11
+ de 680 Plugins




quarta-feira, 12 de outubro de 11
Ferramentas

                      • Eclipse (SpringSource)
                      • Netbeans
                      • InteliJIDEA (melhor opção, porém é paga)
                      • Editor de textos : TextMate, vim, etc

quarta-feira, 12 de outubro de 11
duvidas
                                       ?


quarta-feira, 12 de outubro de 11
arianpasquali.com
                                     about.me/arianpasquali

                                    arian.pasquali@informant.com.br




quarta-feira, 12 de outubro de 11

Weitere ähnliche Inhalte

Andere mochten auch

Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com GrailsWanderson Oliveira
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeCleórbete Santos
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsDiego Cavalcanti
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Gilliard Cordeiro
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 

Andere mochten auch (8)

Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
Rapida apresentacao sobre o Grails
Rapida apresentacao sobre o GrailsRapida apresentacao sobre o Grails
Rapida apresentacao sobre o Grails
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 

Ähnlich wie Groovy Java Dinâmico

Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on RailsSergio Henrique
 
Não é Feitiçaria, é Tecnologia
Não é Feitiçaria, é TecnologiaNão é Feitiçaria, é Tecnologia
Não é Feitiçaria, é TecnologiaAdler Medrado
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesEder Magalhães
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Marcelo Bohn
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPFelipe Zampa
 
JavaScript agora é sério (FISL 2011)
JavaScript agora é sério (FISL 2011)JavaScript agora é sério (FISL 2011)
JavaScript agora é sério (FISL 2011)Luciano Ramalho
 

Ähnlich wie Groovy Java Dinâmico (12)

Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Além do java
Além do javaAlém do java
Além do java
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
 
Não é Feitiçaria, é Tecnologia
Não é Feitiçaria, é TecnologiaNão é Feitiçaria, é Tecnologia
Não é Feitiçaria, é Tecnologia
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidades
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013Apresentação ruby - IEI 2013
Apresentação ruby - IEI 2013
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOP
 
JavaScript agora é sério (FISL 2011)
JavaScript agora é sério (FISL 2011)JavaScript agora é sério (FISL 2011)
JavaScript agora é sério (FISL 2011)
 
Paradigmas do Ruby
Paradigmas do RubyParadigmas do Ruby
Paradigmas do Ruby
 

Groovy Java Dinâmico

  • 1. Groovy & Grails Arian Pasquali quarta-feira, 12 de outubro de 11
  • 2. eu Arian Pasquali 24 anos Formado em Sistemas de Informação Java, Objective-C, Flex, Groovy SCJP, SCJA, ACE 6 anos de Java quarta-feira, 12 de outubro de 11
  • 3. Orientação a Objetos Plataforma Multi-plataforma Garbage Collector Interplanetária Máquina virtual Java Community Process Just-in-time compiler quarta-feira, 12 de outubro de 11
  • 4. Java é fácil? quarta-feira, 12 de outubro de 11
  • 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. 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 é lenta quarta-feira, 12 de outubro de 11
  • 7. linguagens dinâmicas ganhando popularidade • Python • Ruby quarta-feira, 12 de outubro de 11
  • 8. Java como plataforma • Máquina virtual • Gestão de ambiente • Segurança • Performance • Mão de obra quarta-feira, 12 de outubro de 11
  • 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
  • 11. quarta-feira, 12 de outubro de 11
  • 12. Groovy extends Java é Java com super poderes quarta-feira, 12 de outubro de 11
  • 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. Curva de aprendizado • Baseado no Java • Baixa curva de aprendizado para desenvolvedores Java/ Ruby/Python • Integração transparente com qualquer código Java existente quarta-feira, 12 de outubro de 11
  • 16. Compilado file.groovy file.java bytecode bytecode The Java Virtual Machine Compilada. Não interpretada. quarta-feira, 12 de outubro de 11
  • 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. 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. Se você já programa em Java Você já programa em Groovy quarta-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 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 • () é opcional quarta-feira, 12 de outubro de 11
  • 22. Lists e Maps old way groovy way quarta-feira, 12 de outubro de 11
  • 23. Lists e Maps quarta-feira, 12 de outubro de 11
  • 24. Lists e Maps quarta-feira, 12 de outubro de 11
  • 25. Lists e Maps quarta-feira, 12 de outubro de 11
  • 27. Clojures {Bloco de código ou ponteiro para um método} quarta-feira, 12 de outubro de 11
  • 30. Elvis Operator old way groovy way quarta-feira, 12 de outubro de 11
  • 31. Safe Navigation Operator old way groovy way quarta-feira, 12 de outubro de 11
  • 32. Meta-Programming {capacidade de adicionar comportamento em tempo de execução} quarta-feira, 12 de outubro de 11
  • 33. Meta-Programming {é possível interceptar chamada de métodos e simular AOP} quarta-feira, 12 de outubro de 11
  • 34. Meta-Programming mas e se o método não existir? quarta-feira, 12 de outubro de 11
  • 35. Vamos aprender Java? http://www.flickr.com/photos/oskay/472097903/ quarta-feira, 12 de outubro de 11
  • 36. Instalação • Download JDK • Download Groovy binaries • http://groovy.codehaus.org/Download quarta-feira, 12 de outubro de 11
  • 37. Instalação • JAVA_HOME (Java 1.5 ou >) • GROOVY_HOME • set PATH • para testar digite no terminal groovy -v quarta-feira, 12 de outubro de 11
  • 38. Instalação • groovysh - comand line client • groovyconsole - gui client quarta-feira, 12 de outubro de 11
  • 40. Java Beans mais simples quarta-feira, 12 de outubro de 11
  • 41. quarta-feira, 12 de outubro de 11
  • 42. quarta-feira, 12 de outubro de 11
  • 43. Java Beans quarta-feira, 12 de outubro de 11
  • 44. Java Beans Nos casos mais típicos, normalmente a nossa classe ficaria assim quarta-feira, 12 de outubro de 11
  • 45. Leitura de arquivos quarta-feira, 12 de outubro de 11
  • 46. Lendo arquivos em Java quarta-feira, 12 de outubro de 11
  • 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. Lendo arquivos em Groovy quarta-feira, 12 de outubro de 11
  • 49. def file = new File("textfile.txt") file.eachLine { line -> println line } quarta-feira, 12 de outubro de 11
  • 51. Lendo um diretório quarta-feira, 12 de outubro de 11
  • 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 • Web quarta-feira, 12 de outubro de 11
  • 53. Então você quer usar groovy? 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. 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. 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 - jUnit quarta-feira, 12 de outubro de 11
  • 60. Grails stack quarta-feira, 12 de outubro de 11
  • 62. um projeto grails quarta-feira, 12 de outubro de 11
  • 63. quarta-feira, 12 de outubro de 11
  • 65. MVC • Model • View • Controller quarta-feira, 12 de outubro de 11
  • 66. Domain model validação eventos quarta-feira, 12 de outubro de 11
  • 67. CRUD quarta-feira, 12 de outubro de 11
  • 70. Controllers • Responsável por tratar os requests • Renderiza ou prepara a resposta quarta-feira, 12 de outubro de 11
  • 71. Controllers • Negaciação de conteúdo • Facilita construção de APIs REST quarta-feira, 12 de outubro de 11
  • 72. Services • Não coloque regras de negócio dentro de Controllers. Use Services • Transacionais por default quarta-feira, 12 de outubro de 11
  • 73. + de 680 Plugins quarta-feira, 12 de outubro de 11
  • 74. Ferramentas • Eclipse (SpringSource) • Netbeans • InteliJIDEA (melhor opção, porém é paga) • Editor de textos : TextMate, vim, etc quarta-feira, 12 de outubro de 11
  • 75. duvidas ? quarta-feira, 12 de outubro de 11
  • 76. arianpasquali.com about.me/arianpasquali arian.pasquali@informant.com.br quarta-feira, 12 de outubro de 11