rjvm

Crates.iorjvm
lib.rsrjvm
version0.3.0
sourcesrc
created_at2024-02-28 14:41:12.514752
updated_at2024-04-19 20:02:36.966589
descriptionParse JVM class files with Rust
homepage
repositoryhttps://github.com/adiepenbrock/rjvm
max_upload_size
id1156533
size161,555
Andreas Diepenbrock (adiepenbrock)

documentation

README

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
Commit count: 25

cargo fmt