Skip to content

caoimhebyrne/CaoRVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Caoimhe's Rust JVM (CaoRVM)

This is a just-for-fun™ JVM implementation in Rust. This project was inspired by one of my previous C++ projects, CaoVM.

Status

I am currently working on Class File Parsing.

Why?

I've been coding in Java for almost 10 years now (wow), it was the first language I learned after I was introduced to coding when I was 7 years old. I was always fascinated by how it worked, but never looked too deep into it until I explored the world of SpongePowered/Mixin, ASM, and other runtime class modification utilities.

These utilities made me want to know more about Java and the JVM, so I made my own mediocre runtime modification library - Injector. This satisfied my quest for knowledge at the time, but I eventually just wanted to implement my own JVM. This sparked me to make CaoVM :^)

What was wrong with CaoVM?

Whilst I didn't get far with the project, I felt like I was being restrained by some of the shortcomings of C++:

  • It was a lot of effort to implement something, the Lagom collection of libraries helped a lot, but everything still felt like it could be done better.
  • Rust enums are superior to C++'s enum system, or even Java's enum system. When I'm implementing the actual virtual machine, I feel like the enum system will help a lot when dealing with values, etc.
  • I want to learn more Rust! I love C++, and I will still use it for my operating systems projects, and of course contributing to SerenityOS. But, it just didn't feel right for this project. Rust feels like a much better candidate, and I feel like there's so much that I still have to learn about Rust.

Goals

  • To create a JVM implementation which is able to run a hello world program.
    • This doesn't have to neccessarily be spec-compliant, however we should try to implement of the fundemental details in the Java Virtual Machine spec to try to be as compatible as possible.
  • To have fun! This project isn't serious, it's just something I've been interested in for so long.

License

This project is licensed under the MIT license.

About

A just-for-fun™ JVM implementation in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published