2 个不稳定版本
0.1.0 | 2022年4月5日 |
---|---|
0.0.1 | 2021年8月9日 |
#1774 在 Rust 模式
125KB
3K SLoC
eJNI
eJNI 是一个 Rust crate,通过提供抽象简化 Java 的 JNI 开发。
eJNI 为 Java 标准库中常用的类提供抽象,如 Map 和 List。除了这些,eJNI 还提供了简单的方式来处理 Java 的原始类型及其对象对应物(例如 int
和 Integer
)。
API 稳定性
eJNI 是一个年轻的库,它的 API 可能会发生变化。但是库中的代码已经完全经过测试。
示例
ArrayList
以下示例展示了如何创建一个 ArrayList<String>
,向其中填充 10 个字符串,并将其返回到 Java。
use ejni::{List, Class, Object, JavaString};
use jni::sys::jobject;
#[no_mangle]
pub fn Java_MyClass_doNative(env: JNIEnv<'_>, _: JClass) -> jobject {
// Create a new java.util.ArrayList containing java.lang.String's
let list = List::arraylist(&env, Class::String(&env).unwrap()).unwrap();
// Add 10 Strings to the List
for i in 0..10 {
let string = JavaString::from_rust(&env, format!("Iteration {}", i)).unwrap();
list.add(&env, string).unwrap();
}
list.into()
}
依赖关系
~1.3–2.6MB
~45K SLoC