GROOVY UP YOUR CODE
                                             Paulo Traça
                                             ...
Groovy Up Your Code




                      Objectivos da Sessão

            Conhecer as principais potencialidade dos ...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                           O que é o Groovy ?

                                          “JAVA ON ...
Groovy Up Your Code




                             O que é Groovy
            Linguagem ágil para JVM
        ●



     ...
Groovy Up Your Code




                               O que é Groovy

            Suporte para DSL's (Domain Specific Lan...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                      Porque investir no Groovy ?

               Proliferação de linguagens de sc...
Groovy Up Your Code




            O que torna o Groovy diferente ?
            JAVA / JVM compatível
        ●



      ...
Groovy Up Your Code




            O que torna o Groovy diferente ?
            All the JAVA Good Stuff
        ●



    ...
Groovy Up Your Code




                      The Landscape of JVM Languages
 Feature rich                                ...
Groovy Up Your Code


   public class Filter {

          public static void main (String [] args) {

                    ...
Groovy Up Your Code




    Sample Code Groovy
    def list = [“Neeta”, “Rod”, “Eric”, “Missy”]

    def shorts = list.fin...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                       Características Básicas
            Tipos dinâmicos e tipos estáticos (opci...
Groovy Up Your Code




                             Características Básicas
          Tipos dinâmicos e tipos estáticos (...
Groovy Up Your Code




                 Características Básicas(cont.)
         Ranges
               def alphabet = 'a'....
Groovy Up Your Code




                 Características Básicas(cont.)
          Closures

                def simponsMap...
Groovy Up Your Code




                 Características Básicas(cont.)
            Suporte para expressões regulares na l...
Groovy Up Your Code




                    Características Básicas(cont.)
         Groovy SDK - métodos extras ao JDK

  ...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                        Características Avançadas
               Suporte nativo para estruturas hi...
Groovy Up Your Code




           Características Avançadas (Cont.)
           Suporte para estruturas hierárquicas
     ...
Groovy Up Your Code




         Características Avançadas (Cont.)
               Navegação segura, com o operador (?)
   ...
Groovy Up Your Code




         Características Avançadas (Cont.)
        Parâmetros com valores default
    ●




      ...
Groovy Up Your Code




           Características Avançadas (Cont.)
           Currying
       ●




                  de...
Groovy Up Your Code




                          DEMO
                      “Let's get groovy”
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                                   The Goodies
           Grails –Web framework
       ●



      ...
Groovy Up Your Code




                                  The Goodies
           Groovy Jabber-RPC
       ●



           ...
Groovy Up Your Code




                                    Agenda
          O que é o Groovy ?
      ●



          Será ...
Groovy Up Your Code




                                Conclusões
           Óptima tool para programadores Java
       ●...
Groovy Up Your Code




                                   Referências
           Web
       ●



               http://gr...
Groovy Up Your Code




                      Q&A
Upcoming SlideShare
Loading in...5
×

Groovy Up Your Code

2,085

Published on

Logical Software presentatio at Sapo CodeBits 2007

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,085
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
61
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Groovy Up Your Code

  1. 1. GROOVY UP YOUR CODE Paulo Traça CTO paulo.traca@logical-software.com LOGICAL SOFTWARE Human Capital | Enterprise Java | Research Rua Gago Coutinho nº4 B 2675-509 Odivelas T +351 21 931 50 33 F +351 21 931 82 52 E info@logical-software.com Web www.logical-software.com
  2. 2. Groovy Up Your Code Objectivos da Sessão Conhecer as principais potencialidade dos Groovy ● Perceber em que o Groovy pode ser útil ● “Be more Groovy” :-) ●
  3. 3. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● The Goodies ● Demos ● Conclusão ● Referências ● Q&A ●
  4. 4. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  5. 5. Groovy Up Your Code O que é o Groovy ? “JAVA ON STEROIDS ...” e não é ilegal... “ Groovy is like a super version of Java. It can leverage Java's enterprise capabilities but also has cool productivity features like closures, builders and dynamic typing. If you are a developer, tester or script guru, you have to love Groovy.”
  6. 6. Groovy Up Your Code O que é Groovy Linguagem ágil para JVM ● Sintaxe idêntica Java, curva da aprendizagem baixa para prog. ● Java Linguagem dinâmica, Orientada a objectos ● Características da linguagem derivadas do Ruby, Python e ● SmallTalk JCP 241 ●
  7. 7. Groovy Up Your Code O que é Groovy Suporte para DSL's (Domain Specific Languages) ● Suporte para Shell/ Builds scripts [cat | grep ... / Ant DSL] ● Unit Testing and Mock Object “out of the Box” ● Totalmente compatível com JAVA objects e bibliotecas ● Compila directamente para JVM bytecode ●
  8. 8. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  9. 9. Groovy Up Your Code Porque investir no Groovy ? Proliferação de linguagens de scripting ● “The c00l new guy” - Ruby / RoR ● “The c00l new guy – Take 2” JRuby ● Python, Smalltalk ... { fill in with your favorite scripting language } ●
  10. 10. Groovy Up Your Code O que torna o Groovy diferente ? JAVA / JVM compatível ● Se sabes JAVA, praticamente sabes Groovy ● Não obriga um novo investimento para aprender uma nova linguagem / ● nova sintaxe Tira partido de toda infra-estrutura JEE, com +10 anos de maturidade ● Deploy directo para qualquer container JEE ● Reutiliza todos o investimento feito a aprender um conjunto de tools em ● volta da plataforma JAVA [Sprint / Hibernate / Maven / Ant / JPA..] Permite “Mix and Match” entre código JAVA e código Groovy ●
  11. 11. Groovy Up Your Code O que torna o Groovy diferente ? All the JAVA Good Stuff ● Threading, Security, debugging ● Annotations (ver 1.1-betas/RC*) ● Tipos estáticos e tipos dinâmicos “Duck Typing” ●
  12. 12. Groovy Up Your Code The Landscape of JVM Languages Feature rich Optional types other Groovy other Dynamic feature call for dynamic types Java bytecode calls for static type other other Java Friendly
  13. 13. Groovy Up Your Code public class Filter { public static void main (String [] args) { Sample Code Java List list = new ArrayList(); list.add(“Rod”); list.add(“Neta”); list.add(“Eric”); list.add(“Missy”); Filter filter = newFilter(); List shorts = filter.filterLongerThan(list, 4); System.out.println(shorts.size()); Iterator it = shorts.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } //main public List filterLonger(List list, int lenght) { List result = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()) { String item = it.next(); if (item.length() <= length) {result.add(item);} } } //filterLonger } //Filter
  14. 14. Groovy Up Your Code Sample Code Groovy def list = [“Neeta”, “Rod”, “Eric”, “Missy”] def shorts = list.findAll { it.size () <= 4 } println shorts.size() shorts.each { println it }
  15. 15. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  16. 16. Groovy Up Your Code Características Básicas Tipos dinâmicos e tipos estáticos (opcionais) ● Sintaxe nativa para listas e mapas ● Ranges ● Closures ● Overloading de operadores ● Suporte para expressões regulares na linguagem ● Groovy SDK ●
  17. 17. Groovy Up Your Code Características Básicas Tipos dinâmicos e tipos estáticos (opcionais) int myVar = 3 def myVar = “Welcome to CodeBits” Sintaxe nativa para listas e mapas def myList = [“Code”, “Bits” , 2007 ] printf myList[0] -- Code def myMap = [“CodeBits2007”: 400, “CodeBits:2008”:1100, “CodeBits:2008”:2000] printf myMap[“CodeBits2007”] ou println myMap.CodeBits2007 -- 400
  18. 18. Groovy Up Your Code Características Básicas(cont.) Ranges def alphabet = 'a'..'z' for (letter in alphabet) { print letter + ' ' } -- a b c d e f g h i j k l m n o p q r s t u v w x y z ----------------------------------------------------- for (count in 1..10) { print count + ' ' }
  19. 19. Groovy Up Your Code Características Básicas(cont.) Closures def simponsMap = [quot;Homerquot;:quot;donutsquot;, quot;Margequot;:quot;Big Blue Hairquot;, quot;Lisaquot;:quot;the Saxquot;] simponsMap.each { name, what -> printf quot;$name Simpon likes $what.nquot;} -- Homer Simpon likes donuts. -- Marge Simpon likes Big Blue Hair. -- Lisa Simpon likes The Sax. Overloading de operadores def list = [1,2,3,4,5,6] + [7,8,9,10] list.each { print it } -- 12345678910
  20. 20. Groovy Up Your Code Características Básicas(cont.) Suporte para expressões regulares na linguagem if ( “name” ==~ “na.*”) { println “It a Match!”} // ----------------------------------------------------------- def regexp = /Paulo.*/ def name1 = quot;PauloSilvaquot; def name2 = quot;JoseSilvaquot; def isFirstNamePaulo(name, reg) { if (name ==~ reg) { println quot;matchnquot;} } isFirstNamePaulo(name1, regexp) isFirstNamePaulo(name2, regexp)
  21. 21. Groovy Up Your Code Características Básicas(cont.) Groovy SDK - métodos extras ao JDK Manipulação de string ● center(), contains(), count(), each(), padLeft(), padRight(), getAt(), etc ● Manipulação de colecções ● reverseEach(), count(), collect(), join(),sort(), max(), min(), toList(), etc ● File ● EachFile(), withPrintWriter(), write(), getText(), etc ●
  22. 22. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  23. 23. Groovy Up Your Code Características Avançadas Suporte nativo para estruturas hierárquicas ● XML ● HTML ● ANT ● SWING ● Navegação segura ● Parâmetros com valores default ● Currying ●
  24. 24. Groovy Up Your Code Características Avançadas (Cont.) Suporte para estruturas hierárquicas ● Builders ● NodeBuilder ● DomBuilder ● SwingBuilder ● AntBuilder ● ... ● Relativamente fácil acrescentar novos ●
  25. 25. Groovy Up Your Code Características Avançadas (Cont.) Navegação segura, com o operador (?) ● def simpson = [quot;Homerquot;: [quot;donutsquot;:20, quot;bearquot;:50, quot;cakesquot;:40]] println simpson.Homer.bear -- 50 println simpson.marge.bear -- NullPointerException println simpson?.marge?.bear -- null
  26. 26. Groovy Up Your Code Características Avançadas (Cont.) Parâmetros com valores default ● def getFullName(firstName = quot;Josequot;, lastName= quot;Silvaquot;) { return firstName + quot; quot; + lastName } getFullName() -- Jose Silva getFullName(1,2) -- 1 2 def getFullName(String firstName = quot;Josequot;, String lastName= quot;Silvaquot;) { .. }
  27. 27. Groovy Up Your Code Características Avançadas (Cont.) Currying ● def c1 = {name, age, location -> println quot;Hi, I'm $name, i have $age and i'm from $location.quot;} ....... def c2 = c1.curry(quot;Pauloquot;) ....... def c3 = c2.curry(25) println c3(quot;Portugalquot;) -- Hi, I'm Paulo, i have 25 and i'm from Portugal.
  28. 28. Groovy Up Your Code DEMO “Let's get groovy”
  29. 29. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  30. 30. Groovy Up Your Code The Goodies Grails –Web framework ● Integração com Web Service ● GroovySoap (ver 1.0 ) ● GroovyWS (ver 1.1-RC*) ● XML / RPC ● Unit Testing Integrado ● GroovyTestCase, GroovyMock ● Shell scripting ● Existem api disponíveis para pipes | cat | grep ... ● Groosh module ●
  31. 31. Groovy Up Your Code The Goodies Groovy Jabber-RPC ● Windows Active X ou COM [Scriptom 2.0 Beta] ● Programar e controlar excel / office ... Suporte para SQL com GSQL Module ● Muito mais ... ● Tooling ● Eclipse ● Intellij IDEA ●
  32. 32. Groovy Up Your Code Agenda O que é o Groovy ? ● Será que preciso de mais uma linguagem de scripting ? ● Características Básicas ● Características Avançadas ● Demos ● The Goodies ● Conclusão ● Referências ● Q&A ●
  33. 33. Groovy Up Your Code Conclusões Óptima tool para programadores Java ● Pronta para projectos não “mission critical” ● massa critica ● Opção ao Ruby / Jruby ● Algumas partes ainda estão em beta, e falta alguma documentação ● “Lots of Rope to Hang Yourself” ●
  34. 34. Groovy Up Your Code Referências Web ● http://groovy.codehaus.org ● http://grails.org ● Books ● Groovy in Action- Manning 2007 ● Getting Started with Grial – InfoQ by Jason Rudolph ● Groovy Recipes – Pragmatic Bookshelf ●
  35. 35. Groovy Up Your Code Q&A
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×