2009-05-31 25 views

答えて

8

Foreign Function InterfaceまたはFFIを検索すると、より良い結果が得られます。 FFIは、異なる言語、つまり外国語で書かれた関数を呼び出すことができるものです。異なる言語とランタイムには、大幅に異なるFFIがあり、個々に個別に学習する必要があります。 FFIを学ぶことによって、あなたの言語の内部とランタイムの内部について、あなたが普通に慣れ親しんでいたことを少しでも知ることができます。一部のFFIでは、Haskell(FFIコードはHaskellで書かれていなければなりません)のようなターゲット言語でコードを書かせたり、Python(FFIコードはCで書かれていなければならない)のようなソース言語でコードを書かせる人もいます。

特定の言語ではFFIという用語を使用していません(ただし、そうした方が良いでしょう)。 Javaの場合、Java Native Interface,またはJNIと呼ばれます。

+0

ありがとうございます。私は実際にJNIを知っていました。しかし、私はどこでもっと情報を掘り出すべきかわからなかった。 – qeek

1

言語(通常)は "ネイティブ"コードを呼び出すための構文を定義しています。したがって、メソッドfoo()をエクスポートするライブラリを持っている場合、バインディングを作成すると、たとえば、メソッドfoo()を使用してJavaクラスを作成することになります。そうすれば、残りのコードからMyBinding.foo()を呼び出すことができます。純粋なJavaメソッドであっても、コンパイル済みのCコードであれ、違いはありません。

Javaの場合も、JNIのドキュメントを参照してください。他の言語にも同様のメカニズムがあります。 SIPのようなツールがあり、C(++)ヘッダファイルの束をとり、Pythonバインディングを生成します。私は他の言語も同様のツールを持つことができると思います。

関連する問題