ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

JNIでSJISを扱う方法

2006-06-24 12:29:20 | PG(Java)

JNIでSJISの文字列を扱う関数を作ってみた。

実質は「new String(バイト配列, "MS932")」とか「str.getBytes("MS932")」をやっているだけだけど。
C/C++側でこれをやって、charの配列にして返すことに意味がある。
Java側でこれをやってSJISのバイト配列を渡すようにしても、C/C++側でけっきょくバイト配列からcharの配列を取得する必要があるから。それなら全部C/C++側でやっちゃいたいよねー。

ところで この関数では、関数内でしか使わないワークとしてStringやbyte[]のオブジェクトを作り出しているが、少なくともJavaへ制御が戻らないとGCでクリアされないよなー。(そもそもJNI関数の中でGCが動くことがあるのかどうか不明だが)
つまり何度も呼び出していると無駄なオブジェクトがどんどん溜まっていくわけだ。
使わなくなったことを示すJNI関数とかがあればいいんだけどなー。

あと、char配列はmallocを使ってfreeで解放するというベタな方法を採っているが、C/C++なので、解放し忘れって当然考えられるわな。JNIのRelease系関数って、やっぱり同じなのかなぁ。もしJavaに戻る際に自動的に解放するような機構をとっているなら、それと同じやり方にしたいよなー。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JNI 例外

2006-06-24 04:38:20 | PG(Java)

JNIでの例外処理を補足。

「catch(Exception e)」を実現するだけでも、クラスを取得したり色々しなければいけないので面倒だな~。
まぁ、C/C++の中でわざわざJavaと同じようなそんな処理を行おうとするのが間違いかな。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Eclipse3のjadClipse

2006-06-24 02:42:41 | PG(Java)

Eclipse3.1にjadをインストールする手順をメモ。

基本的にEclipse2のときから変わっていないのでほとんどコピペ(笑)
しかし若干手順が楽になっている部分もある。

ところでjadのダウンロードページを見たら、Eclipse3.2用というのがあった…。
比較的最近Eclipse3を入れたつもりだったのが3.1なのに、いつの間に3.2なんてものが出ていたんだ(爆)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする