Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JAVAとC言語の連携

内部処理をC言語、その他をJAVAみたいなプログラムを書けるのでしょうか?かけるのでしたら、コンパイルの時などどういった処理がされるのでしょうか?

3

回答

95052

閲覧

3件の回答

評価

0

C言語とJava言語で記述したプログラムを連携させる仕組
みとしてJNIという仕組みがあります。Java側ではメソッ
ドをJava言語で記述するかわりに単にnativeと宣言するだ
けです。でもC側でJNIのルールに従って処理を書くのが最
初はちょっとわかりにくいかもしれません。Java VMがオ
ブジェクトをGCのために移動するということを把握した上
で行儀よくデータアクセスをしなければならないからで
す。

もう少し詳しい内容はwikiのJNIの項目なりJavaのJNIにつ
いてのドキュメントを参照するとよいでしょう。検索すれ
ば「JNIつかってみた」みたいなページもそれなりにある
と思います。

また、JNIより使いやすいJNAというのもあるようです。こ
ちらも調べてみる価値はあるかと思います。

評価

0

「コンパイルの時」は、Cのコンパイルのことか、Javaの
コンパイルのことか?

評価

40

http://www.javaroad.jp/bbs/answer.jsp?
q_id=20140922135619459

こっちの質問も同じなんだが、別の概念で作られたもの
を連携したい場合に重要なのは、どういったインターフ
ェースにするか、というところだ。
(ここで言う「インターフェース」は、Javaの予約語に
あるinterfaceのことではない)

JNIやJNAはJavaの実行時に直接ネイティブのライブラリ
を呼び出す仕組みで、結合度は密なものになる。疎な結
合を考えれば連携はいろいろと考えられ、要件によって
それらがどれくらい適切かが変わってくる。
その辺りを整理してから、考える方がいいだろう。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。