Repolode
facebookincubator

facebookincubator/fbjni

C++-библиотека, упрощающая вызов Java-кода из нативного кода через Java Native Interface (JNI).

Звёзды
337
Форки
53
Открытые issues
17
Последний коммит
8 часов назад

Что это?

fbjni оборачивает низкоуровневый Java Native Interface вспомогательными средствами на C++, чтобы нативный код мог вызывать методы, обращаться к полям и создавать объекты Java с меньшим количеством шаблонного кода. Библиотека автоматически управляет временем жизни локальных и глобальных JNI-ссылок и преобразует исключения между Java и C++ в обоих направлениях — разработчикам не нужно проверять состояние исключений после каждого вызова.

Библиотека также выполняет преобразование типов. Дескрипторы методов выводятся из сигнатур C++, а распространённые типы, например std::string, преобразуются в типы Java и обратно. Классы Java сопоставляются структурам C++, которые наследуются от шаблона JavaClass и объявляют дескриптор соответствующего класса.

Вспомогательные средства созданы для поддержки кроссплатформенного мобильного кода на Android, однако в архитектуре нет зависимостей от Android, и библиотека работает с любой виртуальной машиной Java, поддерживающей JNI. В проекте есть документация по настройке сборок для Android, краткий справочник по возможностям и объяснение причин использовать JNI-обёртку.

Ключевые возможности

  • 01Автоматическое управление локальными и глобальными JNI-ссылками.
  • 02Преобразование исключений Java и C++ в обоих направлениях.
  • 03Вывод дескрипторов методов из сигнатур функций C++.
  • 04Автоматическое преобразование между std::string и строками Java.
  • 05Сопоставление классов Java типам C++ с помощью шаблона JavaClass.

Сценарии использования

  • Вызов Java API из общей кодовой базы на C++ в приложении для Android.
  • Встраивание нативных модулей C++ в любое приложение для JVM, использующее JNI.
  • Сокращение объёма ручного подсчёта ссылок и проверок исключений в существующем коде JNI.

Быстрый старт

  1. 1

    Прочитайте краткий справочник в docs/quickref.md, чтобы узнать примеры использования, которые можно скопировать и вставить

  2. 2

    Следуйте руководству по настройке сборки Android в docs/android_setup.md

В подборках

Темы

Частые вопросы

Что такое fbjni?
C++-библиотека, упрощающая вызов Java-кода из нативного кода через Java Native Interface (JNI). fbjni оборачивает низкоуровневый Java Native Interface вспомогательными средствами на C++, чтобы нативный код мог вызывать методы, обращаться к полям и создавать объекты Java с меньшим количеством шаблонного кода. Библиотека автоматически управляет временем жизни локальных и глобальных JNI-ссылок и преобразует исключения между Java и C++ в обоих направлениях — разработчикам не нужно проверять состояние исключений после каждого вызова.
fbjni можно использовать бесплатно? Какая у него лицензия?
fbjni распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
fbjni всё ещё поддерживается?
Активно поддерживается. Последний коммит в fbjni — 22 окт. 2026 г..
Для чего можно использовать fbjni?
Вызов Java API из общей кодовой базы на C++ в приложении для Android. Встраивание нативных модулей C++ в любое приложение для JVM, использующее JNI. Сокращение объёма ручного подсчёта ссылок и проверок исключений в существующем коде JNI.
Как установить fbjni?
Прочитайте краткий справочник в docs/quickref.md, чтобы узнать примеры использования, которые можно скопировать и вставить Следуйте руководству по настройке сборки Android в docs/android_setup.md
Где скачать fbjni?
Исходный код и инструкции по установке — на GitHub: https://github.com/facebookincubator/fbjni

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты