トップ «前の日記(2004-03-14) 最新 次の日記(2004-03-16)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-03-15

_ 新しいオモチャ

rjb。Ruby-Java-Bridge。

JNIを使って、RubyからJavaを呼び出す。

やってないこと:たくさん。

たとえば、メソッドシグネチャのチェックが大甘。

Rubyのオブジェクトの移出は手付かず。

配列の変換も後回し。

一応、役には立たないけど動くことは動く。

金曜の夜というか、土曜の朝からだから、2日の作業としちゃこんなもんが、僕の限界のようだ。

_ 寝坊

うひゃー、寝過ごしたよ。だから会社、休む。
rjbとWin32OLE(もちろん、参照してる)の相違。
  • Win32OLEはWin32OLEのインスタンスが、COMのインターフェイスのインスタンス
  • Rjbのインスタンスは、Classのインスタンス
    (GCの考慮が相変わらずだが、これはロード済みクラスのハッシュを持つことですぐに解決するから後回し)
使い方
予定だけどな
Rjb.load        # JVMのロード(自動でやればいいんだけど、一応あるのはテストの必要性)
JavaClass = Rjb.new('package.JavaClass') # Classのロード
jcInstance = JavaClass.new()             # インスタンス生成
jcInstance.some                          # メソッドは当面missingからだ。
jcInstance.Prop = 'hoge'                 # setPropから生成予定
p jcInstance.Prop                        # getPropから生成予定
jcInstance.invoke('method-name', 'method-signature', ...)
                         # overloadされてる場合、どこまで自動判定可能かがあるし
jcInstance2 = JavaClass.new_with_sig('II', 5, 10)
                         # テストの必要性からこっちは実装済み
class RubyObj
end
ro = RubyObj.new
Rjb.add_interface(ro, 'package.Interface') # 予定だけどな
jcInstance3 = JavaClass.new(ro)          # 移出できなきゃな
Rjb.unload               # JVMのアンロード。こっちはloadと違って必要な気がする
JNIの仕様を読んだのが一昨日からだから、まだ、こっちの世界が向こうでどうなるかわかってない(まだ読んでない)から、最後から2行目は違う方法になるかも。

_ TestUnit

使えよな。わかったよ。

_ うーむ

newでクラスをインスタンス化すると、いくらでも重複ロードできちゃうな。まあ、いいか。そんなことするやつが悪い。

って言うか、loadをJVMのロードに割り当てたのが敗因か。

_ なぜだ

TestUnit作ると、妙に実装が計画的になるぞ。って、先にテストを書くからってのが1つ、利用方法を先に考えるからってのが2つ目、と、あらためて再確認。

_ 0.0.2

rjb。Ruby-Java-Bridge。
staticメソッドの呼び出し。
しみじみと、
 if (x)    ---ここから
 {
 }         ---ここまでコピペしたもんで次の行のelseを忘れた
 if (y)
 {
 }
 else
 {
 }
で、時間を無駄にするとは……(処理は排他だがx && yという条件があるため)……伝説は遠い(あれは処理が無駄ってだけか)。
配列は未実装。
Rubyからの移出も未実装。
しかし、しばらく中断。

_ 偶然の悪魔

13日の分が更新(unoさんが突っ込み)されてたから読み返してみたら、なんか、情報占有->共有の陳腐化戦略(というより多分、P2Pのなにかについて考えてたみたいだが)のすぐ次の項目で、1年前の原稿を裏庭で陰干しみたいな流れになってる……馬鹿げてタイムリーなことだ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え