JVM implementation with deterministic memory deallocation.
ristretto
java can be installed using the following methods:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/theseus-rs/ristretto/releases/latest/download/ristretto_cli-installer.sh | sh
irm https://github.com/theseus-rs/ristretto/releases/latest/download/ristretto_cli-installer.ps1 | iex
For more information, and additional installations instructions (cargo, homebrew, msi), visit the ristretto site.
- Deterministic memory allocation / deallocation
- No tracing garbage collector
- Runtime classes based on LTS versions of AWS Corretto
- Load classes from directories, jars, modules
- Url class loading from jars and modules
- Reading, writing, verifying classes
- Verification of class files is supported, but is still a work in progress.
- Just-In-Time (JIT) compilation for functions that exclusively use primitive type byte code
The Invokedynamic instruction is not implemented.
The JIT compiler only supports functions that use primitive type byte codes. The JIT compiler is not implemented for functions that use array, reference/object byte codes or call other functions.
Threading is not implemented. The JVM has been structured to allow for threading in the future by utilizing async with
the tokio
runtime.
The Java runtime requires hundreds of native methods. This project aims to provide Rust equivalents for these methods on an as needed basis. Currently, only a small subset of these are implemented. If a native method is called that is not implemented, the program will panic. Please submit a pull request, or open an issue if you need a specific native method implemented.
JNI is not implemented.
Support for the Security Manager is not implemented and there are no plans to implement it. The security manager has been deprecated; see: JEP 411
System.getSecurityManager()
will always return null
, and System.setSecurityManager()
will throw an exception.
Support for finalizers is not implemented and there are no plans to implement it. Finalizers have been deprecated; see: JEP 421
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.