Upload
kyon-mm
View
4.858
Download
2
Embed Size (px)
Citation preview
The Historyof
GroovyGroovy基礎勉強会 #GroovyBase
自己紹介
• kyon_mm きょん
• 自称Groovyエヴァンジェリスト
• 2011.9 - なごやのテストエンジニア
• Groovy, Test, CD, Agile, etc...
Phantom Type
• 名古屋のソフトウェア開発企業です。
• http://www.phantomtype.com
スポンサー広告
• 今回の勉強会開催にあたって @kyon_mmを支援してくださっている企業さんの広告になります。
Phantom Type
• ファントムタイプ社の目指すところは「コミュニティ活動のバイタリティを支援する」ことです。
Phantom Type
• コミュニティ活動とは例えば「◯◯ Boot
Campを主催する」だとか「××言語スタートアップを主催する」とかそういうのです。特に技術的な面にこだわっているわけではありません。
Phantom Type
• ファントムタイプ社がやりたいのはコミュニティを主催したい人たちの交通費、宿泊費、開催場所とか諸々の支援です。
ここから本編
Agenda
• Groovy年表
• Groovy全体像
Groovy
• 2003 Birth
• 2004 GroovyOne
• 2007 Groovy 1.0 Release!
• 2009 Groovy 1.5 Release!
• 2012 Groovy 2.0 Release!
Background
• JamesがPythonに触発されてJavaに持ち込もうとする
• Inspired by Ruby, Smalltalk, Clojure, etc.
Ruby
• Collection
• each, every, grep, collect, inject
• mixin( != trait )
Clojure
• trampoline
• Agent(GPars)
JSR-241
• Groovy言語はJavaの第二言語として認められる。(第一言語はJava言語
Impact
• Groovy1.5
• Groovy2.0
Groovy1.5
• Java 5
• SwingBuilder
• Java/Groovy mix Compile
Groovy2.0
• Embedded Static Type Check
• JDK7 Support
Groovy in Japan
• Grails 0.3 ~ 1.0 近辺 => Javaでのアジャイル開発支援として知名度があがる
• Groovy 2.0 近辺 => NTTソフトウェアの外向けのGroovy活動が活発になる
Agenda
• Groovy年表
• Groovy全体像
Groovy
• Dynamic Type( != Dynamic Language)
• OO Programming
• Java Friendly
• Script
• A Lots of Shortcut (compared to Java Language)
Dynamic Type
• int a = 1 // int
• Foo a = new Foo() // Foo
• def a = 1 // Object
• def a = new Foo() // Object
OO Programming
• Class型OO
• Objectのインスタンス化と属するメソッドでメッセージングを行う。
OO Programming
• Closureはあるが、トップレベル関数などはない。
• レコード、タプル、代数的データ型、パターンマッチがない
Java Friendly
• do while, abstract method on enum, ==, [a,b,c] などの数個を除いてJavaと同様の動きをする。
• == は equalsで動作する
• [a,b,c]は配列ではなくArrayListとして動作する
Script
• トップレベルに書いたものはそのまま動作する
• もちろんClassを書いておくこともできる。
A Lots of Syntax sugar
• [*1..10].each{println it}
• http://www.slideshare.net/nobeans/the-report-of-javaone2011-about-groovy/14
Groovy
• MOP API
• AST API
• DSL
まとめ
• 今年で10周年なのでお祝いイベントやりたい
• 選択的型付けOOProgramming
• PHP化しないことを祈る
• ツール的に扱うのに親和性が非常に高い
覚悟して参りましょう!