Repolode
facebookincubator

facebookincubator/fbjni

Java Native Interface(JNI)를 통해 네이티브 코드에서 Java 코드를 간편하게 호출할 수 있도록 돕는 C++ 라이브러리입니다.

스타
337
포크
53
열린 이슈
17
마지막 커밋
4시간 전

어떤 프로젝트인가요?

fbjni는 Java Native Interface의 저수준 기능을 C++ 헬퍼로 감싸 네이티브 코드에서 Java 메서드, 필드, 생성자를 적은 보일러플레이트로 호출할 수 있게 합니다. JNI 로컬 및 전역 참조의 수명을 자동으로 관리하고 Java와 C++ 간에 예외를 양방향으로 변환하므로, 개발자는 호출할 때마다 예외 상태를 확인할 필요가 없습니다.

타입 변환도 라이브러리에서 처리합니다. 메서드 디스크립터는 C++ 시그니처에서 추론되며, std::string 같은 일반적인 타입은 Java 타입과 서로 변환됩니다. Java 클래스는 Java 디스크립터를 선언하는 JavaClass 템플릿을 상속한 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의 저수준 기능을 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 통계는 매일 갱신됩니다.

관련 프로젝트