ソースコード
775 :
デフォルトの名無しさん:2011/04/30(土) 00:27:38.02
>>774 具体的にどこにたくさんある?ググって出てきたの手当たり次第か?
OpenJDKやHarmonyのランタイムライブラリのJNI部分はどうよ
778 :
デフォルトの名無しさん:2011/05/01(日) 10:25:17.20
>>777 英語読めるのか?すげーな
俺は全く分からん
>>772 MS932 <=> UTF16 <=> UTF8 の2段で変換するから重いんですよね。
C++側をUTF16で組めばいいかな。
intとかcharプリミティブの配列も参照渡しできずに値コピーするしかない?
GetPrimitiveArrayCritical ならコピーせずに済むかもしれないけれど制限が多いので注意が必要
今やJNAの時代ですよ?
JNIなんて今時使ってんなよw
>>780 C/C++からJava呼ぶときはそういうのがあるんだね。
JavaからC/C++呼ぶときに同様なものある?
>>782 NewDirectByteBuffer使ってjava.nio.ByetBufferを受け取る。
どのタイミングでポインタが無効になるかの管理が杜撰だとバグの温床になるけどね。
逆じゃね
そもそもプログラムしてる時点でバグやメモリリークを見込んでおくべき。
完璧なアプリにであったこと無いもの。世の中のプログラマの大半はポンコツ。
786 :
デフォルトの名無しさん:2011/05/22(日) 13:53:49.99
JNI、Cで組んでみたんだけどすげー面倒臭い…
ベターC的なノリでC++でやることについてどう思う?
>>781 CからJVMにアクセスする場合はどうすんの?
なぜJava狂信者はJavaがC#よりも優れていると言うのか
JNI使ったらJavaのアドバンテージ無いだろ
jniでc#を下請けに使える。
そもそもJNIなんて仕方なく使うもんだろ
java、C#優劣論争なんて他所でやれw
791 :
デフォルトの名無しさん:2011/05/24(火) 11:07:14.14
むしろ積極的に使って楽しんでる。
cの世界、javaの世界だけで済ませるのでは選択肢少ないし。
javaで描かれたデバドラやosなんて無いし、cで描かれた移植性の高いアプリも無い。
男だけの会社とか女だけの会社が無いのと同じ。それぞれに剥いた仕事させれバいいじゃないの。バカと挟みは使い用。所詮目的を達成する手段にすぎない。
にほんごでおk
794 :
デフォルトの名無しさん:2011/05/29(日) 10:30:54.03
やっぱりここの人たちは皆JNI使いか?JNAとか使っている人いるの?JNAeratorとか使いやすくないのか?
795 :
デフォルトの名無しさん:2011/05/31(火) 21:07:45.86
ネイティブのメソッドにJavaのクラスを入れて、メソッド内で削除してメモリ解放したら
ガーベージコレクトは走らないという事なのかな?
JNI上で作成したオブジェクトは別メモリ管理だからしっかりガベッジコレクタの対象になるとおもうよ
でも、使用方法誤るとEJBみたいにVMが暴走する
そこはそういうもんだな。糊で張り合わせて動かしてるものだし。ウマく動くほうが奇跡的w
ちゃんとメモリ喰い潰しを検出して定期的に再起動かます様な運用で対処してる。原発に津波じゃないけど予め想定しておけば対処方法は有る。
cでもメモリリークしまくってる屑アプリはいくらでもあるし。
なるほど、JNI側のメモリとJava側のメモリは別々に考える必要があるのですか
ちょっとしたメソッドをネイティブにするくらいなら大丈夫そうだけど、
クラスとか大きいものをネイティ管理するのは大変そうだ
799 :
デフォルトの名無しさん:2011/06/10(金) 01:27:39.63
Java→Native(C言語)の呼び出しで、引数に文字列領域設定して
Native側でそこに文字列設定するのってどうやるんですか?
(Native関数のポインタ渡しみたいなイメージ)
#Native側でのSetObjectArrayElementによる文字列配列渡しなら見つけたんですが。。。
普通にchar[]とかbyte[]渡して設定して貰うんじゃダメなん?
java.nio.CharBufferとかjava.nio.ByteBufferでもいいけど。
そこはjavaとcは別の世界だから、欲しいデータがあれば直接中身をやり取りしないと駄目なんじゃない。
cpuのコアが違って、レジスタ参照が出来ない様な感じ。一旦バス経由で自分の世界に持って来ないと使いにくい。
ハードウェアのnumaみたいな共有メモリで性能を稼ぐ様な実装はまだjniには無いかと。ぐぐってもmmap共有しちゃうような実装は無さそう。
java.nio.ByteBuffer#allocateDirect()すりゃいいだけだな。
StringBufferっていう便利なクラスがあるのを知らんのか?
そのレベルの人が触っちゃいけないもんだがな〜
趣味マが無駄にパフォーマンス気にしてどっかで騙されて来てんのかね?
Eclipsからさっくりnativeのヘッダ作ったり、JNIのコンパイルする方法って無いでしょうか
ant使えばできないことはない
できないことはない。ということは鉄板の方法は特にないと言うことですか
やっぱ、ちょっとハードル高いなぁ
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ゴミって意味わかってんのかなこいつら
これ。句点っていうんだけどさ、これをつけずに文章が成立するような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど。
もしかして「。」これ打たずに文章の終わりにするのが楽しいの?
そうか、二度と話かけんなよ。
ゴミって意味わかってんのかなこいつら。
>>807 ∨∨∨∨∨∨∨∨
(((((( ant使えばできないことはない ))))))(きリッッ!!ッッッッ!
∧(キリッッッッ!!!
でもお前はゴミなのにねw
JavaからC系を呼べるのは良いとして、そのCからJava側のサービスを使いたい時は、手段はあるの?
例えば音を鳴らすAPIがJavaにしかない処理系とかで、C側の処理の途中で音を鳴らしたくなった時とか。
あるよ
815 :
デフォルトの名無しさん:2011/07/11(月) 00:58:43.30
JNAerator使っているやついる?
便利?
816 :
デフォルトの名無しさん:2011/07/27(水) 18:15:13.68
今日JNIの本を買おうか買うまいか迷ってしまった。古い本ではあるが、
何回も刷られているから良書なのかな?
買ったらレポよろ
819 :
デフォルトの名無しさん:2012/04/12(木) 15:12:38.02
過疎ってるな。androidやってる連中が書き込んでるかと思ったが。
板的に情報書き込みにくる人が少なくなったと思うから、ここも同じく。
jni自体に語るほどの内容がないよね
単にシェアードライブラリやdllのインターフェース
定義してるだけだし、業務資料作った事あるけど
A4用紙一枚半で十分だった。
板どころじゃなくてにちゃんごとだな。
にちゃんにくるより他所の無料サイトのほうが詳しい人や中の人そのものが答えてくれたり。
元々オープンソースで誰が作ってるかモロバレだったしユーザ会繋がりも密だったから、わざわざ制限が多くて印象悪い匿名掲示板の価値が消失しちゃってる。
単純に無関係な規制に巻き込まれて、情報提供車が逃げ出しちゃったってのも大きいだろうけど。
若い人ほど、にちゃんから離れて各種snsで満足してるのも学生とかの新規参入が減って過疎高齢化招いてる要素か。
京大の入試問題を知恵袋で聞いてるなんて象徴的だったし。若者ほど、もうにちゃんの存在意義失ってる。
情報というか書き込みがコンテンツなんだから、書き込み減ればにちゃんの価値が下がるのは自明だしな。それを書き込ませない規制で加速させてたらそりゃ氏ぬ輪。
処理自体はjniライブラリを介して伝言ゲームしてるのとな時だしな。
福島原発ー東電ー経産省ー官邸ー総理
と同じ様に
javaのクラスーjnixライブラリーcライブラリ
で伝言ゲームしまくってる。
使い方だけ示せば、あとは呼び出す側のapiやクラスの仕様そのまんまだし。
もう少し進めて、どういう用途か絞り込めれば、包んで呼び出す側のクラスやapiの仕様に合わせてしまって使いやすく用意もできる。
アンドロイドはまだ混沌としすぎてるから、手を出しにくいんじゃない。
nexsus oneとかギャラネクみたいな特定機種で動けばいいだけならばりばりjnixで呼びまくってもいいだろうけど、
逆に国内機種とか搭載アプリの特定ハード向けの作り込みでは、バリバリ多様化されているんじゃない。べつにjniしなくてもcで全部作っちゃってもいいかもしれないけど。
日本語でおか