Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/douchuan/jvm
JVM in Rust, written as a learning project.
https://github.com/douchuan/jvm
java jvm modular rust vm
Last synced: 4 days ago
JSON representation
JVM in Rust, written as a learning project.
- Host: GitHub
- URL: https://github.com/douchuan/jvm
- Owner: douchuan
- License: mit
- Created: 2019-12-12T05:47:17.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-03-05T15:01:23.000Z (over 3 years ago)
- Last Synced: 2024-08-03T01:39:04.630Z (3 months ago)
- Topics: java, jvm, modular, rust, vm
- Language: Rust
- Homepage:
- Size: 1.26 MB
- Stars: 513
- Watchers: 20
- Forks: 31
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Have a great goal is a very important thing, such as Moon Landing.
What is the meaning of this plan?
That's the process of achieving this goal, the produce of industry and technology.Sun is a great company, in the era of C++, they created JVM & HotSpot.
Now, we have Rust, a better tool, let’s remake JVM!
Pay tribute to medical workers at the front! Thank you for your contribution to the fight against the epidemic.
## Roadmap
- Pass test cases in JDK
- Pass TCK
- GC (crate)
- JIT / interp (crate)
- class verification (crate)
- After GC built, ready for optimize System.arraycopy (the key of performance)
- WebAssembly, make the JVM work in Browser
- java options (-version, -server...)In summary, the roadmap is built on a 3-step progress.
- Pass TCK
- Refactor & Rewrite
- Divide into several crates, build a collection of modular and reusable vm technologiesWell, it's a long term plan, Sun spent 30 years to improve
VM, Oracle continue doing it.The journey of a thousand miles begins with one first step. Even the sage was once an ordinary human being.
Just Do It.
## Running
```shell
# setup JDK
# setup rust toolchain
# clone this project# compile sample by javac
cd jvm/sample
javac HelloWorld.java
cd ..# modify r.sh JAVA_HOME according to your env
# exec sample
cd jvm
bash r.sh
```