JRuby on Eclipse RCPに一歩近づくGlimmer絶賛開発中

InfoQ本家より、Rubyを使ってSWT/JFaceのGUIを書けるGlimmerというライブラリが絶賛開発中。Eclipse Foundationにも申請中のプロジェクトらしい。ちょっと振り返ってみたら、昨年12月に見つけたプロジェクトが順調に育っているものみたい。
hello_world.rbを転載しますね。

# Copyright (C) 2007-2008 Annas Al Maleh
# Licensed under the LGPL. See /COPYING.LGPL for more details.

require "java"
require File.dirname(__FILE__) + "/../src/swt"

class HelloWorld
  include_package 'org.eclipse.swt'
  include_package 'org.eclipse.swt.layout'

  include Glimmer

  def launch
    @shell = shell {
      text "SWT"
      composite {
        label { 
          text "Hello World!" 
        }
      }
    }
    @shell.open
  end
end

HelloWorld.new.launch

compositeとかをRuby DSLで書けるのが最大の特徴らしい。どうやってListenerを登録して行くのかが興味深い。せっかくなので、環境を整えてサンプルを動かしてみました。

  1. そもそもJRubyを落としていなかったので、配布サイトから最新版のJRuby1.0.3を落とし、解凍($JRUBY_HOMEとする)
  2. $JRUBY_HOME/binにパスを通す
  3. $JRUBY_HOME/lib以下にSWTのJarを入れる(もちろんフラグメントのJarも入れる)
  4. Glimmerは中でfacetsというライブラリを使っているので、rubygemsを使って取得した。コマンドはgem install facets
  5. Glimmerのサンプルフォルダへ移動して、jruby -rubygems hello_world.rbで動きました。

JFaceも動くんで、こんなビューも作れます。結構いい感じ。

正直Rubyが書けるというだけの人には、SWT特有のLayoutクラスに悩まされる気がします。なのでSWT自体が万人受けはしなさそうだと思ってます。(他のGUI Widgetを知らないので、この意見は微妙かもですね。)でもJavaでほげほげクラスのインスタンスを作ってはどーだこーだやるよりはかなりよさそうです。
Glimmer - using JRuby and SWT for Eclipse RCP apps