[groovy][java] Java Developer Workshop#2報告
遅いですが、Java Developer Workshopに参加しましたので報告。セッションの資料がこちらで公開されています。
最初の、Nandini RamaniさんによるJavaFXを中心とした基調講演に続き、前半ではオラクルの寺田さん、佐藤さんから「Javaの今と今後」をコンパクトに整理された形で知ることができました。
基調講演でのJavaFXでのデモは、さりげなく(?)iPadやAndroid上でJavaFXを動かしていたのですが*1これって良く考えると(考えなくても)凄いことですよね。つまりJ2SEがiOSとAndroidで動いているわけです。Androidについては、Googleとの紛争を解決させて、ライセンス契約とかも調整してもらって、うまいこと普及して欲しいものです。JavaFXでモバイルデバイスとデスクトップで共通に動くアプリが作れるようになれば、画期的なことなじゃないでしょうか。Flashのタイムラインとかはわからないけど、GroovyFXのtimeline DSLなら書く気が出てくるってもんです。
後半はJVM上で動く3言語についてのセッション。水島さん、中村さんがそれぞれScalaとJRubyを紹介してくれました。水島さんのScalaのセッションを聞いておもったのは、「Scala勢いあるわー」ということです。全国的なScalaユーザ会も発足とのことです。
中村さんのは相変わらず凄く、事前に「JRuby FXってあるんですね〜」と聞いたら、このセッションのために作ったということでびっくり。サンプルコードもそれぞれにためになるものでした。Flying Saucerなんてあるんだ。へー。linvokeDynamic(indy)の効果など、非常に興味深いことも聞けました。
私のGroovyについてのセッションはこちらにも。
以降、感想とか補足とかです。
自分のセッションでは「これらのJVM言語は目的から言うと全く競合しない」ということを言いましたが、テクニカルには似てるところも多いなということも思いました。それぞれに簡潔で、それぞれ同様にJavaコードと連携し、それぞれにビルドシステムをもち、それぞれにテストツールを持ち、…と。車輪の再発明いいかげんにしろ無駄じゃないか、という見方もあるかもしれませんが、相互に影響を与えあって進化発展していくのはOSSの良いところです。豊穣なるJVM言語に幸いあれ。
また、「Groovyにdo-whileが無い」という話の裏話として、「開発者も忘れていた」ということを言いましたが、正確には、
- 当初は、do {} whileは、doというクロージャを引数にとるメソッドがあったら意味がかわってしまうので導入しなかったとか
- でも実際には、doは予約語なので、上の問題は無いよ
- (Dierk Konig氏が)この非互換は顧客に指摘されて気づいたが、私はJavaにdo-whileがあったことすらを忘れてたよはっはっは。
Groovy開発者全員が忘れてたわけじゃないのでした。誤解なきよう。
上記に関するメーリングリストの記事はこちら。
ちなみに、「プログラミングGROOVY」では、Javaとの非互換について「3.12 Javaとの上位非互換」にまとめてあるのですが、ちゃんとdo whileについても書いてあります。:)
最後に、File#getText()はファイルの中身全部を読み込んでStringとして返す、というメソッドでJavaには無いけど便利だよ、と申しましたが、Java7ではFiles.readAllLines()メソッドが導入されたので、一気に読み込むことができるようになっています。こちらはString[]が返ります。寺田さんにご指摘頂きました、ありがとうございます。