BT

待望のリリース、もっと Groovy に!

| 作者: Craig Wickesser フォローする 0 人のフォロワー , 翻訳者 岡田 英久 フォローする 0 人のフォロワー 投稿日 2009年3月13日. 推定読書時間: 3 分 |

俳優のクリストファー・ウォーケンは以前サタデー・ナイト・ライブで寸劇を演じ、その中で、「自分の熱を下げるにはカウベルがもっとたくさん必要だ」と声高に語っていた(リンク)。それとおなじように「開発をもっとグルービーに」と語る人々の声を、Groovy チームははっきりと聞き、彼らの開発する受賞経験もある言語 Groovy のバージョン 1.6 をリリースした(リンク)。リリースページには以下のとおり (リンク) 、たくさんの新機能について記載されている。

  • 実行時パフォーマンスの大幅な改善
  • 多重代入および、if/else や try/catch ブロックにおける return の省略
  • AST 変換と、@Singleton、@Lazy、@Immutable、@Delegate などの変換アノテーションの提供
  • Grape モジュール、依存関係管理システム、@Grab 変換アノテーション
  • Swing ビルダのさまざまな改良(Swing / Griffon チームに感謝したいhttp://griffon.codehaus.org
  • Swing コンソールもいくつか改良
  • JMX ビルダの統合
  • JSR-223 スクリプティングエンジンのビルトイン
  • EMC DSL、POJO にもインスタンスごとのメタクラスを実現、実行時のミックスインといった、メタプログラミング機能のさまざまな改良
     

今回のリリースの目玉のひとつはパフォーマンスである。Groovy チームは 150 %~ 460 %にもおよぶ劇的な改善を実現したと主張している(リンク)。その他の機能としては、JMX ビルダ(リンク)の公式な統合がある。これは、コミュニティの努力が Groovy の改善に貢献したもうひとつの例だ。

以下は、多重代入や AST 変換など新機能のいくつかを使ったサンプルである。

// このクラスのプロパティは一旦オブジェクトが生成されると変更できない
@Immutable final class ServerConfig {
  String url
  int port
}

def getServerInfo() {
  ['http://home.net', 8080]
}

// Immutable(変更不可能)なオブジェクトにプロパティをセットしようとするメソッド
def setUrl(config, newUrl) {
  try {
    config.url = newUrl
  }
  catch (ReadOnlyPropertyException ex) {
    ex
  }
}

//多重代入
def (url, port) = getServerInfo()

assert url == 'http://home.net'
assert port == 8080

def config = new ServerConfig(url, port)

assert config.url == url
assert config.port == port

// Immutable(変更不可能) なオブジェクトのプロパティを変更しようとするメソッドを呼び出す
def result = setUrl(config, 'www.google.com')

// プロパティの変更が失敗したことを確認する
assert result instanceof ReadOnlyPropertyException

 

上記の例は、 @Immutable AST 変換をつかえば書込み禁止オブジェクトをどれほど簡単に作成できるかを示してくれる。また、この例は新たに導入された多重代入機能のつかい方も実演してくれている。AST 変換(リンク)についてもっと知りたい方は、Groovy ユーザガイドを見てほしい(今のところ @Immutable 変換しかカバーしてないが)。

この記事では Groovy 1.6 が提供する機能の概観をざっと眺めたので、次は Groovy プロジェクトのマネージャである Guillaume LaForge 氏が InfoQ に書いた、Groovy について掘り下げた記事「Groovy 1.6 の新機能(参考記事・英語)」をチェックしてほしい。Guillaume 氏は新機能それぞれをカバーし、それらの機能のすべてを知る手助けとなる多くのコード例を提示してくれている。

原文はこちらです:http://www.infoq.com/news/2009/03/groovy_1_6

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT