Groovy ネタ NGK 忘年会2009 ライトニングトーク
-
Upload
tsuyoshi-yamamoto -
Category
Documents
-
view
1.189 -
download
0
description
Transcript of Groovy ネタ NGK 忘年会2009 ライトニングトーク
Groovyネタ
G* in 5 minあっとNGK 2009/12/12
T.Yamamoto
NGK!?
NagoyaGroovyKyodokumiai ???名古屋Groovy協同組合????・・これは・・行かなきゃ!
よろしくです
JGGUG(ぢぇいがぐ)名古屋支部から来ました。やまもとです。twitter: tyama
JGGUGjapan grails/groovy user group
おっと、
JapanGrailsGroovyUsersGroup
Groovyをつかってる?
Javaを使ってるなら、Groovy使うべき!
つか、Groovyて何?
食べ物?おいしいの?
Java から Groovy え!?HelloWorld.java
public class HelloWorld { String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } public String greet(){ return "Hello "+name; } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld(); helloWorld.setName("Groovy"); System.out.println(helloWorld.greet()); }}
拡張子変更
Java から Groovy え!?HelloWorld.groovy
public class HelloWorld { String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } public String greet(){ return "Hello "+name; } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld(); helloWorld.setName("Groovy"); System.out.println(helloWorld.greet()); }}
セミコロントルツメ
Java から Groovy え!?HelloWorld.groovy
public class HelloWorld { String name public void setName(String name){ this.name = name } public String getName(){ return name } public String greet(){ return "Hello "+name } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName("Groovy") System.out.println(helloWorld.greet()) }}
getterとsetterいなくなれ!
Java から Groovy え!?HelloWorld.groovy
public class HelloWorld { String name public String greet(){ return "Hello "+name } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName("Groovy") System.out.println(helloWorld.greet()) }} メインなんて外にいっちゃえ!
Java から Groovy え!?HelloWorld.groovy
public class HelloWorld { String name public String greet(){ return "Hello "+name }}
HelloWorld helloWorld = new HelloWorld()helloWorld.setName("Groovy")System.out.println(helloWorld.greet())
publicとかもいぢるSystem.outもいらんよ
Java から Groovy え!?HelloWorld.groovy
class HelloWorld { String name def greet(){ return "Hello "+name }}
def helloWorld = new HelloWorld()helloWorld.setName("Groovy")println(helloWorld.greet()) わかりやすく!
setとか無くていいメソッドの()省略
Java から Groovy え!?HelloWorld.groovy
class HelloWorld { String name def greet(){ return "Hello "+name }}
def helloWorld = new HelloWorld()helloWorld.name = "Groovy"println helloWorld.greet()
returnもいらない!+nameも””の中に$nameにして!
Java から Groovy え!?HelloWorld.groovy
class HelloWorld { String name def greet(){ "Hello $name"}}
def helloWorld = new HelloWorld()helloWorld.name = "Groovy"println helloWorld.greet()
デフォルトコンストラクタも勝手にできるよ!
Java から Groovy え!?HelloWorld.groovy
class HelloWorld { String name def greet(){ "Hello $name"}}
def helloWorld = new HelloWorld(name: "Groovy")println helloWorld.greet()
どや!
つまり、GroovyではJavaコードの98%くらいは、そのまま動くので、Javaプログラマに言語を覚えるコストがあまりかからない。そしてGroovyな記述をすれば余分なものが無くなって見やすくわかりやすく。
他にもいろいろ...配列、 マップdef arr = [1,2,3,'hoge']def map = [a:1,b:2,c:'hoge']
クロージャ、Range、使いやすい正規表現イテレータ、each,collect,find ...メタプログラミング...... more!他にもいろいろありますが、とても5分では話しきれません!
あそんでみてね!Groovy-1.7で、twitter4j使ったサンプル
@Grab('net.homeip.yusuke:twitter4j:[2.0,)')import twitter4j.*def user="username",pass="pass"new Twitter(user,pass).friendsTimeline.each { println "${it.user.name}: ${it.text}"}
ライブラリーもmavenレポから勝手にとってくるんだからね!
で、Groovyて何?
日本ではまだ人気が無いがJava使いは使った方が良い言語。※Javaでの開発を楽しくするミドルウェア的な物。
開発元は、VMware傘下のSpringSourceにいます。
どのへんに
Groovy
Webアプリケーション
Grails Spring,HibernateがベースにアジャイルJEE開発。プラグインでのモジュラな開発* Grailsアプリ自身もプラグインになるGAE/J対応も可能。各種クラウド(EC2,Stax,morph等)簡単デプロイ対応もある
デスクトップアプリ
Griffon swingアプリをgrailsと同じ感覚で作る!
ビルド
Gantxmlを書かずにAntを使いこなせ!
Gradle Maven、Ivy、Ant等を統合したGroovyなビルドツール
CIツールHudsonの中にも!
これこれ!
Google AppEngine for Java
Gaelyk GroovyでGAE/Jを簡単に!GroovyのGAE/J用軽量開発ツールキットです。GAE/Jの各種サービスも簡単操作!
mailService.send to: '[email protected]', subject: 'Hello World', htmlBody: '<bold>Hello</bold>'
Gaelyk
データストアAPIimport com.google.appengine.api.datastore.Entity
def person = new Entity("person")person['name'] = "やまもとつよし"person.age = 18
println person.nameperson.save()
def q = new Query('person')def list = datastoreService.prepare(q).asList(
Builder.withLimit(20).offset(0) )person.delete()
そんなこんなで、
12/26 名古屋SGGAE/J勉強会。Scala vs and Groovy 合同で、GAE/J勉強会!「SGGAE/J」読み:すっげーぢぇ!
Thank you...