|
||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||
| 自作クラスの呼び出し | ||||||||||
|
続いて、「第2回:JRubyでHello, Worldを実行する」で紹介したjirbを用いて、リスト2のように自作クラスの呼び出しを実行します。 リスト2:JRubyからの自作Javaクラス呼び出し
irb(main):001:0> require 'java'
|
||||||||||
| リスト2についての解説 | ||||||||||
|
それではリスト2を基に、その動作を見ていきましょう。 |
||||||||||
| Javaクラスのロード | ||||||||||
|
2行目で先ほど作成したJavaクラスを読み込みます。JRubyは環境変数CLASSPATHで指定されたパス配下から該当するクラスを取得しています。 |
||||||||||
| Javaクラスのnew | ||||||||||
|
3行目でJavaのクラスをnewしています。Javaのクラスでも問題なくrubyスタイルでnewの記述をすることができます。 |
||||||||||
| アクセッサの自動変換 | ||||||||||
|
4、5行目に注意して下さい。これはnameというプロパティの値を直接読み書きしているわけではありません(private宣言されているのでアクセスできません)。これは、nameというメソッドの呼び出しをしています。 つまり、JRubyは「getName」「setName」というJavaの慣習に従ったアクセッサメソッドを、「name」「name=」というRubyの慣習に従ったアクセッサメソッドに変換してくれているのです。 |
||||||||||
| JavaクラスとRubyクラスの自動変換 | ||||||||||
|
4〜8行目の実行時にはStringやint、ハッシュの型変換が相互に行われています。特に8行目のようにRubyの記法でハッシュや配列が記述できることは、簡潔なソースコード記述へつながります。 |
||||||||||
| 便利なメソッドの利用 | ||||||||||
|
9行目ではJavaのMapクラスでは定義されていないeachメソッドを呼び出しています。mapはeachなどとともにRubyの「ブロック(一般的にはクロージャと呼ばれる)」を利用した強力なメソッドです。 |
||||||||||
| キャメルケース⇔アンダースコア変換 | ||||||||||
|
10行目ではshout_your_name_and_ageというメソッドが呼ばれていますが、これはJava側で定義した「shoutYourNameAndAge」というメソッドを呼び出しています。アクセッサの場合と同様に、Javaの慣習に従いキャメルケースで書かれたメソッドを、Rubyの慣習に従ってアンダースコアで呼び出せるように変換してくれています。 いかがでしょうか。JRubyは、RubyからシームレスにJavaのライブラリを利用するために、慣習なども含めて非常に気の利いた変換作業を行っていることがおわかりいただけたでしょうか。 |
||||||||||
| Javaのオープンソースライブラリを利用 | ||||||||||
|
続いてJavaのオープンソースライブラリとして有名なログ出力ライブラリ「Log4J」をJRubyから呼び出してみます。 |
||||||||||
| Log4Jの導入 | ||||||||||
|
Log4Jを下記のURLを辿ってダウンロードします。
Log4Jのダウンロードサイト
http://logging.apache.org/site/binindex.cgi ダウンロードしたファイルを解凍するとLog4Jのjarファイルが生成されますので、これを「JRUBY_HOME\lib」に配置します。先ほど説明した通り、この場所に配置することでクラスパスを指定しなくてもJRubyから認識されます。 |
||||||||||
| 設定ファイルの作成 | ||||||||||
|
Log4Jの利用には設定ファイルが必要です。そのため、任意の位置にリスト3のように設定ファイルを作成してください。今回は「c:\work\jruby_sample\log4j.properties」というファイルに記述しました。 リスト3:log4j.properties
log4j.rootLogger=DEBUG, A1
この設定で出力フォーマットなどの情報を設定しています(設定ファイルの詳細は割愛します)。 |
||||||||||
|
前のページ 1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||

