Repolode
facebookincubator

facebookincubator/fbjni

Java Native Interface(JNI)経由でネイティブコードからJavaを呼び出す処理を簡素化するC++ヘルパーライブラリ。

スター
337
フォーク
53
未解決の Issue
17
最終コミット
8 時間前

これは何?

fbjniはJava Native Interfaceの低レベルなAPIをC++ヘルパーでラップし、ネイティブコードからJavaのメソッド、フィールド、コンストラクターを少ない定型コードで呼び出せるようにします。JNIのローカル参照とグローバル参照のライフタイムは自動で管理され、JavaとC++間の例外も双方向に変換されるため、呼び出しのたびに例外状態を確認する必要がありません。

型変換もライブラリが処理します。メソッドのシグネチャはC++の関数シグネチャから推論され、std::stringなどの一般的な型はJavaの型との相互変換に対応しています。Javaのクラスは、JavaClassテンプレートを継承してJavaのクラス記述子を宣言するC++の構造体に対応付けられます。

Android向けのクロスプラットフォームなモバイルコードを支援する目的で開発されましたが、Android固有の依存関係はなく、JNIに対応するあらゆるJava VMで動作します。プロジェクトには、Androidビルドのセットアップ手順、機能のクイックリファレンス、JNIラッパーを使う理由を説明したドキュメントが含まれています。

主な機能

  • 01JNIのローカル参照とグローバル参照を自動管理。
  • 02Java例外とC++例外を双方向に変換。
  • 03C++の関数シグネチャからメソッド記述子を推論。
  • 04std::stringとJavaの文字列を自動で相互変換。
  • 05JavaClassテンプレートを使ってJavaクラスをC++の型に対応付け。

ユースケース

  • Androidアプリの共有C++コードベースからJava APIを呼び出す。
  • JNIを使用する任意のJVMアプリケーションにネイティブC++モジュールを組み込む。
  • 既存のJNIコードで参照カウントや例外チェックを手作業で行う負担を軽減する。

クイックスタート

  1. 1

    コピペで使える例については、docs/quickref.md のクイックリファレンスをお読みください

  2. 2

    docs/android_setup.md の Android ビルドセットアップガイドに従ってください

収録されている特集

トピック

よくある質問

fbjni とは?
Java Native Interface(JNI)経由でネイティブコードからJavaを呼び出す処理を簡素化するC++ヘルパーライブラリ。 fbjniはJava Native Interfaceの低レベルなAPIをC++ヘルパーでラップし、ネイティブコードからJavaのメソッド、フィールド、コンストラクターを少ない定型コードで呼び出せるようにします。JNIのローカル参照とグローバル参照のライフタイムは自動で管理され、JavaとC++間の例外も双方向に変換されるため、呼び出しのたびに例外状態を確認する必要がありません。
fbjni は無料で使えますか?ライセンスは?
fbjni は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
fbjni は今もメンテナンスされていますか?
活発にメンテナンス中。fbjni の最終コミットは 2026年10月22日 です。
fbjni は何に使えますか?
Androidアプリの共有C++コードベースからJava APIを呼び出す。 JNIを使用する任意のJVMアプリケーションにネイティブC++モジュールを組み込む。 既存のJNIコードで参照カウントや例外チェックを手作業で行う負担を軽減する。
fbjni のインストール方法は?
コピペで使える例については、docs/quickref.md のクイックリファレンスをお読みください docs/android_setup.md の Android ビルドセットアップガイドに従ってください
fbjni はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/facebookincubator/fbjni

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト