SlideShare a Scribd company logo
1 of 29
Download to read offline
Groovy




                Java

2011   5   28
Java
                            2011 05/28
                Slide # 2
2011   5   28
Java
                            2011 05/28
                Slide # 3
2011   5   28
$ 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]                                     Java
                                                     2011 05/28
                Slide # 4
2011   5   28
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) br.close();}catch
       while ((line = br.readLine()) != null) {    (IOException ioe){}
         for (String it: line.split("s+")) {           try {if (fis != null)fis.close();}catch
           map.put(it, (map.get(it)==null) ? 1 :   (IOException ioe){}
 (map.get(it) + 1));                                     e.printStackTrace();
         }                                             }

                                                                                            Java
       }                                             }
                                                   }
                                                                    2011 05/28
                Slide # 5
2011   5   28
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}]"
           }




                                                               Java
                                                  2011 05/28
                Slide # 6
2011   5   28
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                    System.out.println(entry.getValue
 HashMap<String, Integer>();                       () + ": ["+entry.getKey()+"]");
             fis = new FileReader(args[0]);                    }
             br = new BufferedReader(fis);                 }
             String line;                                  catch (IOException e) {
             while ((line = br.readLine()) !=                  try {if (br != null) br.close();}
 null) {                                           catch(IOException ioe){}
                 for (String it: line.split("s               try {if (fis != null)fis.close();}
 +")) {                                            catch(IOException ioe){}
                     map.put(it, (map.get(it)                  e.printStackTrace();
 ==null) ? 1 : (map.get(it) + 1));
                 }
                                                           }
                                                       }
                                                                                           Java
             }                                     }                2011 05/28
                Slide # 7
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 8
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 9
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 10
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 11
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 12
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 13
2011   5   28
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
           }




                                                                                  Java
                                                             2011 05/28
                Slide # 14
2011   5   28
Java
                             2011 05/28
                Slide # 15
2011   5   28
public final class Person {                                       if (obj == null)
           private final String firstName;                                   return false;
           private final String lastName;                                if (getClass() != obj.getClass())
                                                                             return false;
            public Person(String firstName, String lastName) {           Person other = (Person) obj;
                this.firstName = firstName;                              if (firstName == null) {
                this.lastName = lastName;                                    if (other.firstName != null)
            }                                                                    return false;
                                                                         } else if (!firstName.equals(other.firstName))
            public String getFirstName() {                                   return false;
                return firstName;                                        if (lastName == null) {
            }                                                                if (other.lastName != null)
                                                                                 return false;
            public String getLastName() {                                } else if (!lastName.equals(other.lastName))
                return lastName;                                             return false;
            }                                                            return true;
                                                                     }
            @Override
            public int hashCode() {                                  @Override
                final int prime = 31;                                public String toString() {
                int result = 1;                                          return "Person(firstName:" + firstName
                result = prime * result + ((firstName == null)               + ", lastName:" + lastName + ")";
                    ? 0 : firstName.hashCode());                     }
                result = prime * result + ((lastName == null)
                    ? 0 : lastName.hashCode());                  }
                return result;
            }

            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;


                                                                                                              Java
                                                                                   2011 05/28
                 Slide # 16
2011    5   28
public final class Person {                                       if (obj == null)
           private final String firstName;                                   return false;
           private final String lastName;                                if (getClass() != obj.getClass())
                                                                             return false;
            public Person(String firstName, String lastName) {           Person other = (Person) obj;
                this.firstName = firstName;                              if (firstName == null) {
                this.lastName = lastName;                                    if (other.firstName != null)
            }                                                                    return false;
                                                                         } else if (!firstName.equals(other.firstName))
            public String getFirstName() {                                   return false;
                return firstName;                                        if (lastName == null) {
            }                                                                if (other.lastName != null)
                                                                                 return false;
            public String getLastName() {                                } else if (!lastName.equals(other.lastName))
                return lastName;                                             return false;
            }                                                            return true;
                                                                     }
            @Override
            public int hashCode() {                                  @Override
                final int prime = 31;                                public String toString() {
                int result = 1;                                          return "Person(firstName:" + firstName
                result = prime * result + ((firstName == null)               + ", lastName:" + lastName + ")";
                    ? 0 : firstName.hashCode());                     }
                result = prime * result + ((lastName == null)
                    ? 0 : lastName.hashCode());                  }
                return result;
            }

            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;


                                                                                                              Java
                                                                                   2011 05/28
                 Slide # 16
2011    5   28
Groovy                           :4

           @Immutable
           class Person {
               String firstName, lastName
           }




                                                      Java
                                        2011 05/28
                Slide # 17
2011   5   28
Groovy                        :4

           @Immutable
           class Person {
               String firstName, lastName
           }

           x = new Person("Junji","Uehara")
           assert x.lastName == "Uehara"
           x.firstName = "abc"
           //==>
           groovy.lang.ReadOnlyPropertyException:
           Cannot set readonly property: firstName
                                                      Java
           for class: Person             2011 05/28
                Slide # 17
2011   5   28
Groovy                           :4

           @Immutable
           class Person {
               String firstName, lastName
           }

           x = new Person("Junji","Uehara")
           assert x.lastName == "Uehara"
           x.firstName = "abc"



                                                      Java
                                        2011 05/28
                Slide # 18
2011   5   28
Groovy                           :4

           @Immutable
           class Person {
               String firstName, lastName
           }

           x = new Person("Junji","Uehara")
           assert x.lastName == "Uehara"
           x.firstName = "abc"



                                                      Java
                                        2011 05/28
                Slide # 19
2011   5   28
Groovy                           :4

           @Immutable
           class Person {
               String firstName, lastName
           }

           x = new Person("Junji","Uehara")
           assert x.lastName == "Uehara"
           x.firstName = "abc"



                                                      Java
                                        2011 05/28
                Slide # 20
2011   5   28
Java
                             2011 05/28
                Slide # 21
2011   5   28
Java
                             2011 05/28
                Slide # 21
2011   5   28
Java
                             2011 05/28
                Slide # 21
2011   5   28
Java
                             2011 05/28
                Slide # 21
2011   5   28
Java
                             2011 05/28
                Slide # 21
2011   5   28
DSL
                             OS


                                                   PHP     Haskel
                                  C++
                                                  Python
                              C                    Ruby
                                         Java


                                        Java + Groovy
                                                                          Java
                                                             2011 05/28
                Slide # 22
2011   5   28
Groovy
   Java

                                          Java
                             2011 05/28
                Slide # 23
2011   5   28

More Related Content

What's hot

FP in Java - Project Lambda and beyond
FP in Java - Project Lambda and beyondFP in Java - Project Lambda and beyond
FP in Java - Project Lambda and beyond
Mario Fusco
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forward
Mario Fusco
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meet
Mario Fusco
 
Important java programs(collection+file)
Important java programs(collection+file)Important java programs(collection+file)
Important java programs(collection+file)
Alok Kumar
 
Java 7 at SoftShake 2011
Java 7 at SoftShake 2011Java 7 at SoftShake 2011
Java 7 at SoftShake 2011
julien.ponge
 

What's hot (20)

Kotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime PerformanceKotlin Bytecode Generation and Runtime Performance
Kotlin Bytecode Generation and Runtime Performance
 
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
 
Kotlin, why?
Kotlin, why?Kotlin, why?
Kotlin, why?
 
FP in Java - Project Lambda and beyond
FP in Java - Project Lambda and beyondFP in Java - Project Lambda and beyond
FP in Java - Project Lambda and beyond
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forward
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
 
Java generics final
Java generics finalJava generics final
Java generics final
 
Java VS Python
Java VS PythonJava VS Python
Java VS Python
 
Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)Refactoring to Java 8 (Devoxx BE)
Refactoring to Java 8 (Devoxx BE)
 
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
 
Unit testing concurrent code
Unit testing concurrent codeUnit testing concurrent code
Unit testing concurrent code
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
java sockets
 java sockets java sockets
java sockets
 
3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java
 
Ast transformations
Ast transformationsAst transformations
Ast transformations
 
Scala - where objects and functions meet
Scala - where objects and functions meetScala - where objects and functions meet
Scala - where objects and functions meet
 
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 7 at SoftShake 2011
Java 7 at SoftShake 2011Java 7 at SoftShake 2011
Java 7 at SoftShake 2011
 
Java 7 JUG Summer Camp
Java 7 JUG Summer CampJava 7 JUG Summer Camp
Java 7 JUG Summer Camp
 

Viewers also liked (6)

GroovyConsole
GroovyConsoleGroovyConsole
GroovyConsole
 
Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528Letsgo sendai nobusue_20110528
Letsgo sendai nobusue_20110528
 
レッツゴーデベロッパー2011「プログラミングGroovy〜G*エコシステム編」
レッツゴーデベロッパー2011「プログラミングGroovy〜G*エコシステム編」レッツゴーデベロッパー2011「プログラミングGroovy〜G*エコシステム編」
レッツゴーデベロッパー2011「プログラミングGroovy〜G*エコシステム編」
 
「プログラミングGroovy」Groovyってなんだろ?編
「プログラミングGroovy」Groovyってなんだろ?編「プログラミングGroovy」Groovyってなんだろ?編
「プログラミングGroovy」Groovyってなんだろ?編
 
Grails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLTGrails 1.4.0.M1 メモLT
Grails 1.4.0.M1 メモLT
 
スプリント計画ミーティング
スプリント計画ミーティングスプリント計画ミーティング
スプリント計画ミーティング
 

Similar to Let's go Developer 2011 sendai Let's go Java Developer (Programming Language Groovy Part)

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
arjuncorner565
 
I need help with this code working Create another project and add yo.pdf
I need help with this code working Create another project and add yo.pdfI need help with this code working Create another project and add yo.pdf
I need help with this code working Create another project and add yo.pdf
fantoosh1
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development ExperiencesJavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development Experiences
Peter Pilgrim
 
Fee managment system
Fee managment systemFee managment system
Fee managment system
fairy9912
 
Works Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay ChauhanWorks Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay Chauhan
Chinmay Chauhan
 

Similar to Let's go Developer 2011 sendai Let's go Java Developer (Programming Language Groovy Part) (20)

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
 
Java Collections
Java CollectionsJava Collections
Java Collections
 
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
 
I need help with this code working Create another project and add yo.pdf
I need help with this code working Create another project and add yo.pdfI need help with this code working Create another project and add yo.pdf
I need help with this code working Create another project and add yo.pdf
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
JavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development ExperiencesJavaCro 2014 Scala and Java EE 7 Development Experiences
JavaCro 2014 Scala and Java EE 7 Development Experiences
 
Fee managment system
Fee managment systemFee managment system
Fee managment system
 
An introduction to scala
An introduction to scalaAn introduction to scala
An introduction to scala
 
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
OracleCode One 2018: Java 5, 6, 7, 8, 9, 10, 11: What Did You Miss?
 
Works Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay ChauhanWorks Applications Test - Chinmay Chauhan
Works Applications Test - Chinmay Chauhan
 
Elementary Sort
Elementary SortElementary Sort
Elementary Sort
 
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
 
Array list
Array listArray list
Array list
 
Java9 Beyond Modularity - Java 9 más allá de la modularidad
Java9 Beyond Modularity - Java 9 más allá de la modularidadJava9 Beyond Modularity - Java 9 más allá de la modularidad
Java9 Beyond Modularity - Java 9 más allá de la modularidad
 
Jug java7
Jug java7Jug java7
Jug java7
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
EMFPath
EMFPathEMFPath
EMFPath
 
Hw09 Hadoop + Clojure
Hw09   Hadoop + ClojureHw09   Hadoop + Clojure
Hw09 Hadoop + Clojure
 
JavaScript Editions ES7, ES8 and ES9 vs V8
JavaScript Editions ES7, ES8 and ES9 vs V8JavaScript Editions ES7, ES8 and ES9 vs V8
JavaScript Editions ES7, ES8 and ES9 vs V8
 
Collection and framework
Collection and frameworkCollection and framework
Collection and framework
 

More from Uehara Junji

Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309Groovy kisobenkyoukai20130309
Groovy kisobenkyoukai20130309
Uehara 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
 
Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224Jggug ws 15th LT 20110224
Jggug ws 15th LT 20110224
Uehara Junji
 
Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)Easy Going Groovy(Groovyを気軽に使いこなそう)
Easy Going Groovy(Groovyを気軽に使いこなそう)
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

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

Let's go Developer 2011 sendai Let's go Java Developer (Programming Language Groovy Part)

  • 1. Groovy Java 2011 5 28
  • 2. Java 2011 05/28 Slide # 2 2011 5 28
  • 3. Java 2011 05/28 Slide # 3 2011 5 28
  • 4. $ 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] Java 2011 05/28 Slide # 4 2011 5 28
  • 5. 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) br.close();}catch       while ((line = br.readLine()) != null) { (IOException ioe){}         for (String it: line.split("s+")) {       try {if (fis != null)fis.close();}catch          map.put(it, (map.get(it)==null) ? 1 : (IOException ioe){} (map.get(it) + 1));       e.printStackTrace();         }     } Java       }   } } 2011 05/28 Slide # 5 2011 5 28
  • 6. 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}]" } Java 2011 05/28 Slide # 6 2011 5 28
  • 7. 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                 System.out.println(entry.getValue HashMap<String, Integer>(); () + ": ["+entry.getKey()+"]");             fis = new FileReader(args[0]);             }             br = new BufferedReader(fis);         }             String line;         catch (IOException e) {             while ((line = br.readLine()) !=             try {if (br != null) br.close();} null) { catch(IOException ioe){}                 for (String it: line.split("s             try {if (fis != null)fis.close();} +")) { catch(IOException ioe){}                     map.put(it, (map.get(it)             e.printStackTrace(); ==null) ? 1 : (map.get(it) + 1));                 }         }     } Java             } } 2011 05/28 Slide # 7 2011 5 28
  • 8. 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 } Java 2011 05/28 Slide # 8 2011 5 28
  • 9. 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 } Java 2011 05/28 Slide # 9 2011 5 28
  • 10. 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 } Java 2011 05/28 Slide # 10 2011 5 28
  • 11. 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 } Java 2011 05/28 Slide # 11 2011 5 28
  • 12. 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 } Java 2011 05/28 Slide # 12 2011 5 28
  • 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 } Java 2011 05/28 Slide # 13 2011 5 28
  • 14. 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 } Java 2011 05/28 Slide # 14 2011 5 28
  • 15. Java 2011 05/28 Slide # 15 2011 5 28
  • 16. public final class Person { if (obj == null) private final String firstName; return false; private final String lastName; if (getClass() != obj.getClass()) return false; public Person(String firstName, String lastName) { Person other = (Person) obj; this.firstName = firstName; if (firstName == null) { this.lastName = lastName; if (other.firstName != null) } return false; } else if (!firstName.equals(other.firstName)) public String getFirstName() { return false; return firstName; if (lastName == null) { } if (other.lastName != null) return false; public String getLastName() { } else if (!lastName.equals(other.lastName)) return lastName; return false; } return true; } @Override public int hashCode() { @Override final int prime = 31; public String toString() { int result = 1; return "Person(firstName:" + firstName result = prime * result + ((firstName == null) + ", lastName:" + lastName + ")"; ? 0 : firstName.hashCode()); } result = prime * result + ((lastName == null) ? 0 : lastName.hashCode()); } return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; Java 2011 05/28 Slide # 16 2011 5 28
  • 17. public final class Person { if (obj == null) private final String firstName; return false; private final String lastName; if (getClass() != obj.getClass()) return false; public Person(String firstName, String lastName) { Person other = (Person) obj; this.firstName = firstName; if (firstName == null) { this.lastName = lastName; if (other.firstName != null) } return false; } else if (!firstName.equals(other.firstName)) public String getFirstName() { return false; return firstName; if (lastName == null) { } if (other.lastName != null) return false; public String getLastName() { } else if (!lastName.equals(other.lastName)) return lastName; return false; } return true; } @Override public int hashCode() { @Override final int prime = 31; public String toString() { int result = 1; return "Person(firstName:" + firstName result = prime * result + ((firstName == null) + ", lastName:" + lastName + ")"; ? 0 : firstName.hashCode()); } result = prime * result + ((lastName == null) ? 0 : lastName.hashCode()); } return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; Java 2011 05/28 Slide # 16 2011 5 28
  • 18. Groovy :4 @Immutable class Person { String firstName, lastName } Java 2011 05/28 Slide # 17 2011 5 28
  • 19. Groovy :4 @Immutable class Person { String firstName, lastName } x = new Person("Junji","Uehara") assert x.lastName == "Uehara" x.firstName = "abc" //==> groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: firstName Java for class: Person 2011 05/28 Slide # 17 2011 5 28
  • 20. Groovy :4 @Immutable class Person { String firstName, lastName } x = new Person("Junji","Uehara") assert x.lastName == "Uehara" x.firstName = "abc" Java 2011 05/28 Slide # 18 2011 5 28
  • 21. Groovy :4 @Immutable class Person { String firstName, lastName } x = new Person("Junji","Uehara") assert x.lastName == "Uehara" x.firstName = "abc" Java 2011 05/28 Slide # 19 2011 5 28
  • 22. Groovy :4 @Immutable class Person { String firstName, lastName } x = new Person("Junji","Uehara") assert x.lastName == "Uehara" x.firstName = "abc" Java 2011 05/28 Slide # 20 2011 5 28
  • 23. Java 2011 05/28 Slide # 21 2011 5 28
  • 24. Java 2011 05/28 Slide # 21 2011 5 28
  • 25. Java 2011 05/28 Slide # 21 2011 5 28
  • 26. Java 2011 05/28 Slide # 21 2011 5 28
  • 27. Java 2011 05/28 Slide # 21 2011 5 28
  • 28. DSL OS PHP Haskel C++ Python C Ruby Java Java + Groovy Java 2011 05/28 Slide # 22 2011 5 28
  • 29. Groovy Java Java 2011 05/28 Slide # 23 2011 5 28