Skip to content

hellyguo/rust_java_samples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust-java samples

Chinese version, 中文版

desc

This repository contains sample Rust programs that call Java methods, and Java classes that call Rust methods.

sample list

  1. sample000, call Rust method from Java

  2. sample001, convert Java primitive types to bytes in Rust

  3. sample002, accept a Java object in Rust, and callback to Java

  4. sample003, reverse Java bytes

  5. sample004, access Java DirectBuffer in Rust

  6. sample005, access Java primitive array in Rust

  7. sample006, create Java object in Rust

  8. sample007, set a field to Java object in Rust

  9. sample008, load Java class in Rust

    s008_class_buf.rs is generated by java2u8vec.sh

  10. sample009, register Java method dynamically in Rust

more ..

build

cargo build --release

cargo will generate .so in target/release, and call build_java.sh to build .jar, which contains .so in resources folder.

how-to

  1. call Java each JUnit test in IDE
  2. call Java JUnit test suite in IDE

Note: need to setup JVM args: -DsampleLib=<path to lib>

or

  1. execute Java each JUnit test in console

    gradle test --tests HelloWorldTest
  2. execute Java each JUnit test suite in console

    gradle test --tests SamplesSuite

The JUnit report will be generated.

thanks

Thanks to metaworm(rust-java-demo). This article (url1/url2) is the most effective and detailed for learning how to call JNI through Rust.