- PR -

JNIについて

投稿者投稿内容
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-06 16:18
検索語
java vb dll

Java-COM Bridge
で検索 してみましょう
C/C++による高いプログラミング能力 http://www.google.co.jp/intl/ja/jobs/eng.html

[ メッセージ編集済み 編集者: MMX 編集日時 2005-12-06 16:29 ]
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-06 16:49
java vb dll 辺りの検索語では色々検索しているですが、
コードの例が載っているサイトが見つかりません・・・。

ご存知の方がいましたらご教授願います。

Java-COM や Bridge という言葉は初めて聞きましたので、
現在調査中です。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-06 17:26
こんにちは。

引用:

ヒロピンさんの書き込み (2005-12-06 15:29) より:
他システムから提供されたdllは、Cで作ったdllではなく、
VBで作られたdllでした・・・。



作成したVBのバージョンは分かりますでしょうか?
VB6以前とVB.NETで作られるDLLは別物になります。

・VB6以前のdllはActiveX DLLになります。
・VB.NETのdllはマネージ(CLRで動作する)DLLになります。

どちらの種類のDLLか分からなければ、ツールを使えば判別できますが
いずれにせよ、COM(Component Object Model)による呼び出しとなると思います。
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-06 17:52
Tdnr_Symさん回答ありがとうございます。
VBのバージョンは6.0です。

COM(Component Object Model)を使用してVBで作ったdllを呼んでいる
サイトや方法をご存知でしたらご教授願います。

こちらには詳しい人間がいないので、手も足も出ない状態です。

よろしくお願い致します。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-06 18:48
こんにちは。

JNIはC言語だけではなくC++も使えますよね。

COMを使用されるなら、C言語よりC++のほうが良いと思います。
VC++なら尚良いと思います。

VB6で作成したDLLは、「デュアルインターフェイス」のCOMとなります。
つまり、「ディスパッチインターフェイス」と「カスタムインターフェイス」の
2つのインターフェイスを公開しています。
このことは、2通りの方法で呼び出しが出来ることを意味しています。

手前味噌になりますが、CからC#を呼ぶ方法
 2.COMのディスパッチインターフェイスを使った呼び出し方
 3.COMのカスタムインターフェイスを使った呼び出し方
を参考にしてみてください。
3.の方法に関しては、VC++の#importディレクティブという機能を使うと、もっと簡単に記述できます。


呼び出したいVB6のDLLが、どのようなものなのか分かりませんので、
具体的にどのようにしたらよいか、回答が難しいです。
例えば、
・VB6DLLのメソッド呼び出しに何らかの引数が必要なのか?
・単一のメソッド呼び出しだけで事足りるのか、それとも複数メソッドを呼ぶ必要があるのか?
・VB6DLLのCOMインスタンスの寿命(生存期間)管理は、どうしたらよいか?
 つまり、Javaの単一のメソッド呼び出し内だけで、COMインスタンスを生成/呼び出し/破棄してよいのか?
など。

どうでしょうか?
もう少し情報を頂ければ、もう少し具体的な回答ができると思うのですが…

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-06 18:58
Java-COM Bridge
で検索で出ます
http://sourceforge.net/projects/jcom

先頭段落を 機械翻訳サイトに投げ込み。
JCom(JavaCOMブリッジ)に関してJComは、JavaとJavaクラスからのCOMオブジェクト・アクセスを可能にするComの間のブリッジ・ライブラリーです。
例:エクセル・ワークシートを作成する、あるいはJavaアプリケーションから
Visual Basic COMアプリケーションを使用すること。
↑ 頭脳は要りません

.net ブリッジもついでに見つかります。
http://www.jnbridge.com/

http://www.eclipse.org/articles/Article-ActiveX%20Support%20in%20SWT/ActiveX%20Support%20in%20SWT.html
http://www.codeproject.com/java/javacom.asp
http://sourceforge.net/projects/jacob-project/

------------------ リンク集 追加
Java/JNI/Tool
http://discypus.jp/wiki/?Java%2FJNI%2FTool
Jawin は ObjectScript で使われています
http://objectscript.sourceforge.net/

[ メッセージ編集済み 編集者: MMX 編集日時 2005-12-21 10:50 ]
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2005-12-06 19:22
Tdnr_Symさん、MMXさん回答ありがとうございます。

>MMXさん
英語のサイトは調べてませんでした。すいません。

>Tdnr_Symさん
VBで作られたdllをJavaから呼ぼうとしています。
間にC/C++を経由しなくてもCOMは使用可能でしょうか?

今回のdllを使用する部分のシステム概要は、
1.提供されたdllを使用して、他システムよりデータを取得し、こちらのDBへ登録
2.登録したデータを必要に応じて更新
3.更新したデータをdllを使用して他システムへ送信
となります。

下記の答えはまだ予想の段階ですが、多分こんな感じになります。

>・VB6DLLのメソッド呼び出しに何らかの引数が必要なのか?
おそらく必要になると思います。

>・単一のメソッド呼び出しだけで事足りるのか、それとも複数メソッドを呼ぶ必要があるのか?
他システムからもらった仕様書によるとメソッドが複数あるので、
複数メソッドを呼ぶ必要がありそうです。

>・VB6DLLのCOMインスタンスの寿命(生存期間)管理は、どうしたらよいか?
 つまり、Javaの単一のメソッド呼び出し内だけで、COMインスタンスを生成/呼び出し/破棄してよいのか?
複数メソッド呼ぶと思うので、インスタンスの生成は1つの処理で1つにすると思います。

足りない情報がありましたら、ご指摘ください。

よろしくお願い致します。

Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-06 19:37
こんばんは。

引用:

MMXさんの書き込み (2005-12-06 18:58) より:

JCom(JavaCOMブリッジ)に関してJComは、JavaとJavaクラスからのCOMオブジェクト・アクセスを可能にするComの間のブリッジ・ライブラリーです。



あら、そんな便利なライブラリがあったんですね。
私もカラダの切れがなかったようです(~_~;)

まだJComについて調べていないですが、
COMのインターフェイスが単純じゃないのであれば
こちらのライブラリを使うほうが便利な気がします。

スキルアップ/キャリアアップ(JOB@IT)