• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

Java仮想マシン上でRubyを動かそう

[4]JRubyからJavaクラスを動かす

安藤 正芳=日経ソフトウエア 2012/12/06 日経ソフトウエア
出典:日経ソフトウエア2012年9月号pp.86-93
(記事は執筆時の情報に基づいており、現在では異なる場合があります)
目次一覧

 スクリプト言語内で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)。

ここから先はITpro会員(無料)の登録が必要です。

次ページ Java SE 7で導入されたInvokeDyn...
  • 1
  • 2

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

クライアント/OA機器

ネットワーク/通信サービス

セキュリティ

もっと見る