rjvm
rjvm is a Rust crate that enables parsing of JVM class files. This crate supports Java at least up to Java SE 21.
The scope of this crate is not to create a JVM, but to parse and write (in the future) JVM class files.
Getting Started
To integrate rjvm into you project, simply add it as a dependency to your Cargo.toml file:
[]
= "0.1.0"
To parse a class file, follow these steps:
- Read the class file into a byte array
- Create a
BufferedReaderfrom the byte array - Initialize a mutable
ConstantPoolto store the constant pool entries - Parse the ClassFile using the
ClassFile::decodemethod.
let file = include_bytes!;
let mut buffer = new;
let mut constant_pool = new;
let class_file = decode;
Examples
Find some simple examples on how to use rjvm in the examples directory of this repository.
decoding.rs: shows an example of how to parse a class file.instructions.rs: shows an example of how to parse a class file and print all methods with their instructions.
Roadmap
- Parse class files with all related elements
- Manage constant pools
- Read JAR files
- Write class files