JGGUG
Grails/Groovy         3




   NTT


          2009/9/25
NTT

                        Gr

               Grails

            JavaWorld Groovy                               (2004)
...
Groovy




           Groovy
                                    Java




                                                ...
(                 )
                                   (               ,      )




                            (         ...
Groovy
               X Y                   Z
               Z(Y(X))   …                        ←
               X.Y().Z()...
each/reverseEach/                           collect
            eachWithIndex/                              find/findAll
   ...
:
                                                          ArrayList
              println([1,2,3].class)
             =>...
:

                                             LinkedHashMap
            println([a:1,b:2,c:3].getClass())
            =>...
map.get(key)
                   map.put(key,             Java
                           value)


                   map[’...
,     ,
              class City                    cities


            class City {
              def name;
            ...
(                  )


                                     /


                ≒ Java

                     Closure
     ...
{-> ..}

                                                           (   )
                {-> println ”ABC” }
            ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2
     ...
:
             Script.groovy result = 1
                          10.times {
                            result *= 2      ...
:
    import javax.swing.*
    import java.awt.event.*

    f = new JFrame(size:[200, 100])
    title = "hello"
    b = ne...
ExpandoMetaClass
                    (                   )




                                                           ...
?




Slide# 16   JGGUG   Grails/Groovy   3   / 2009.09.25
?




Slide# 16   JGGUG   Grails/Groovy   3   / 2009.09.25
:                ==~ =~
                 String.replaceAll(  )
             :/     /


                                 ( ...
:
            String#replaceAll(String, Closure)
     "abcDefGhi".replaceAll(/([a-z])([A-Z])/) {fullMatch, g1, g2->
      ...
final




                      :



Slide# 19   JGGUG          Grails/Groovy   3   / 2009.09.25
: java.lang.String
                                         final


                    String

                    String
...
tr                   (                                    )
                  String#tr()
     String.metaClass.tr = {from...
:
                          java.lang.String




Slide# 22   JGGUG   Grails/Groovy   3   / 2009.09.25
'ls'.metaClass.exec = { new File(".").eachFile{println it} }
       'pwd'.metaClass.exec = { println new File(".").absolut...
Groovy                                  (              1)
                    groovyc
                                    ...
Groovy                               (      2)
               GDK
                DGM      DefaultGroovyMethods.java(
    ...
Groovy                              (             )
                    Grape(Groovy 1.6-,)
                              ...
Groovy




                DB       (GroovySql)
                                      (SimpleTemplate)
                   ...
Upcoming SlideShare
Loading in...5
×

Jggug Nagoya 20090925 Groovy

1,793

Published on

Groovy seminar hands-out

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

No Downloads
Views
Total Views
1,793
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
46
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Jggug Nagoya 20090925 Groovy

  1. 1. JGGUG Grails/Groovy 3 NTT 2009/9/25
  2. 2. NTT Gr Grails JavaWorld Groovy (2004) Twitter: uehaj Slide# 2 JGGUG Grails/Groovy 3 / 2009.09.25
  3. 3. Groovy Groovy Java (Groovy Web Console) 3 Slide# JGGUG Grails/Groovy 3 / 2009.09.25
  4. 4. ( ) ( , ) ( ) ( ) Slide# 4 JGGUG Grails/Groovy 3 / 2009.09.25
  5. 5. Groovy X Y Z Z(Y(X)) … ← X.Y().Z() … → : Groovy × println(each(sort(grep({it%2=0},[1,3,2])))) ○ [1,3,2].grep{it%2==0}.sort().each{println it} Slide# 5 JGGUG Grails/Groovy 3 / 2009.09.25
  6. 6. each/reverseEach/ collect eachWithIndex/ find/findAll grep/max/min reverse/push/pop/join any/every contains/in/groupBy flatten/intersect/disjoint each/keySet/entrySet/ values combinations/ transpose Slide# 6 JGGUG Grails/Groovy 3 / 2009.09.25
  7. 7. : ArrayList  println([1,2,3].class) =>java.util.ArrayList as :  [1,2,3] as Set                   // Set  [1,2,3] as LinkedList        // LinkedList  [1,2,3].asImmutable()       // Slide# 7 JGGUG Grails/Groovy 3 / 2009.09.25
  8. 8. : LinkedHashMap println([a:1,b:2,c:3].getClass()) =>java.util.LinkedHashMap Map m = [a:1, b:2, c:3]  assert m.get(’a’) == 1   //  assert m[’a’] == 1       //  assert m.a == 1          // Slide# 8 JGGUG Grails/Groovy 3 / 2009.09.25
  9. 9. map.get(key) map.put(key, Java value) map[’a’] map[key]          map.a map.”$key” GString Slide# 9 JGGUG Grails/Groovy 3 / 2009.09.25
  10. 10. , , class City cities class City { def name; def country; long population; } cities = [ new City(" "," ",35676000), new City(" "," ",19040000), new City(" = "," : Slide# 10 JGGUG Grails/Groovy 3 / 2009.09.25
  11. 11. ( ) / ≒ Java Closure println {->}.class ==> groovy.lang.Closure Slide# 11 JGGUG Grails/Groovy 3 / 2009.09.25
  12. 12. {-> ..} ( ) {-> println ”ABC” } ==> .call() {->println ”ABC” }.call() ==> ABC Slide# 12 JGGUG Grails/Groovy 3 / 2009.09.25
  13. 13. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script result = 1 10.times { result *= 2 } assert result == Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  14. 14. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script result = 1 10.times { Integer(10) result *= 2 } assert result == Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  15. 15. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  16. 16. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  17. 17. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == } { result *= 2 } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  18. 18. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == Integer#times } { result *= 2 } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  19. 19. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == Integer#times } { (call) result *= 2 } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  20. 20. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == Integer#times } { (call) (call) result *= 2 } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  21. 21. : Script.groovy result = 1 10.times {   result *= 2 } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == Integer#times } { (call) (call) result *= 2 (call) } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  22. 22. : Script.groovy result = 1 10.times {   result *= 2 (result) } assert result == 1024 Script Integer (10) result = 1 10.times { Integer(10) def result *= 2 times(Closure c){ } c.call() 10 assert result == Integer#times } { (call) (call) result *= 2 (call) } Slide# 13 JGGUG Grails/Groovy 3 / 2009.09.25
  23. 23. : import javax.swing.* import java.awt.event.* f = new JFrame(size:[200, 100]) title = "hello" b = new JButton(title) b.addActionListener({println title} as ActionListener) f.contentPane.add(b) f.show() as 1 implements key, value Slide# 14 JGGUG Grails/Groovy 3 / 2009.09.25
  24. 24. ExpandoMetaClass ( ) DSL : Slide# 15 JGGUG Grails/Groovy 3 / 2009.09.25
  25. 25. ? Slide# 16 JGGUG Grails/Groovy 3 / 2009.09.25
  26. 26. ? Slide# 16 JGGUG Grails/Groovy 3 / 2009.09.25
  27. 27. : ==~ =~ String.replaceAll( ) :/ / ( ) GString $ ”ABCDE” ’ABCDE’ /ABCDE/ Slide# 17 JGGUG Grails/Groovy 3 / 2009.09.25
  28. 28. : String#replaceAll(String, Closure) "abcDefGhi".replaceAll(/([a-z])([A-Z])/) {fullMatch, g1, g2-> g1 + '_' + g2.toLowerCase() } ==> "abc_def_ghi" Java String#replaceAll(String, String) OK($1,$2 ) Slide# 18 JGGUG Grails/Groovy 3 / 2009.09.25
  29. 29. final : Slide# 19 JGGUG Grails/Groovy 3 / 2009.09.25
  30. 30. : java.lang.String final String String Slide# 20 JGGUG Grails/Groovy 3 / 2009.09.25
  31. 31. tr ( ) String#tr() String.metaClass.tr = {from,to ->   def result = delegate   from.eachWithIndex{it,idx->     result = result.replaceAll(it, to.getAt(idx))   }   result } println "abcdef 123".tr("abc ","xyz ") //==> "xyzdef 123" Slide# 21 JGGUG Grails/Groovy 3 / 2009.09.25
  32. 32. : java.lang.String Slide# 22 JGGUG Grails/Groovy 3 / 2009.09.25
  33. 33. 'ls'.metaClass.exec = { new File(".").eachFile{println it} } 'pwd'.metaClass.exec = { println new File(".").absolutePath } 'env'.metaClass.exec = { System.getenv().each{k,v->println "$k=$v" } } System.in.eachLine {   it.intern().exec() } → : String#intern() Slide# 23 JGGUG Grails/Groovy 3 / 2009.09.25
  34. 34. Groovy ( 1) groovyc Groovy groovyc jad( ) groovyc jad Java Groovy 1.6.x Slide# 24 JGGUG Grails/Groovy 3 / 2009.09.25
  35. 35. Groovy ( 2) GDK DGM DefaultGroovyMethods.java( DefaultGroovyStaticMethods) <GROOVY_SRC>/src/main/org/codehaus/groovy/ runtime/DefaultGroovyMethods.java Groovy ant -Dskiptests=true GROOVY_HOME <GROOVY_SRC>/target/install Slide# 25 JGGUG Grails/Groovy 3 / 2009.09.25
  36. 36. Groovy ( ) Grape(Groovy 1.6-,) Jar ( ) import @Grab(‘group:mod:ver’) (1.7) Power Assert(1.7beta1-) assert a=5; assert a+Math.max(a+1, 5)+2==12 ==> Assertion failed: assert a+Math.max(a+1, 5)+2==12 || | || | | |11 6 |6 | false 5 5 13 at Script1.run(Script1.groovy:2) Slide# 26 JGGUG Grails/Groovy 3 / 2009.09.25
  37. 37. Groovy DB (GroovySql) (SimpleTemplate) XML (XmlSlurper, XmlParser) Slide# 27 JGGUG Grails/Groovy 3 / 2009.09.25
  1. A particular slide catching your eye?

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

×