スクリプト言語内でJavaクラスを呼び出す方法は、各言語によって異なります。ここではこれまで使ってきたJRubyの方法を紹介します。 JRubyをインストールすると、コマンドプロンプトからJRubyのプログラムを実行できるようになります。ここからはコマンドプロンプトを使って開発を進めていきましょう。

 まず、標準のJavaクラスを呼び出します。最も基本的な「java.lang.System」というクラスを呼び出してみましょう(リスト10)。このプログラムをlist10.rbというファイルに保存してコマンドプロンプトから実行してみましょう。 JRubyのプログラムを実行するには、「jruby プログラム名」と入力します。たった3行のプログラムですが、無事に実行できましたか。

リスト10●JRubyからJavaクラスを読み込むプログラム
[画像のクリックで拡大表示]

 プログラムを見れば一目瞭然ですが、簡単に説明しておきます。 1行目はまずJavaライブラリの読み込みの部分です。 JRubyでJavaライブラリを利用することを宣言しています。このように記述をすると、以降のプログラムでJavaのライブラリが利用できるようになります*2

 2行目がJavaのクラスをインポートしている部分です。Javaと書き方は同じですが、 JRubyではimportメソッドになります*3。このimportメソッドで、 Javaの基本的なAPIであるjava.lang.Systemクラスをパッケージ名なしで呼び出せるようにしています。 importしない場合は、「java.lang.System.out.println( )」のように、 FQDNでメソッドを記述して同様に動作されられます。

 3行目がメソッドの呼び出しの部分です。 JavaのSystem.out.printlnメソッドを実行して、文字列の出力をし、JRubyスクリプトからJavaのライブラリを使って文字列を出力しています。

*2 require 'java'の宣言をしなければ、JRubyは単なるRubyクローンとして動作します。
*3 importメソッドは、include_classメソッドの別名です。

クラス名の衝突に注意

図6●クラス名の衝突に注意
[画像のクリックで拡大表示]

 Javaのクラスを利用する場合、注意しなくてはいけないことがあります。それは、 Javaのクラス名とJRubyのクラス名が同じ場合です。 JRubyに存在するクラスと同じ名前のJavaクラスをimportすると、 JavaクラスによりJRubyのクラスが隠ぺいされてしまうことがあります。

 例えば、 JRubyにはFileという名前の組み込みクラスがあります。同じくJavaにも、java.io.Fileというクラスがあります。 JavaのFileクラスをインポートしてしまうと、従来のJRubyのFileクラスが上書きされて、本来のJRubyのFileクラスにアクセスできなくなってしまいます(図6)。

この先は会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら