1read 100read
2011年10月1期プログラム★お前らJavaはJNIで組もうぜ★ TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
C++でXML(主にxerces)やろう!
C言語の第一歩
米国国防省の標準高等言語エイダ(Ada)を語れ!


★お前らJavaはJNIで組もうぜ★


1 :02/10/05 〜 最終レス :11/12/25
このすれ立てても一人としてレスはいるとはおもっちゃ
ねーけどさ
2ちゃんのアフォにはこのレス荒らすことぐらいしかできないと
思ってるぜ
お前らに期待を裏切るような書き込みをリクエストする

2 :
の仕切るスレなんか育てたくない。

3 :
育ててくれなくて結構よ

4 :

Java Native Interface プログラミング
ピアソン
ちょっと誤植あるけどね
JNIの資料ってあまりないからage

5 :
まあポイントはJava側のクラスメンバと
C/C++ネイティブで取り扱う引数とのせめぎあいかな

6 :
SWTを参考にすべし

7 :
1に2ちゃんのアフォを黙らせるような書き込みをリクエストする

8 :
C#並に簡単に書けるようになりませんか?
はっきりいってウザイです

9 :
>>8
お前みたいな能無しの書き込みをまってたんだよ
どんどん書いてくれ
俺はヴァカだからC#しかできねぇってな

10 :
C++からJVMコールしてますがなにか

11 :
>>1
お前がなにかってみろ

12 :
JavaからC/C++のバイナリをロードするにはJNIを知らないとできません
C/C++技術者がJNIを知るとJVMの起動から呼び出しまで自由自在
2ちゃんの方々は言語をやっているだけでperlがうざいだのアセンブラがえらいだの
入り口の部分でのみ優劣を競っている低脳君がほとんどです
大切なのは言語でなにがどこまで深く実現できるかを知ることです

13 :
>>12
> 大切なのは言語でなにがどこまで深く実現できるかを知ることです
「だったら、アセンブラがえらいよ。」と言う突込みしかこないぞ。
お前には、簡単にかつ安全に実現できる (=納期迅速、激安) と言う視点はないのか ?

14 :
>>12
アセンブラじゃ速くてもコストがあわないぜ
速さとメンテナンス性のバランスを考えた上でのJNIなんだけどな
アセンブラ偉いよ昔のCMOSさんみたいにVzエディタを全部アセンブラで
くむぐらいならな
表面でアセンブラ云々抜かすなよ
おまえもCMOSさんぐらいに組めるのなら尊敬するけどな

15 :
>>14
> アセンブラじゃ速くてもコストがあわないぜ
> 速さとメンテナンス性のバランスを考えた上でのJNIなんだけどな
こいつなんか勘違いしてねーか ?

16 :
15のような言うだけでアセンブラもCもできない厨房は放置ということで
そろそろJNIにいこうか

17 :
漏れはlong型のシグネチュアがLでは無い仕様に
結構驚いているけどね

18 :
>>17
Lはクラスの完全修飾ってアレか

19 :
>>16
> そろそろJNIにいこうか
ププッ、みんなついてこなくって寂しいねぇ。
まあ、アセンブラと JNI を比較してぐだぐた言ってる厨房の相手はしてられねーよな。

20 :
Windows + Java でクライアントアプリケーション開発してるけど、
JNI経由でWin32APIを適当に利用すると便利だね。
javaではスクリーンサイズしか取得できないけど、
JNI使えばタスクバーを除いたスクリーンのサイズを取得できるとか。
ファイルチューザーなんぞもWindowsの呼び出す方が楽だし。
みんなは、JNIでどんなことしてる?

21 :
>>20
Javaはmainだけで、残り全部nativeにやらせてる。
Javaのすごさを証明するのに便利(w

22 :
>>20
SystemParametersInfoのこと?
おいらはSWTの
OS#SystemParametersInfo(int uiAction, int uiParam, RECT pvParam, int fWinIni)
で取得するけどね。

23 :
おお!
ちょいとこない隙に
>>19〜22
ようこそ!
おいらもC/C++で作った過去の資産を
JNIでがんがん使ってるよ
なんたって
Write ... なんたらは糞くらえ
速くて再利用可能なJNI最高だぜぃ

24 :
JNIって本当にあるのでしょうか?
探しているのですが見つかりません。
もしかしてこれはネタスレでしょうか?

25 :
javac -h でJNI用のヘッダが生成されるYO!

26 :
>Windows + Java でクライアントアプリケーション開発してるけど、
>JNI経由でWin32APIを適当に利用すると便利だね。
うちの会社ではwindows上のクライアントアプリを作るために、
GUIとかAPIをJNIでラップしてるやつ買ったよ。
便利だね。
C#のライブラリーはなんであんなに糞なの?

27 :
>>26
> GUIとかAPIをJNIでラップしてるやつ買ったよ。
Javaって write once run anywhere がウリなのにそんなことしたら
意味ネーじゃん。馬鹿?

28 :
>>26
へぇ〜。何ていうやつ使ってるの?

29 :
>Javaって write once run anywhere がウリなのに
おいおい…。
いまや特定OSのAPIにも使われてるのに…。

30 :
>>24
JNI最高よ
27みたいなプログラムにパフォーマンスを求めない人は縁はないけどね
で顧客に「おたくの作ったの遅いから作り直せ」とか言われても
「Javaで組む仕様制限です」と逃げるわけね
今時Oracleでさえもネイティブに落としている現実を知らないのね
なによりも今までのC/C++資産をすべて使えるこれ本当
おいおい話していきましょ

31 :
>今時Oracleでさえもネイティブに落としている現実
既存部をJAVA向けにラップしてるんじゃなくて、
JAVA実装部をネイティブで書きなおしてるの?(厨でスマン

32 :
漏れはデプロイがめんどいEJBの代わりに
JNI経由でCOM+を使うのが利口だと思うが如何か?

33 :
>>32
COM+って何ができるのかいまいちわかってないモレに教えてクレ

34 :
>>33
COMはコンポーネント技術の総称
MSの仕様策定品目
ようは部品だ、VB用のGUI部品からスタートしているが
分散COMとしてWebのバックグランドサービスや
SQL DB操作用の javaBeanみたいな利用もできる
EJBはOOだ偉いだろうと言うヤシがいるかもしれんが
パフォーマンスはEJBの敵じゃないし STLで組めばCOMの内部はOOで実装可能
デプロイは簡単でGUIDと言う一意のクラスIDをレジストリに登録する
COMは仕様であり、汎用機、UNIXでも動作する
また、開発する言語はなんでもよい
OLE, ActiveX, COM, COM+, DCOMなどMSが節操の無い名称を付けたため
基本仕様の素晴らしさをスポイルしている嫌いがある

35 :
> COMは仕様であり、汎用機、UNIXでも動作する
MSが仕様を公開しないから、
EJBやCORBAから接続できないって話を聞いたが?
>基本仕様の素晴らしさ
CORBAより、どの辺がすばらしいの?
煽りじゃなくて、普通に知らんのです.

36 :
>>34
分散オブジェクトサービスみたいなんもんでしょーか。
あれ?そうするとDCOMとの違いが分からん...

37 :
>>26
へー、売り物でそんなラッパーがあるですか?
良かったら製品名とか教えてもらえませんか?
>>27
write once run anywhere なんて言ってる人がまだいたんだ…
今、javaに魅力を感じてる開発者って「どこでも動く」ということより
言語仕様、充実してきたクラスライブラリに惹かれてるのではないかと。

38 :
>>37
ああ?Java厨召還するぞコラァ

39 :
良スレage
>>27
SWTじゃなくて?

40 :
って、ageてねーよ、俺(鬱

41 :
JNI使うと遅くなるんだよ
知らないの?

42 :
JNI通すところ自体はね。

43 :
>>41
詳細キボンヌ

44 :
>>43
これに載ってたよ。
http://www.amazon.co.jp/exec/obidos/ASIN/4894713934/ref=sr_aps_b_/250-0833969-8419468

45 :
>>41
確かにね
Cのコードをラップして利用するわけだから当然だよね
呼び出したあとのビジネスロジックなどがJVMの動作より
トータルで速ければいいわけですよね
あと、A/D変換のソフトウェアなんてJavaからコールして作成できるし
アイデア次第でJavaの世界も広がるわけですよね

46 :
>>37
>>言語仕様、充実してきたクラスライブラリに惹かれてるのではないかと。
そのとおりだよね
言語仕様は良い!
しかし、かゆいところまでは手が届かない
だからJNIなんだよね
>>38
ここはJNIを応用して幅広い応用技術を含めた情報交換をする場所です
Javaオンリーの狭い了見の人は連れてきても浮いてしまうよ
どうせ実装が美しいとか、他の言語は糞だぐらいしか言えないんでしょうから
どうせつれてくるのならC/C++でCORBAする人とか
EJBのプロを連れてきてね
あっきみに質問だけど
JVMのローカルスタックのデフォルトサイズって知ってる?

47 :
>>35
MSはCOM仕様は完全公開しているよ
COMは独占物ではないよ
CORBAとの比較は一言では語り尽くせないのだけど
昔CORBAの立ち上げ時にはAPIレベルでの仕様の統合が行われていないために
実装費用がかかりすぎたとの話があります
COM仕様はその辺枯れている
スレ違いかもしれんがJNIから利用する可能性が高い技術ということで
-----------------------------------------------------------------------------------
サービス COM CORBA
-----------------------------------------------------------------------------------
ライフサイクル IUnknown IF ライフサイクルサービス
恒常記憶域管理 パーシステントストレージ パーシステントサービス
マーシャリング制御 IMarshal IF なし
アウトバウンド制御 IConnectionPoint IF なし
セキュリティ Identification Identification
Authentication Authentication
Integrity Integrity
Confidentiality Confidentiality
ServerActivation
AccessControl AccessControl
Delegation Delegation
Nonrepudiation
トランザクション管理 MS-TransactionServer ObjectTransactionServices
(Viper)
プロパティ管理 MS-ActiveDirectory PropertyServices

48 :
> JVMのローカルスタックのデフォルトサイズ
は、8Mでしょうか・・・

49 :
スマンずれてしまた
なにがなんだかわからん糞かいてもうた

50 :
>>31
亀レスだが
PL/SQLと同様な機械語コンパイル済みコードをサーバに持っているし
オラクル独自実装のネイティブコンパイルを搭載している
この事実は、オラクルもJVM(所詮インタプリタ)のパフォーマンスを問題視しているという事
の表れと思われる
コマンドラインツール名は ncomp

51 :
でも、COMをそういう使い方するのは終わりだってね。
.netとかsoapだって、これからは。
OSの中でまだ使われるかもしれないと。
JNIなんて特定のAPIが呼び出したい時くらいしか使わないなぁ。
そんな事もめったにないんだが。
人生に一度あるかないか・・・

52 :
>>51
遊びでSOAPToolkitいじったら、
(SOAPの)アプリをCOMにしろとか言われたYO!
まあ、SOAPToolkit自体がRemotingとかへの
つなぎに過ぎなかったのかもしんないけど.

53 :
>>51
このスレは使う必要がなくても無理して使いたい人が集うスレにしたかったのです
51もスキルがあるのだから無理して使ってくれる事をキボーン

54 :
>53
正直JNIってあんまりいい印象無いのだけど。
以前COMで開発したアプリをJavaから使いたいって言われてJNIを調べてラップしてみようと
したのだけど、結局COMのオブジェクトをJNIのコードで生存管理しなきゃならんかったような
気がしてベラボーに面倒くさくなってやめさせた。
ひょっとしてそれは俺が厨だからか?(笑
ところでrun anywhereってもう化石なの?
ポータビリティとパフォーマンスはトレードオフで考えるのが普通な気がする。
世の中そんなにクリティカルな案件ばっかりなの?

55 :
>>54
昔からマルチプラットフォームを謳うソリューションやツールは
必ずパフォーマンスが悪かった事を体験的に知っている俺はrun anywhereで売り出した時から
Javaの事信じてなかったわけだす
さらにservlet黎明期にJDBCを利用して開発したときに原因不明のトラブルとか多発して
また嫌いになったわけだす(最近はずいぶん良くなりましたけど)
そして顧客の要求はシビアでプラットフォーム依存な事をクリアしないと
要求が満たせないことがあってJNIだったわけです
COMについては
COMで実装しているコードをDLLバージョンに落とし込んで(単にコピペ)
利用するといういささかダサい方法もありますよね
 あ〜しかしこれだと工数削減にはならんか、またテストしなきゃならないもんなぁ
JNIとC++の関係は確かに微妙な仕様制限があるようで
追って追跡していきましょう
JNIのポータビリティってそんなに悪くないと思うけどね
ようはプラットフォーム依存のところをうまく#ifdefしていけばよいし
コールするFunction/Methodを切り替えられるよう作成すれば良いのだし
まあこれらを実現するには
多数プラットフォームでコンパイルビルドできてプラットフォームについて
深く知っている必要があるのだけれども

56 :

とりあえずJNIをすらすらとくのに必要な
UNICODE->SJIS変換サンプル(Win32)
作者に感謝
http://www.ki.rim.or.jp/~kuro/Java/JNI/JNI-03.html

57 :
age

58 :
一口ポイント
サーブレット
コンパイルして配置したJNI利用のサーブレットの場合
例:Apache+tomcatの場合
Servletコンテナサービスをリロードする必要がある
tomの場合shutdown -> startup
JVMがstaticロードしているからか

59 :
一口いんと
C関数内でのJNI引数の利用方法
数値型はCの該当型にそのまま代入可能
String型だけやや操作する必要あり

60 :
開発環境作成例
JDK1.3とVC++6.0の例
フォルダを作成する
jnihogeroot--------------------vcppprj---------relese
                     +
                     +----debug
VC++のプロジェクトは vcppprjに作成する
  relese, debugはVC++が勝手に作成するフォルダ
jnihogerootに置くファイル
jnihoge.java ..... JNI原始ソース.java
c.bat    ...... コンパイルした後でVCプロジェクトにコピーするバッチ
 ↓
内容
javac %1.java
javah -jni %1
copy %1.h vcppprj
使い方
C:\vcpprj>c jnihoge [Enter]
これでjavahで作成された.hをVC++プロジェクトにコピーしてくれる
VC++のIDEにフォーカスを当てると
「外部のエディタで更新されました・・うんぬん」の表示がでるので
OKを押して、.hの定義を.cppの適当なところにcopy
仮引数をてきとうにセットして関数の中身を書く
VC++をビルドしていっちょうあがり
簡単楽しいJNI

61 :
スマンまちがえ
C:\vcpprj>c jnihoge [Enter]
  訂正↓
C:\jnihogeroot>c jnihoge [Enter]

62 :
保守

63 :
の仕切るスレなんか育てたくない。

64 :
Java Native Interface?

65 :
JNI呼び出しがあるとHotSpot最適化等が阻害されるのかなあ?

66 :
>>65
もすこし詳しくお願い

67 :
>>66
ごめん。言葉間違えてた、jit化だ。しのう。

68 :
>>67
JITね IBM社のテクノロジっすね
JITでネイティブ化されたオブジェクトって
あなたの環境ではどこに置かれるの?

69 :

70 :

71 :

72 :
hoshu

73 :
JINIのスレはここですか?

74 :
>>68
JIT って言えば首藤氏の shujit では?

75 :
jfieldID fid = env->GetFieldID(cls, fname, "I");
でINT型のならフィールドIDをとれるんですが
jfieldID fid = env->GetFieldID(cls, fname, "L");
オブジェクト型のがとれません。
どうすればよろしいか?

76 :
JNDIって知ってる?

77 :
>>76
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jndi/
コレっすか? でもコレ JNI と関係ないよね。

78 :
>>75
ドキュメントによると
>L fully-qualified-class ; 完全指定のクラス
だそうだ。

79 :
例えば "Ljava/lang/String;" とかやるみたい、たぶん。

80 :
まず普通に一本Javaアプリこしらえて、それをその後、ガッツンガッツンのキッリキリに
JNIに置き換えて...というか全て中身DLLに挿げ替えて、最終的に static void mainと、
そこから連なる一連のメソッドのインタフェースだけをJavaとして残す。
つーか、エントリ以外ほぼ全てnative宣言。
....っていう強姦まがいのコードが書きたい。いや、むしろ一度書いてみたい。
write once , run here only.

81 :
ちなみに、当然DLL内ではバージョンの限定されたMFCランタイムや、
何かをインストールしていないと絶対にインストールされないCOMを
ギュゥオンギュゥオンに使用。
write once , run now.

82 :
write once, debug anywhere

83 :
>>80
>最終的に static void mainと
…。
やりたきゃやれば?
GC とか名前による動的バインディングとかの恩恵を
全部 omit するなら Java でやる必要ないし。

84 :
>>83
御意!! まさにおっしゃる通りィッ!!
というより、すでにJavaで無しッッッ!!

85 :
>>80
それだったら C言語 のソースをJavaのバイトコードに落とせるコンパイラとか書いた方が面白そう。

86 :
>>85
素晴らしいィィッ!! 隊長ッ!!
全ッ然意味の無いシロモノだが、イイッ!
自分、書いてみたいでありますッ! でも仕事量がマジ半端無ェ勢いに
なりそうで、寝小便しそうでありますッ!

87 :
ふつうにCやらC++で書いて、それを、main()だけをエクスポートするdllにして、
javaのmainからキックすればええやん。

88 :
>>87
(゚听 )ツマンネ

89 :
>>88 ← 彼は自分では無いでありますッッ!!
でも、それではつまんないという事には禿げて同意でありますッッ!!

90 :
>>87
っつーか Runtime.exec() で(以下略)
素直にネイティブアプリに(以下略)

91 :
>>90
Runtime.exec()には胴衣ですが、
Javaアプリケーションのプラグインとしてネイティブアプリ
ケーションをコールするっていうのは、あるのかもね。

92 :
anywhereでrunしないけどね。

93 :
そんなに、まともなソフトつくりたいんならさ、きっぱりJava捨てたら?

94 :
>>93
Java捨てて 何使ったら良いでしょうか?

95 :
>>92
JNIを使うという前提での話にそういう突っ込みしますか…

96 :
>>95
JNI使う != run anywhere じゃないような。
Java の標準ライブラリだって JNI 使ってんだし。

97 :
>>93
チャンポンしろ。
なんでもつかえ。
いいとこどり。

98 :
>>94
C#使ったらどうだ?
それでもしJavaと同じように糞だとわかったら、
その頃には次の言語が出てるから、新言語に乗り換えろ。

99 :
>>98
それって延々と糞言語使い続けるって選択肢ですか?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼
・ 次のスレ
C++でXML(主にxerces)やろう!
C言語の第一歩
米国国防省の標準高等言語エイダ(Ada)を語れ!