#java #java-class #jni #api-bindings

nightly jni-bind

Made importing classes from java easy

2 releases

0.1.6 Aug 6, 2024
0.1.5 Aug 6, 2024

#103 in FFI

MIT license

33KB
701 lines

jni-bind-rs

Docs Crates.io Crates.io

Made importing classes from java easy!

This library provides the import_class macro that automatically implements the object structure. All the method IDs and classes are cached to increase performance.

Known Limitations

  • cannot import generic classes and methods.
  • cannot import constants.

Examples

Basic usage of import_class:

#![no_main]

use jni_bind::import_class;
use jni_bind::{jboolean, jint, jlong};

import_class! {
    "java/lang/Object";
    Object;
    constructor();
    /// Indicates whether some other object is "equal to" this one.
    fn equals(&self, other: Object) ->  jboolean;
    /// Returns a hash code value for the object.
    fn hashCode(&self) -> jint;
    /// Wakes up a single thread that is waiting on this object's monitor.
    fn notify(&self) -> ();
    /// Wakes up all threads that are waiting on this object's monitor.
    fn notifyAll(&self) -> ();
    /// Returns a string representation of the object.
    fn toString(&self) -> String;
    /// Causes the current thread to wait until it is awakened,
    /// typically by being notified or interrupted,
    /// or until a certain amount of real time has elapsed.
    fn wait(&self, timeout_millis: jlong, nanos: jint) -> ();
}

import_class!{
    "java/lang/String";
    String;
    extends Object;
}

Dependencies

~2–12MB
~90K SLoC