Groovy & grails
Upcoming SlideShare
Loading in...5
×
 

Groovy & grails

on

  • 1,346 views

Introdução a Groovy e Grails

Introdução a Groovy e Grails

Statistics

Views

Total Views
1,346
Views on SlideShare
1,137
Embed Views
209

Actions

Likes
0
Downloads
17
Comments
0

3 Embeds 209

http://arianpasquali.com 191
http://codetalk.com.br 14
http://posterous.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

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