「プログラミングGroovy」Groovyってなんだろ?編

24
プログラミング Groovy Java

description

2011/05/28 レッツゴーデベロッパー2011@仙台

Transcript of 「プログラミングGroovy」Groovyってなんだろ?編

Page 1: 「プログラミングGroovy」Groovyってなんだろ?編

プログラミングGroovy

Java

Page 2: 「プログラミングGroovy」Groovyってなんだろ?編

‣ 本初のGroovy本!‣300ページ前後‣¥3,000前後‣6 下旬刊 ?

Java

Java開発者にGroovyの魅 を広く伝えたい!

Page 3: 「プログラミングGroovy」Groovyってなんだろ?編

関 和愛 (@kazuchika)上原 潤 (@uehaj)須江 信洋 (@nobusue)中野 靖治 (@nobeans)

<執筆チーム>

本Grails/Groovyユーザーグループ (@jggug)

Page 4: 「プログラミングGroovy」Groovyってなんだろ?編

< 紹介>

関 和愛(せきや かずちか)

‣HotJava時代からのJavaラー‣「Groovyイン・アクション」翻訳

‣JGGUG運営委員

Page 5: 「プログラミングGroovy」Groovyってなんだろ?編

第1章 Groovyの世界へようこそ!第2章 Groovyの利 法第3章 プログラミング 語Groovy第4章 Groovyのライブラリ第5章 進んだ話題第6章 Groovyエコシステム第7章 Groovy 1.8の新機能付録A Eclipseプラグイン

< 次>

Page 6: 「プログラミングGroovy」Groovyってなんだろ?編

Java

Groovyってなんだろ?編

Page 7: 「プログラミングGroovy」Groovyってなんだろ?編

メタプログラミング

スクリプティング

オプショナルタイピング

コレクションリテラル

クロージャ

GDK (Groovy JDK)

演算 オーバーロード

XML/JSONサポート

ビルダー

Java VM上で動作する軽量・動的な 語

Page 8: 「プログラミングGroovy」Groovyってなんだろ?編

Groovyのユニークさ

“Groovyは、Javaを置き換えるのではなく、あくまでJavaエコシステムの 員として、より洗練され、進化した次世代Javaプラットフォームの実現を 指しています。”

(1章より)

他のJVM 語との違い

Page 9: 「プログラミングGroovy」Groovyってなんだろ?編

2003

2004

2005

2006

2007

2008

2009

2010

2011

James Strachan らによって開発

Guillaume Laforgeが開発リーダーに

G2One設

SpringSourceによるG2One買収

VMwareによるSpringSource買収

JSR-241

Groovy 1.0Groovy 1.5

Groovy 1.8

Groovy 1.6Groovy 1.7

Groovy 史

貫したコミュニティ主導のオープンソース開発

Page 10: 「プログラミングGroovy」Groovyってなんだろ?編

簡潔さ

柔軟性 Java親和性

Groovyの特徴

Page 11: 「プログラミングGroovy」Groovyってなんだろ?編

簡潔さ•Javaの1/3~1/10の記述量※あくまで個 の感想です•処理の本質が えやすい

Page 12: 「プログラミングGroovy」Groovyってなんだろ?編

// Hello.javapublic class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); }}

Page 13: 「プログラミングGroovy」Groovyってなんだろ?編

// Hello.groovypublic class Hello { public static void main(String[] args) { System.out.println("Hello, World!"); }}

Java互換バージョン

Page 14: 「プログラミングGroovy」Groovyってなんだろ?編

// Hello.groovyprintln "Hello, World!"

ミニマムバージョン

Page 15: 「プログラミングGroovy」Groovyってなんだろ?編

簡潔さを実現する要素•定型コードの 動 成•コレクションリテラル記法•演算 オーバーロード•カッコやセミコロンの省略•クロージャなど

Page 16: 「プログラミングGroovy」Groovyってなんだろ?編

柔軟性•動的型付けダックタイピング

•メタプログラミングMOP (Meta Object Protocol)AST変換

Page 17: 「プログラミングGroovy」Groovyってなんだろ?編

ダックタイピングclass Dog { void cry() { println "Bowwow!" }}class Cat { void cry() { println "Meow!" }}void kick(obj) { obj.cry() }kick(new Dog())kick(new Cat())

Page 18: 「プログラミングGroovy」Groovyってなんだろ?編

MOP:メソッドの動的追加

String.metaClass.shout = { println delegate.toUpperCase() + "!" }"Let’s go developers".shout()

"LET S GO DEVELOPERS!"が表 される

Page 19: 「プログラミングGroovy」Groovyってなんだろ?編

Java親和性•バイナリレベル互換•ソースレベル互換•実 環境が共通•ツールの共有・内蔵• 化の共有

Page 20: 「プログラミングGroovy」Groovyってなんだろ?編

デモ:AntBuilderurl = "http://dist.groovy.codehaus.org/distributions/groovy-binary-1.8.0.zip"tmpfile = File.createTempFile("ant", ".zip")

ant = new AntBuilder()ant.get(src:url, dest:tmpfile)ant.unzip(src:tmpfile, dest:".")

Page 21: 「プログラミングGroovy」Groovyってなんだろ?編

デモ:GrapeでTwitter4J

@Grab('org.twitter4j:twitter4j-core:[2.2,)')import twitter4j.*

twitter = new TwitterFactory().instancetwitter.updateStatus "デモ実演中 #5000dai"

バージョン2.2以降のTwitter4Jを 意せよ、

の意味

Page 22: 「プログラミングGroovy」Groovyってなんだろ?編

7つの導 パターンby Dierk Koenig

Javaプロジェクトへの

Page 23: 「プログラミングGroovy」Groovyってなんだろ?編

1. 万能接着剤(Super Glue)

JavaのコンポーネントやフレームワークをGroovyで糊付け

2. やわらかな 臓部(Liquid Heart)

Javaアプリの中核にあるビジネスロジックをGroovy(DSL)でスクリプティング

3. 内視鏡 術(Keyhole Surgery)

Groovyスクリプトを接続する さな を設け保守や診断に活

4. スマート設定(Smart Configuration) Groovyスクリプトを設定ファイルとして使

5. 無制限の解放(Unlimited Openness) 全部Groovyで構築しちゃおう!

6. さんスクリプト(House-elf Scripts) 各種ユーティリティツールをGroovyで作る

7. プロトタイプ(Prototype) プロトタイプをGroovyで開発

Page 24: 「プログラミングGroovy」Groovyってなんだろ?編

まとめ

GroovyはJavaを補完・強化する最強の相棒。Javaを愛するあなたもJavaに疲れたあなたも

ぜひ本 からお試しください!

Java