Skip to end of metadata
Go to start of metadata


GroovyはきれいにBSF(Bean Scripting Framework)と統合しているので、任意のスクリプトエンジンをJavaコードに埋め込むことができ、特定のスクリプトエンジンからJavaコードを分離した状態を保つことができます。


GroovyのBSFエンジンはGroovyEngineクラスによって実装されています。しかし、その事実は、通常はBSFのAPIからは隠されています。BSFのAPIを介してGroovyは他のスクリプト言語と同様に扱われます。


注:Groovyは独自にJavaとの統合をネイティブサポートしています。詳細はJapanese Embedding Groovyを参照してください。なので、もしJavaから他の言語(例えばJRuby)を呼び出したいような場合や、あなたのスクリプト言語からの疎結合を残しておきたいといった場合のみを考慮する心配するだけで構いません。

はじめてみよう


GroovyとBSFのJarがクラスパスにあれば、以下のようなサンプルのGroovyスクリプトを実行するJavaコードを使うことができます。

変数を渡す


BSFは、Javaとスクリプト言語間でBeanを渡すことができます。BSFに通知するBeanの登録と解除を行うことができます。もう一つの方法として、Beansの宣言と解除を行えます。これは、それらを登録するだけでなく、スクリプト言語からも直接使用できるようになります。この第二のアプローチは、Groovyで使用される一般的な方法です。以下が具体例です。

その他の呼び出しオプション


前の例では、evalメソッドが使用されていました。BSFはさらに複数のメソッドを使用可能にします(詳細はBSF documentationを参照して下さい)。利用可能なその他のメソッドの一つが apply メソッドです。スクリプト言語で無名関数を定義し、引数にその関数を適用することができます。Groovyはクロージャを使用することで、この機能をサポートしています。以下が具体例です。

スクリプトエンジンへのアクセス


通常は必要としないけれども、BSFはスクリプトエンジンを直接取得することができるフックを提供しています。エンジンが実行できる機能の1つは、オブジェクト上の単一メソッドを呼び出すことです。以下が具体例です。

過去の興味深い点


もし最新バージョンのBSFと統合しなければならない場合(先立ってbsf 2.3.0-rc2を使うような場合)、以下のようなコードスニペットを使って、手動でGroovy言語をBSFに統合する必要があります。

  • No labels