SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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.
 

Kürzlich hochgeladen

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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

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

Hinweis der Redaktion

  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