• Like
  • Save
Groovy & Grails
Upcoming SlideShare
Loading in...5
×
 

Groovy & Grails

on

  • 708 views

 

Statistics

Views

Total Views
708
Views on SlideShare
708
Embed Views
0

Actions

Likes
1
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Groovy & Grails Groovy & Grails Presentation Transcript

    • Groovy & Grails Arian Pasqualiquarta-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 Javaquarta-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 compilerquarta-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 é lentaquarta-feira, 12 de outubro de 11
    • linguagens dinâmicas ganhando popularidade • Python • Rubyquarta-feira, 12 de outubro de 11
    • Java como plataforma • Máquina virtual • Gestão de ambiente • Segurança • Performance • Mão de obraquarta-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 poderesquarta-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 existentequarta-feira, 12 de outubro de 11
    • Interoperabilidadequarta-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 Groovyquarta-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 • () é opcionalquarta-feira, 12 de outubro de 11
    • Lists e Maps old way groovy wayquarta-feira, 12 de outubro de 11
    • Lists e Mapsquarta-feira, 12 de outubro de 11
    • Lists e Mapsquarta-feira, 12 de outubro de 11
    • Lists e Mapsquarta-feira, 12 de outubro de 11
    • GStringquarta-feira, 12 de outubro de 11
    • Clojures {Bloco de código ou ponteiro para um método}quarta-feira, 12 de outubro de 11
    • Operadoresquarta-feira, 12 de outubro de 11
    • Operator overloadingquarta-feira, 12 de outubro de 11
    • Elvis Operator old way groovy wayquarta-feira, 12 de outubro de 11
    • Safe Navigation Operator old way groovy wayquarta-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/Downloadquarta-feira, 12 de outubro de 11
    • 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
    • Instalação • groovysh - comand line client • groovyconsole - gui clientquarta-feira, 12 de outubro de 11
    • Groovy Consolequarta-feira, 12 de outubro de 11
    • Java Beans mais simplesquarta-feira, 12 de outubro de 11
    • quarta-feira, 12 de outubro de 11
    • quarta-feira, 12 de outubro de 11
    • Java Beansquarta-feira, 12 de outubro de 11
    • Java Beans Nos casos mais típicos, normalmente a nossa classe ficaria assimquarta-feira, 12 de outubro de 11
    • Leitura de arquivosquarta-feira, 12 de outubro de 11
    • Lendo arquivos em Javaquarta-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 Groovyquarta-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 arquivosquarta-feira, 12 de outubro de 11
    • Lendo um diretórioquarta-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 • Webquarta-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 - jUnitquarta-feira, 12 de outubro de 11
    • Grails stackquarta-feira, 12 de outubro de 11
    • grails create-app udescquarta-feira, 12 de outubro de 11
    • um projeto grailsquarta-feira, 12 de outubro de 11
    • quarta-feira, 12 de outubro de 11
    • Configuração por ambientequarta-feira, 12 de outubro de 11
    • MVC • Model • View • Controllerquarta-feira, 12 de outubro de 11
    • Domain model validação eventosquarta-feira, 12 de outubro de 11
    • CRUDquarta-feira, 12 de outubro de 11
    • Queryingquarta-feira, 12 de outubro de 11
    • Dynamic Findersquarta-feira, 12 de outubro de 11
    • Controllers • Responsável por tratar os requests • Renderiza ou prepara a respostaquarta-feira, 12 de outubro de 11
    • Controllers • Negaciação de conteúdo • Facilita construção de APIs RESTquarta-feira, 12 de outubro de 11
    • Services • Não coloque regras de negócio dentro de Controllers. Use Services • Transacionais por defaultquarta-feira, 12 de outubro de 11
    • + de 680 Pluginsquarta-feira, 12 de outubro de 11
    • Ferramentas • Eclipse (SpringSource) • Netbeans • InteliJIDEA (melhor opção, porém é paga) • Editor de textos : TextMate, vim, etcquarta-feira, 12 de outubro de 11
    • duvidas ?quarta-feira, 12 de outubro de 11
    • arianpasquali.com about.me/arianpasquali arian.pasquali@informant.com.brquarta-feira, 12 de outubro de 11