SlideShare a Scribd company logo
1 of 63
Groovy
1.8
  Groovy
Slide # 2   JGGUG G*Workshop 17th / 2011.6.17
http://d.hatena.ne.jp/uehaj/




Slide # 3   JGGUG G*Workshop 17th / 2011.6.17
Slide # 4   JGGUG G*Workshop 17th / 2011.6.17
Slide # 5   JGGUG G*Workshop 17th / 2011.6.17
April 28, 2011


Slide # 6   JGGUG G*Workshop 17th / 2011.6.17
April 28, 2011


Slide # 6   JGGUG G*Workshop 17th / 2011.6.17
Slide #   JGGUG G*Workshop 17th / 2011.6.17
$ cat input.txt
            That that is is that that is
            not is not is that it it is

            $ java WordCount input.txt
            1: [That]
            2: [not]
            2: [it]
            4: [that]
            6: [is]
Slide # 8          JGGUG G*Workshop 17th / 2011.6.17
Java                WordCount:48
                                                       Set<Map.Entry<String, Integer>> entrySet =
import   java.util.Comparator;                    map.entrySet();
import   java.util.HashMap;                            Object[] list = entrySet.toArray();
import   java.util.Map;                                 Comparator comp = new Comparator(){
import   java.util.Set;                                  public int compare(Object o1, Object o2)
import   java.util.List;                          {
import   java.util.Arrays;                                 Map.Entry<String, Integer> e1 =
import   java.io.FileReader;                      (Map.Entry<String, Integer>) o1;
import   java.io.BufferedReader;                           Map.Entry<String, Integer> e2 =
import   java.io.FileNotFoundException;           (Map.Entry<String, Integer>) o2;
import   java.io.IOException;                               return e1.getValue() - e2.getValue();
                                                          }
public class WordCount {                                };
  @SuppressWarnings(value = "unchecked")                Arrays.sort(list, comp);
  public static void main(String[] args) {              for (Object it: list) {
    FileReader fis = null;                                Map.Entry<String, Integer> entry =
    BufferedReader br = null;                     (Map.Entry<String, Integer>)it;
    try {                                                 System.out.println(entry.getValue() + ":
      HashMap<String, Integer> map = new          ["+entry.getKey()+"]");
HashMap<String, Integer>();                             }
      fis = new FileReader(args[0]);                  }
      br = new BufferedReader(fis);                   catch (IOException e) {
      String line;                                      try {if (br != null)
      while ((line = br.readLine()) != null) {    br.close();}catch(IOException ioe){}
        for (String it: line.split("s+")) {           try {if (fis !=
          map.put(it, (map.get(it)==null) ? 1 :   null)fis.close();}catch(IOException ioe){}
(map.get(it) + 1));                                     e.printStackTrace();
        }                                             }
      }                                             }
                                                  }
Slide # 9                 JGGUG G*Workshop 17th / 2011.6.17
Groovy WordCount(9                              )
      def map = [:].withDefault{0}
     new File(args[0]).eachLine {
       it.split(/s+/).each {
         map[it]++
      }
     }
     map.entrySet().sort{it.value}.each {
       println "${it.value}: [${it.key}]"
     }




Slide # 10           JGGUG G*Workshop 17th / 2011.6.17
Java
                                                                       Set<Map.Entry<String, Integer>>
import   java.util.Comparator;                             entrySet = map.entrySet();
import   java.util.HashMap;                                            Object[] list = entrySet.toArray();
import   java.util.Map;                                                Comparator comp = new Comparator(){
import   java.util.Set;                                                    public int compare(Object o1,
import   java.util.List;                                   Object o2) {
import   java.util.Arrays;                                                     Map.Entry<String, Integer> e1
import   java.io.FileReader;                               = (Map.Entry<String, Integer>) o1;
import   java.io.BufferedReader;                                               Map.Entry<String, Integer> e2
import   java.io.FileNotFoundException;                    = (Map.Entry<String, Integer>) o2;
import   java.io.IOException;                                                  return e1.getValue() -
                                                           e2.getValue();
 public class WordCount {                                                  }
     @SuppressWarnings(value = "unchecked")                            };
     public static void main(String[] args) {                          Arrays.sort(list, comp);
         FileReader fis = null;                                        for (Object it: list) {
         BufferedReader br = null;                                         Map.Entry<String, Integer> entry =
         try {                                             (Map.Entry<String, Integer>)it;
             HashMap<String, Integer> map = new                            
 HashMap<String, Integer>();                               System.out.println(entry.getValue() + ":
             fis = new FileReader(args[0]);                ["+entry.getKey()+"]");
             br = new BufferedReader(fis);                             }
             String line;                                          }
             while ((line = br.readLine()) != null)                catch (IOException e) {
 {                                                                     try {if (br != null)
                 for (String it: line.split("s           br.close();}catch(IOException ioe){}
 +")) {                                                                try {if (fis !=
                     map.put(it,                           null)fis.close();}catch(IOException ioe){}
 (map.get(it)==null) ? 1 : (map.get(it) + 1));                         e.printStackTrace();
Slide # 11       }
                          JGGUG G*Workshop 17th       /            }
                                                          2011.6.17
             }                                                 }
Groovy WordCount(9                                        )
    def map = [:].withDefault{0} // value                    0        map
    new File(args[0]).eachLine { //
      it.split(/s+/).each {     //            /s+/
        map[it]++                //          map                  1
      }
    }
    map.entrySet().sort{it.value}.each {// map         entrySet   value
      println "${it.value}: [${it.key}]"//                key,value
    }




Slide # 12        JGGUG G*Workshop 17th / 2011.6.17
(→4
 def map = new File(args[0]).text.split(/s+/).countBy{it}
 map.entrySet().sort{it.value}.each {
   println "${it.value}: [${it.key}]"
 }




Slide # 13   JGGUG G*Workshop 17th / 2011.6.17
(→4
 def map = new File(args[0]).text.split(/s+/).countBy{it}
 map.entrySet().sort{it.value}.each {
   println "${it.value}: [${it.key}]"
 }




Slide # 13   JGGUG G*Workshop 17th / 2011.6.17
Slide # 14   JGGUG G*Workshop 17th / 2011.6.17
AST




                  Groovy 1.8.0




Slide # 15   JGGUG G*Workshop 17th / 2011.6.17
AST




             (curry)
                            Groovy 1.8.0




Slide # 15             JGGUG G*Workshop 17th / 2011.6.17
AST


                                                                        AST
                                                                 AST
                                                                  AST

             (curry)
                            Groovy 1.8.0




Slide # 15             JGGUG G*Workshop 17th / 2011.6.17
AST


                                                                        AST
                                                                 AST
                                                                  AST

             (curry)
                            Groovy 1.8.0




Slide # 15             JGGUG G*Workshop 17th / 2011.6.17
AST


                                                                         AST
                                                                  AST
                                                                   AST

             (curry)
                             Groovy 1.8.0



                                        (GEP3)
                       $/                            /$

Slide # 15              JGGUG G*Workshop 17th / 2011.6.17
AST


                                                                            AST
                                                                     AST
                                                                      AST

             (curry)
                             Groovy 1.8.0


                                                             GDK Groovy API
                                                            GPars
                                        (GEP3)
                                                              GSql
                       $/                            /$

Slide # 15              JGGUG G*Workshop 17th / 2011.6.17
AST


                                                                            AST
                                                                     AST
                                                                      AST

             (curry)
                             Groovy 1.8.0
                                                                                     jar

                                                                                  Grab
                                                                                  GroovyDoc



                                                             GDK Groovy API
                                                            GPars
                                        (GEP3)
                                                              GSql
                       $/                            /$

Slide # 15              JGGUG G*Workshop 17th / 2011.6.17
Groovy 1.8.0

                              (GEP3)
             $/                                       /$
             /
                                      /
Slide # 16        JGGUG G*Workshop 17th / 2011.6.17
println 1+1 //


             m1(a1).m2(a2).m3(a3)



             m1 a1   m2 a2        m3 a3




Slide # 17      JGGUG G*Workshop 17th / 2011.6.17
turn left then right p.p1
        // turn(left).then(right)
        paint wall with red, green and yellow
        // paint(wall).with(red, green).and(yellow)


        take 3 cookies 
        // take(3).cookies
        // take(3).getCookies()                                

        given { } when { } then { }
        // given({}).when({}).then({})
                                http://groovy.codehaus.org/Groovy+1.8+release+notes

Slide # 18     JGGUG G*Workshop 17th / 2011.6.17
$/…/$
                      ///…///(                       )
                                      /…/

        a=$/




        /$


                 $/

Slide # 19       JGGUG G*Workshop 17th / 2011.6.17
AST


                                                         AST

             Groovy 1.8.0                          AST


                                                   AST




Slide # 20     JGGUG G*Workshop 17th / 2011.6.17
Slide # 21   JGGUG G*Workshop 17th / 2011.6.17
Slide # 21   JGGUG G*Workshop 17th / 2011.6.17
Slide # 22   JGGUG G*Workshop 17th / 2011.6.17
Slide # 23   JGGUG G*Workshop 17th / 2011.6.17
import groovy.util.logging.Log
       @Log class MyClass {
         def invoke() {
           log.info 'info message'
           log.fine 'fine message'
         }
       }
Slide # 24                 JGGUG G*Workshop 17th / 2011.6.17
        http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
log.info <                  >



             <     >



       log.isLoggabl(java.util.logging.Level.INFO)
       ? log.info(< >) : null




Slide # 25                 JGGUG G*Workshop 17th / 2011.6.17
        http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
@TupleConstructor                                     class MyClass {
        class MyClass {                                          def a
           def a                                                 def b
           def b                                                 def c
           def c                                                 MyClass(a,b,c) {
         }                                                        this.a=a
        }                                                         this.b=b
                                                                  this.c=c
                                                                 }
                                                               }



Slide # 26                 JGGUG G*Workshop 17th / 2011.6.17
        http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
Slide # 27   JGGUG G*Workshop 17th / 2011.6.17
class MyClass {
       @WithReadLock def             () {         }
       @WithWriteLock def              () {       }
     }
Slide # 28    JGGUG G*Workshop 17th / 2011.6.17
class MyClass {
       @WithReadLock def             () {         }
       @WithWriteLock def              () {       }
     }
Slide # 28    JGGUG G*Workshop 17th / 2011.6.17
Slide # 29   JGGUG G*Workshop 17th / 2011.6.17
while (true) {
                                                                                ←
                                                                   println ”xx”
                                                                 }


       while (true) {
         if (java.lang.Thread.currentThread().isInterrupted()) {
           throw new InterruptedException('Execution
       Interrupted')
         }
         println ”xx”
       }
Slide # 30                 JGGUG G*Workshop 17th / 2011.6.17
        http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
foo.groovy:

       String a=”ABC”
       def bar() { println a }
       bar() // =>           a

                     class foo extends Script {
                       void run() {
                         String a = ”ABC”
                         bar()
                       }
                       def bar() { println a }
                     }
Slide # 31    JGGUG G*Workshop 17th / 2011.6.17
foo.groovy:

       @Field String a=”ABC”
       def bar() { println a }
       bar() ==> “ABC”

                     class foo extends Script {
                       String a = ”ABC”
                       void run() {
                         bar()
                       }
                       def bar() { println a }
                     }
Slide # 32    JGGUG G*Workshop 17th / 2011.6.17
Slide # 33   JGGUG G*Workshop 17th / 2011.6.17
Groovy 1.8.0



             (curry)
Slide # 34    JGGUG G*Workshop 17th / 2011.6.17
@ConditionalInterrupt({ counter > 100 })
    class Foo {
      int counter = 0
      void run() {
        while (true) {
          counter++ // 100
           }                // InterruptedException
         }
       }
Slide # 35     JGGUG G*Workshop 17th / 2011.6.17
//
    fib1 = { n ->
      n <= 1 ? n : fib1(n - 1) + fib1(n - 2)
    }
    //
    fib2 = { n ->
      n <= 1 ? n : fib2(n - 1) + fib2(n - 2)
    }.memoize()
Slide # 36   JGGUG G*Workshop 17th / 2011.6.17
…
                                                 …

                                                 …



Slide # 37   JGGUG G*Workshop 17th / 2011.6.17
Slide # 38   JGGUG G*Workshop 17th / 2011.6.17
Groovy 1.8.0

                         GDK Groovy API
                         GPars
                           GSql
                                              JSon

Slide #   JGGUG G*Workshop 17th / 2011.6.17
Slide # 40   JGGUG G*Workshop 17th / 2011.6.17
!

Slide # 40   JGGUG G*Workshop 17th / 2011.6.17
Java
          JSON

    ‘’’
    {"name": "John                                         HashMap
    Smith", "age": 33}
    ‘’’                                      JsonSlurper
                                             #parseText(
                                             )
   ‘’’                                                     ArrayList
   ["milk", "bread",
   "eggs"]
   ‘’’
          41



Slide #          JGGUG G*Workshop 17th / 2011.6.17
JSON
                                                bldr = new JsonBuilder()
                                                bldr {
                                                  num 1
                                                  ‘boolean’ true
                                                  arr([1,2,3])
      JSonBuilde                                }
      r

                                                JSON
                           toString()
                                                 ”””{"num":
          42                                     1,"boolean":true,"
                                                 arr":[1,2,3]}”””

Slide #            JGGUG G*Workshop 17th / 2011.6.17
Java                        bldr=new JsonBuilder()
                                                       bldr([ num:1,
                               HashMap                 ’boolean’:true, arr:
      JSonBuilde                                       [1,2,3] ])
      r

                                                       JSON
                             toString()
                                                       “””{"num":
          43                                           1,"boolean":true,"
                                                       arr":[1,2,3]}”””
Slide #            JGGUG G*Workshop 17th / 2011.6.17
JSON

                                               {
                                                   "num": 1,
      JSonBuilde       toPrettyString()            "’boolean’": true,
      r                                            "arr": [
                                                     1,
                                                     2,
                                                     3
                                                   ]
          44                                   }

Slide #            JGGUG G*Workshop 17th / 2011.6.17
Groovy 1.8.0




Slide # 45   JGGUG G*Workshop 17th / 2011.6.17
public class FibBench {
        static int fib(int n) {
          return n <= 1 ? n : fib(n - 1) + fib(n - 2);
        }
      }




                                               (ms)       Java   1

     Groovy 1.8.0                              2664                   2.9
     Groovy 1.7.10                           26702                   28.6
     Groovy++ 0.4.230_1.8.0                    1067                  1.14
     Java SE 1.6.0_22                               933               1.0
Slide # 46      JGGUG G*Workshop 17th / 2011.6.17
(   10       !)

                  1.8.0                                   int



                 Groovy++

             Groovy++                   (Java                   !)




                     Groovy 1.8

Slide # 47       JGGUG G*Workshop 17th / 2011.6.17
Groovy 1.8.0

                                           jar
                                           Grab
                                       GroovyDoc



Slide # 48   JGGUG G*Workshop 17th / 2011.6.17
$ java -jar /tool/groovy-1.8.0/target/
      install/embeddable/groovy-all-1.8.0.jar
      fib.groovy
      time=2542
      time=34




Slide # 49    JGGUG G*Workshop 17th / 2011.6.17
Slide # 50   JGGUG G*Workshop 17th / 2011.6.17
Slide # 51   JGGUG G*Workshop 17th / 2011.6.17
Slide # 52   JGGUG G*Workshop 17th / 2011.6.17

More Related Content

What's hot

Important java programs(collection+file)
Important java programs(collection+file)Important java programs(collection+file)
Important java programs(collection+file)Alok Kumar
 
Collections Framework
Collections FrameworkCollections Framework
Collections FrameworkSunil OS
 
모던자바의 역습
모던자바의 역습모던자바의 역습
모던자바의 역습DoHyun Jung
 
Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Trisha Gee
 
3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в JavaDEVTYPE
 
Functional Programming in Java 8 - Exploiting Lambdas
Functional Programming in Java 8 - Exploiting LambdasFunctional Programming in Java 8 - Exploiting Lambdas
Functional Programming in Java 8 - Exploiting LambdasGanesh Samarthyam
 
Java Generics for Dummies
Java Generics for DummiesJava Generics for Dummies
Java Generics for Dummiesknutmork
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code ExamplesNaresh Chintalcheru
 
Scala is java8.next()
Scala is java8.next()Scala is java8.next()
Scala is java8.next()daewon jeong
 
0003 es5 핵심 정리
0003 es5 핵심 정리0003 es5 핵심 정리
0003 es5 핵심 정리욱래 김
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingRichardWarburton
 

What's hot (20)

Java Class Design
Java Class DesignJava Class Design
Java Class Design
 
Important java programs(collection+file)
Important java programs(collection+file)Important java programs(collection+file)
Important java programs(collection+file)
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Java Concurrency by Example
Java Concurrency by ExampleJava Concurrency by Example
Java Concurrency by Example
 
모던자바의 역습
모던자바의 역습모던자바의 역습
모던자바의 역습
 
Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)
 
Sam wd programs
Sam wd programsSam wd programs
Sam wd programs
 
3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java
 
Functional Programming in Java 8 - Exploiting Lambdas
Functional Programming in Java 8 - Exploiting LambdasFunctional Programming in Java 8 - Exploiting Lambdas
Functional Programming in Java 8 - Exploiting Lambdas
 
Java Generics for Dummies
Java Generics for DummiesJava Generics for Dummies
Java Generics for Dummies
 
Unit testing concurrent code
Unit testing concurrent codeUnit testing concurrent code
Unit testing concurrent code
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Java programs
Java programsJava programs
Java programs
 
Java7 New Features and Code Examples
Java7 New Features and Code ExamplesJava7 New Features and Code Examples
Java7 New Features and Code Examples
 
Scala is java8.next()
Scala is java8.next()Scala is java8.next()
Scala is java8.next()
 
0003 es5 핵심 정리
0003 es5 핵심 정리0003 es5 핵심 정리
0003 es5 핵심 정리
 
Java 7 New Features
Java 7 New FeaturesJava 7 New Features
Java 7 New Features
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 

Viewers also liked

Spock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestSpock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestHoward Lewis Ship
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGuillaume Laforge
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build ToolShinya Mochida
 
Testing Web Applications with GEB
Testing Web Applications with GEBTesting Web Applications with GEB
Testing Web Applications with GEBHoward Lewis Ship
 
function list
function listfunction list
function listkyon mm
 
レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場Hiroyuki Ohnaka
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
G*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIIIG*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIIITakuma Watabiki
 
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」Kenji Hiranabe
 
うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-kyon mm
 
Groovier testing with Spock
Groovier testing with SpockGroovier testing with Spock
Groovier testing with SpockRobert Fletcher
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009guest4a266c
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Tomek Kaczanowski
 
The outlineoftestprocess
The outlineoftestprocessThe outlineoftestprocess
The outlineoftestprocesskyon mm
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発Takahisa Wada
 
Groovy, Transforming Language
Groovy, Transforming LanguageGroovy, Transforming Language
Groovy, Transforming LanguageUehara Junji
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Kenichi Kambara
 
Spock Framework
Spock FrameworkSpock Framework
Spock FrameworkIsmael
 

Viewers also liked (20)

Spock: A Highly Logical Way To Test
Spock: A Highly Logical Way To TestSpock: A Highly Logical Way To Test
Spock: A Highly Logical Way To Test
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
Testing Web Applications with GEB
Testing Web Applications with GEBTesting Web Applications with GEB
Testing Web Applications with GEB
 
function list
function listfunction list
function list
 
レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場レガシーコード改善はじめました 横浜道場
レガシーコード改善はじめました 横浜道場
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
G*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIIIG*におけるソフトウェアテスト・シーズンIII
G*におけるソフトウェアテスト・シーズンIII
 
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
 
うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-
 
Groovier testing with Spock
Groovier testing with SpockGroovier testing with Spock
Groovier testing with Spock
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
 
Spockを使おう!
Spockを使おう!Spockを使おう!
Spockを使おう!
 
The outlineoftestprocess
The outlineoftestprocessThe outlineoftestprocess
The outlineoftestprocess
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
 
Groovy, Transforming Language
Groovy, Transforming LanguageGroovy, Transforming Language
Groovy, Transforming Language
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
Hands on the Gradle
Hands on the GradleHands on the Gradle
Hands on the Gradle
 

Similar to Groovy 1.8の新機能について

GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDBartłomiej Kiełbasa
 
Fee managment system
Fee managment systemFee managment system
Fee managment systemfairy9912
 
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdf
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdfModify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdf
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdfarjuncorner565
 
Softshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developersSoftshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developersMatthew Farwell
 
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018Codemotion
 
6. Generics. Collections. Streams
6. Generics. Collections. Streams6. Generics. Collections. Streams
6. Generics. Collections. StreamsDEVTYPE
 
Write a program that reads a graph from a file and determines whether.docx
 Write a program that reads a graph from a file and determines whether.docx Write a program that reads a graph from a file and determines whether.docx
Write a program that reads a graph from a file and determines whether.docxajoy21
 
Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Seri Moth
 
What's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritageWhat's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritageDroidConTLV
 
A topology of memory leaks on the JVM
A topology of memory leaks on the JVMA topology of memory leaks on the JVM
A topology of memory leaks on the JVMRafael Winterhalter
 
Works Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay ChauhanWorks Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay ChauhanChinmay Chauhan
 
Data Types and Processing in ES6
Data Types and Processing in ES6Data Types and Processing in ES6
Data Types and Processing in ES6m0bz
 
Tips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationTips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationJoni
 

Similar to Groovy 1.8の新機能について (20)

GoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDDGoCracow #5 Bartlomiej klimczak - GoBDD
GoCracow #5 Bartlomiej klimczak - GoBDD
 
Fee managment system
Fee managment systemFee managment system
Fee managment system
 
Awt
AwtAwt
Awt
 
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdf
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdfModify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdf
Modify HuffmanTree.java and HuffmanNode.java to allow the user to se.pdf
 
Sbaw091006
Sbaw091006Sbaw091006
Sbaw091006
 
Softshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developersSoftshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developers
 
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018
 
Groovy intro for OUDL
Groovy intro for OUDLGroovy intro for OUDL
Groovy intro for OUDL
 
2014-11-01 01 Денис Нелюбин. О сортах кофе
2014-11-01 01 Денис Нелюбин. О сортах кофе2014-11-01 01 Денис Нелюбин. О сортах кофе
2014-11-01 01 Денис Нелюбин. О сортах кофе
 
6. Generics. Collections. Streams
6. Generics. Collections. Streams6. Generics. Collections. Streams
6. Generics. Collections. Streams
 
Collection and framework
Collection and frameworkCollection and framework
Collection and framework
 
Java programs
Java programsJava programs
Java programs
 
Write a program that reads a graph from a file and determines whether.docx
 Write a program that reads a graph from a file and determines whether.docx Write a program that reads a graph from a file and determines whether.docx
Write a program that reads a graph from a file and determines whether.docx
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
 
Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02Jsphp 110312161301-phpapp02
Jsphp 110312161301-phpapp02
 
What's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritageWhat's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritage
 
A topology of memory leaks on the JVM
A topology of memory leaks on the JVMA topology of memory leaks on the JVM
A topology of memory leaks on the JVM
 
Works Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay ChauhanWorks Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay Chauhan
 
Data Types and Processing in ES6
Data Types and Processing in ES6Data Types and Processing in ES6
Data Types and Processing in ES6
 
Tips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET ApplicationTips and Tricks of Developing .NET Application
Tips and Tricks of Developing .NET Application
 

More from Uehara Junji

Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUse JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUehara Junji
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGUehara Junji
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Uehara Junji
 
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Uehara Junji
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Uehara Junji
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Uehara Junji
 
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckIndy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckUehara Junji
 
enterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summerenterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 SummerUehara Junji
 
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1Uehara Junji
 
Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Uehara Junji
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Uehara Junji
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118Uehara Junji
 
New feature of Groovy2.0 G*Workshop
New feature of Groovy2.0 G*WorkshopNew feature of Groovy2.0 G*Workshop
New feature of Groovy2.0 G*WorkshopUehara Junji
 
G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901Uehara Junji
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsUehara Junji
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Uehara Junji
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development lifeUehara Junji
 
Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Uehara Junji
 
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Uehara Junji
 
GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.Uehara Junji
 

More from Uehara Junji (20)

Use JWT access-token on Grails REST API
Use JWT access-token on Grails REST APIUse JWT access-token on Grails REST API
Use JWT access-token on Grails REST API
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
Groovy Shell Scripting 2015
Groovy Shell Scripting 2015Groovy Shell Scripting 2015
Groovy Shell Scripting 2015
 
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418
 
Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3Markup Template Engine introduced Groovy 2.3
Markup Template Engine introduced Groovy 2.3
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
 
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckIndy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
 
enterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summerenterprise grails challenge, 2013 Summer
enterprise grails challenge, 2013 Summer
 
New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1New features of Groovy 2.0 and 2.1
New features of Groovy 2.0 and 2.1
 
Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309
 
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118
 
New feature of Groovy2.0 G*Workshop
New feature of Groovy2.0 G*WorkshopNew feature of Groovy2.0 G*Workshop
New feature of Groovy2.0 G*Workshop
 
G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901G* Workshop in fukuoka 20120901
G* Workshop in fukuoka 20120901
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/Grails
 
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
 
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
 
Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224
 
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
 
GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.GroovyServ concept, how to use and outline.
GroovyServ concept, how to use and outline.
 

Recently uploaded

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Recently uploaded (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Groovy 1.8の新機能について

  • 2. Slide # 2 JGGUG G*Workshop 17th / 2011.6.17
  • 3. http://d.hatena.ne.jp/uehaj/ Slide # 3 JGGUG G*Workshop 17th / 2011.6.17
  • 4. Slide # 4 JGGUG G*Workshop 17th / 2011.6.17
  • 5. Slide # 5 JGGUG G*Workshop 17th / 2011.6.17
  • 6. April 28, 2011 Slide # 6 JGGUG G*Workshop 17th / 2011.6.17
  • 7. April 28, 2011 Slide # 6 JGGUG G*Workshop 17th / 2011.6.17
  • 8. Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 9. $ cat input.txt That that is is that that is not is not is that it it is $ java WordCount input.txt 1: [That] 2: [not] 2: [it] 4: [that] 6: [is] Slide # 8 JGGUG G*Workshop 17th / 2011.6.17
  • 10. Java WordCount:48      Set<Map.Entry<String, Integer>> entrySet = import java.util.Comparator; map.entrySet(); import java.util.HashMap;      Object[] list = entrySet.toArray(); import java.util.Map;     Comparator comp = new Comparator(){ import java.util.Set;        public int compare(Object o1, Object o2) import java.util.List; { import java.util.Arrays;          Map.Entry<String, Integer> e1 = import java.io.FileReader; (Map.Entry<String, Integer>) o1; import java.io.BufferedReader;          Map.Entry<String, Integer> e2 = import java.io.FileNotFoundException; (Map.Entry<String, Integer>) o2; import java.io.IOException;         return e1.getValue() - e2.getValue();         } public class WordCount {       };   @SuppressWarnings(value = "unchecked")       Arrays.sort(list, comp);   public static void main(String[] args) {       for (Object it: list) {     FileReader fis = null;         Map.Entry<String, Integer> entry =     BufferedReader br = null; (Map.Entry<String, Integer>)it;     try {         System.out.println(entry.getValue() + ":       HashMap<String, Integer> map = new ["+entry.getKey()+"]"); HashMap<String, Integer>();       }       fis = new FileReader(args[0]);     }       br = new BufferedReader(fis);     catch (IOException e) {       String line;       try {if (br != null)       while ((line = br.readLine()) != null) { br.close();}catch(IOException ioe){}         for (String it: line.split("s+")) {       try {if (fis !=          map.put(it, (map.get(it)==null) ? 1 : null)fis.close();}catch(IOException ioe){} (map.get(it) + 1));       e.printStackTrace();         }     }       }   } } Slide # 9 JGGUG G*Workshop 17th / 2011.6.17
  • 11. Groovy WordCount(9 ) def map = [:].withDefault{0} new File(args[0]).eachLine {   it.split(/s+/).each {     map[it]++    } } map.entrySet().sort{it.value}.each {   println "${it.value}: [${it.key}]" } Slide # 10 JGGUG G*Workshop 17th / 2011.6.17
  • 12. Java             Set<Map.Entry<String, Integer>> import java.util.Comparator; entrySet = map.entrySet(); import java.util.HashMap;             Object[] list = entrySet.toArray(); import java.util.Map;             Comparator comp = new Comparator(){ import java.util.Set;                 public int compare(Object o1, import java.util.List; Object o2) { import java.util.Arrays;                     Map.Entry<String, Integer> e1 import java.io.FileReader; = (Map.Entry<String, Integer>) o1; import java.io.BufferedReader;                     Map.Entry<String, Integer> e2 import java.io.FileNotFoundException; = (Map.Entry<String, Integer>) o2; import java.io.IOException;                     return e1.getValue() - e2.getValue(); public class WordCount {                 }     @SuppressWarnings(value = "unchecked")             };     public static void main(String[] args) {             Arrays.sort(list, comp);         FileReader fis = null;             for (Object it: list) {         BufferedReader br = null;                 Map.Entry<String, Integer> entry =         try { (Map.Entry<String, Integer>)it;             HashMap<String, Integer> map = new                  HashMap<String, Integer>(); System.out.println(entry.getValue() + ":             fis = new FileReader(args[0]); ["+entry.getKey()+"]");             br = new BufferedReader(fis);             }             String line;         }             while ((line = br.readLine()) != null)         catch (IOException e) { {             try {if (br != null)                 for (String it: line.split("s br.close();}catch(IOException ioe){} +")) {             try {if (fis !=                     map.put(it, null)fis.close();}catch(IOException ioe){} (map.get(it)==null) ? 1 : (map.get(it) + 1));             e.printStackTrace(); Slide # 11       }           JGGUG G*Workshop 17th /         } 2011.6.17             }     }
  • 13. Groovy WordCount(9 ) def map = [:].withDefault{0} // value 0 map new File(args[0]).eachLine { //   it.split(/s+/).each {     // /s+/     map[it]++                // map 1   } } map.entrySet().sort{it.value}.each {// map entrySet value   println "${it.value}: [${it.key}]"// key,value } Slide # 12 JGGUG G*Workshop 17th / 2011.6.17
  • 14. (→4 def map = new File(args[0]).text.split(/s+/).countBy{it} map.entrySet().sort{it.value}.each {   println "${it.value}: [${it.key}]" } Slide # 13 JGGUG G*Workshop 17th / 2011.6.17
  • 15. (→4 def map = new File(args[0]).text.split(/s+/).countBy{it} map.entrySet().sort{it.value}.each {   println "${it.value}: [${it.key}]" } Slide # 13 JGGUG G*Workshop 17th / 2011.6.17
  • 16. Slide # 14 JGGUG G*Workshop 17th / 2011.6.17
  • 17. AST Groovy 1.8.0 Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 18. AST (curry) Groovy 1.8.0 Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 19. AST AST AST AST (curry) Groovy 1.8.0 Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 20. AST AST AST AST (curry) Groovy 1.8.0 Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 21. AST AST AST AST (curry) Groovy 1.8.0 (GEP3) $/ /$ Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 22. AST AST AST AST (curry) Groovy 1.8.0 GDK Groovy API GPars (GEP3) GSql $/ /$ Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 23. AST AST AST AST (curry) Groovy 1.8.0 jar Grab GroovyDoc GDK Groovy API GPars (GEP3) GSql $/ /$ Slide # 15 JGGUG G*Workshop 17th / 2011.6.17
  • 24. Groovy 1.8.0 (GEP3) $/ /$ / / Slide # 16 JGGUG G*Workshop 17th / 2011.6.17
  • 25. println 1+1 // m1(a1).m2(a2).m3(a3) m1 a1 m2 a2 m3 a3 Slide # 17 JGGUG G*Workshop 17th / 2011.6.17
  • 26. turn left then right p.p1 // turn(left).then(right) paint wall with red, green and yellow // paint(wall).with(red, green).and(yellow) take 3 cookies  // take(3).cookies // take(3).getCookies()    given { } when { } then { } // given({}).when({}).then({}) http://groovy.codehaus.org/Groovy+1.8+release+notes Slide # 18 JGGUG G*Workshop 17th / 2011.6.17
  • 27. $/…/$ ///…///( ) /…/ a=$/ /$ $/ Slide # 19 JGGUG G*Workshop 17th / 2011.6.17
  • 28. AST AST Groovy 1.8.0 AST AST Slide # 20 JGGUG G*Workshop 17th / 2011.6.17
  • 29. Slide # 21 JGGUG G*Workshop 17th / 2011.6.17
  • 30. Slide # 21 JGGUG G*Workshop 17th / 2011.6.17
  • 31. Slide # 22 JGGUG G*Workshop 17th / 2011.6.17
  • 32. Slide # 23 JGGUG G*Workshop 17th / 2011.6.17
  • 33. import groovy.util.logging.Log @Log class MyClass {   def invoke() {     log.info 'info message'     log.fine 'fine message'   } } Slide # 24 JGGUG G*Workshop 17th / 2011.6.17 http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
  • 34. log.info < > < > log.isLoggabl(java.util.logging.Level.INFO) ? log.info(< >) : null Slide # 25 JGGUG G*Workshop 17th / 2011.6.17 http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
  • 35. @TupleConstructor class MyClass { class MyClass {    def a    def a    def b    def b    def c    def c    MyClass(a,b,c) {  }     this.a=a }     this.b=b     this.c=c    }  } Slide # 26 JGGUG G*Workshop 17th / 2011.6.17 http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
  • 36. Slide # 27 JGGUG G*Workshop 17th / 2011.6.17
  • 37. class MyClass {   @WithReadLock def () { }   @WithWriteLock def () { } } Slide # 28 JGGUG G*Workshop 17th / 2011.6.17
  • 38. class MyClass {   @WithReadLock def () { }   @WithWriteLock def () { } } Slide # 28 JGGUG G*Workshop 17th / 2011.6.17
  • 39. Slide # 29 JGGUG G*Workshop 17th / 2011.6.17
  • 40. while (true) { ←   println ”xx” } while (true) {   if (java.lang.Thread.currentThread().isInterrupted()) {     throw new InterruptedException('Execution Interrupted')   }   println ”xx” } Slide # 30 JGGUG G*Workshop 17th / 2011.6.17 http://canoo.com/blog/2010/09/20/log-groovys-new-and-extensible-logging-conveniences/
  • 41. foo.groovy: String a=”ABC” def bar() { println a } bar() // => a class foo extends Script { void run() { String a = ”ABC” bar() } def bar() { println a } } Slide # 31 JGGUG G*Workshop 17th / 2011.6.17
  • 42. foo.groovy: @Field String a=”ABC” def bar() { println a } bar() ==> “ABC” class foo extends Script { String a = ”ABC” void run() { bar() } def bar() { println a } } Slide # 32 JGGUG G*Workshop 17th / 2011.6.17
  • 43. Slide # 33 JGGUG G*Workshop 17th / 2011.6.17
  • 44. Groovy 1.8.0 (curry) Slide # 34 JGGUG G*Workshop 17th / 2011.6.17
  • 45. @ConditionalInterrupt({ counter > 100 }) class Foo {   int counter = 0   void run() {     while (true) {       counter++ // 100     } // InterruptedException   } } Slide # 35 JGGUG G*Workshop 17th / 2011.6.17
  • 46. // fib1 = { n ->   n <= 1 ? n : fib1(n - 1) + fib1(n - 2) } // fib2 = { n ->   n <= 1 ? n : fib2(n - 1) + fib2(n - 2) }.memoize() Slide # 36 JGGUG G*Workshop 17th / 2011.6.17
  • 47. … … Slide # 37 JGGUG G*Workshop 17th / 2011.6.17
  • 48. Slide # 38 JGGUG G*Workshop 17th / 2011.6.17
  • 49. Groovy 1.8.0 GDK Groovy API GPars GSql JSon Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 50. Slide # 40 JGGUG G*Workshop 17th / 2011.6.17
  • 51. ! Slide # 40 JGGUG G*Workshop 17th / 2011.6.17
  • 52. Java JSON ‘’’ {"name": "John HashMap Smith", "age": 33} ‘’’ JsonSlurper #parseText( ) ‘’’ ArrayList ["milk", "bread", "eggs"] ‘’’ 41 Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 53. JSON bldr = new JsonBuilder() bldr { num 1 ‘boolean’ true arr([1,2,3]) JSonBuilde } r JSON toString() ”””{"num": 42 1,"boolean":true," arr":[1,2,3]}””” Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 54. Java bldr=new JsonBuilder() bldr([ num:1, HashMap ’boolean’:true, arr: JSonBuilde [1,2,3] ]) r JSON toString() “””{"num": 43 1,"boolean":true," arr":[1,2,3]}””” Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 55. JSON { "num": 1, JSonBuilde toPrettyString() "’boolean’": true, r "arr": [ 1, 2, 3 ] 44 } Slide # JGGUG G*Workshop 17th / 2011.6.17
  • 56. Groovy 1.8.0 Slide # 45 JGGUG G*Workshop 17th / 2011.6.17
  • 57. public class FibBench {   static int fib(int n) {     return n <= 1 ? n : fib(n - 1) + fib(n - 2);   } } (ms) Java 1 Groovy 1.8.0 2664 2.9 Groovy 1.7.10 26702 28.6 Groovy++ 0.4.230_1.8.0 1067 1.14 Java SE 1.6.0_22 933 1.0 Slide # 46 JGGUG G*Workshop 17th / 2011.6.17
  • 58. ( 10 !) 1.8.0 int Groovy++ Groovy++ (Java !) Groovy 1.8 Slide # 47 JGGUG G*Workshop 17th / 2011.6.17
  • 59. Groovy 1.8.0 jar Grab GroovyDoc Slide # 48 JGGUG G*Workshop 17th / 2011.6.17
  • 60. $ java -jar /tool/groovy-1.8.0/target/ install/embeddable/groovy-all-1.8.0.jar fib.groovy time=2542 time=34 Slide # 49 JGGUG G*Workshop 17th / 2011.6.17
  • 61. Slide # 50 JGGUG G*Workshop 17th / 2011.6.17
  • 62. Slide # 51 JGGUG G*Workshop 17th / 2011.6.17
  • 63. Slide # 52 JGGUG G*Workshop 17th / 2011.6.17

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. &amp;#x6B63;&amp;#x76F4;&amp;#x3001;Groovy&amp;#x304B;&amp;#x3089;&amp;#x66F8;&amp;#x304D;&amp;#x306A;&amp;#x304A;&amp;#x3059;&amp;#x306E;&amp;#x306F;&amp;#x3001;&amp;#x305F;&amp;#x3044;&amp;#x3078;&amp;#x3093;&amp;#x3067;&amp;#x3057;&amp;#x305F;&amp;#x3002;\n
  10. \n
  11. &amp;#x300C;&amp;#x4F55;&amp;#x3092;&amp;#x51E6;&amp;#x7406;&amp;#x3059;&amp;#x308B;&amp;#x304B;&amp;#x300D;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x6700;&amp;#x4F4E;&amp;#x9650;&amp;#x306E;&amp;#x6307;&amp;#x793A;&amp;#x306F;&amp;#x4E0A;&amp;#x3067;&amp;#x5341;&amp;#x5206;&amp;#x3001;\n&amp;#x4ED6;&amp;#x306F;&amp;#x30E1;&amp;#x30BF;&amp;#x60C5;&amp;#x5831;&amp;#x3002;\n
  12. &amp;#x5404;&amp;#x884C;&amp;#x3092;&amp;#x89E3;&amp;#x8AAC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x3059;&amp;#x3093;&amp;#x306A;&amp;#x308A;&amp;#x3068;&amp;#x8AAD;&amp;#x3081;&amp;#x3070;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306E;&amp;#x610F;&amp;#x5473;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3059;&amp;#x308B;&amp;#x3002;\n
  13. &amp;#x5404;&amp;#x884C;&amp;#x3092;&amp;#x89E3;&amp;#x8AAC;&amp;#x3057;&amp;#x3066;&amp;#x3044;&amp;#x304D;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x3059;&amp;#x3093;&amp;#x306A;&amp;#x308A;&amp;#x3068;&amp;#x8AAD;&amp;#x3081;&amp;#x3070;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x306E;&amp;#x610F;&amp;#x5473;&amp;#x306B;&amp;#x5BFE;&amp;#x5FDC;&amp;#x3059;&amp;#x308B;&amp;#x3002;\n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. XmlSlurper,Perser&amp;#x306E;&amp;#x3088;&amp;#x3046;&amp;#x306B;DOM&amp;#x3068;&amp;#x304B;&amp;#x51FA;&amp;#x3066;&amp;#x3053;&amp;#x306A;&amp;#x3044;&amp;#x3002;\n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n