3 releases (breaking)
0.3.0 | Apr 19, 2024 |
---|---|
0.2.0 | Mar 1, 2024 |
0.1.0 | Feb 28, 2024 |
#1280 in Parser implementations
38 downloads per month
150KB
3.5K
SLoC
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:
[dependencies]
rjvm = "0.1.0"
To parse a class file, follow these steps:
- Read the class file into a byte array
- Create a
BufferedReader
from the byte array - Initialize a mutable
ConstantPool
to store the constant pool entries - Parse the ClassFile using the
ClassFile::decode
method.
let file = include_bytes!("../path/to/your/class/file.class");
let mut buffer = rjvm::decoder::BufferedReader::new(file);
let mut constant_pool = rjvm::types::constants::ConstantPool::new();
let class_file = rjvm::types::elements::ClassFile::decode(&mut buffer, &mut constant_pool);
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
Dependencies
~105KB