29
The History of Groovy Groovy基礎勉強会 #GroovyBase

The History of Groovy #GroovyBase

  • Upload
    kyon-mm

  • View
    4.858

  • Download
    2

Embed Size (px)

Citation preview

Page 1: The History of Groovy #GroovyBase

The Historyof

GroovyGroovy基礎勉強会 #GroovyBase

Page 2: The History of Groovy #GroovyBase

自己紹介

• kyon_mm きょん

• 自称Groovyエヴァンジェリスト

• 2011.9 - なごやのテストエンジニア

• Groovy, Test, CD, Agile, etc...

Page 3: The History of Groovy #GroovyBase

Phantom Type

• 名古屋のソフトウェア開発企業です。

• http://www.phantomtype.com

Page 4: The History of Groovy #GroovyBase

スポンサー広告

• 今回の勉強会開催にあたって @kyon_mmを支援してくださっている企業さんの広告になります。

Page 5: The History of Groovy #GroovyBase

Phantom Type

• ファントムタイプ社の目指すところは「コミュニティ活動のバイタリティを支援する」ことです。

Page 6: The History of Groovy #GroovyBase

Phantom Type

• コミュニティ活動とは例えば「◯◯ Boot

Campを主催する」だとか「××言語スタートアップを主催する」とかそういうのです。特に技術的な面にこだわっているわけではありません。

Page 7: The History of Groovy #GroovyBase

Phantom Type

• ファントムタイプ社がやりたいのはコミュニティを主催したい人たちの交通費、宿泊費、開催場所とか諸々の支援です。

Page 8: The History of Groovy #GroovyBase

ここから本編

Page 9: The History of Groovy #GroovyBase

Agenda

• Groovy年表

• Groovy全体像

Page 10: The History of Groovy #GroovyBase

Groovy

• 2003 Birth

• 2004 GroovyOne

• 2007 Groovy 1.0 Release!

• 2009 Groovy 1.5 Release!

• 2012 Groovy 2.0 Release!

Page 11: The History of Groovy #GroovyBase

Background

• JamesがPythonに触発されてJavaに持ち込もうとする

• Inspired by Ruby, Smalltalk, Clojure, etc.

Page 12: The History of Groovy #GroovyBase

Ruby

• Collection

• each, every, grep, collect, inject

• mixin( != trait )

Page 13: The History of Groovy #GroovyBase

Clojure

• trampoline

• Agent(GPars)

Page 14: The History of Groovy #GroovyBase

JSR-241

• Groovy言語はJavaの第二言語として認められる。(第一言語はJava言語

Page 15: The History of Groovy #GroovyBase

Impact

• Groovy1.5

• Groovy2.0

Page 16: The History of Groovy #GroovyBase

Groovy1.5

• Java 5

• SwingBuilder

• Java/Groovy mix Compile

Page 17: The History of Groovy #GroovyBase

Groovy2.0

• Embedded Static Type Check

• JDK7 Support

Page 18: The History of Groovy #GroovyBase

Groovy in Japan

• Grails 0.3 ~ 1.0 近辺 => Javaでのアジャイル開発支援として知名度があがる

• Groovy 2.0 近辺 => NTTソフトウェアの外向けのGroovy活動が活発になる

Page 19: The History of Groovy #GroovyBase

Agenda

• Groovy年表

• Groovy全体像

Page 20: The History of Groovy #GroovyBase

Groovy

• Dynamic Type( != Dynamic Language)

• OO Programming

• Java Friendly

• Script

• A Lots of Shortcut (compared to Java Language)

Page 21: The History of Groovy #GroovyBase

Dynamic Type

• int a = 1 // int

• Foo a = new Foo() // Foo

• def a = 1 // Object

• def a = new Foo() // Object

Page 22: The History of Groovy #GroovyBase

OO Programming

• Class型OO

• Objectのインスタンス化と属するメソッドでメッセージングを行う。

Page 23: The History of Groovy #GroovyBase

OO Programming

• Closureはあるが、トップレベル関数などはない。

• レコード、タプル、代数的データ型、パターンマッチがない

Page 24: The History of Groovy #GroovyBase

Java Friendly

• do while, abstract method on enum, ==, [a,b,c] などの数個を除いてJavaと同様の動きをする。

• == は equalsで動作する

• [a,b,c]は配列ではなくArrayListとして動作する

Page 25: The History of Groovy #GroovyBase

Script

• トップレベルに書いたものはそのまま動作する

• もちろんClassを書いておくこともできる。

Page 27: The History of Groovy #GroovyBase

Groovy

• MOP API

• AST API

• DSL

Page 28: The History of Groovy #GroovyBase

まとめ

• 今年で10周年なのでお祝いイベントやりたい

• 選択的型付けOOProgramming

• PHP化しないことを祈る

• ツール的に扱うのに親和性が非常に高い

Page 29: The History of Groovy #GroovyBase

覚悟して参りましょう!