Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chaoyangnz/zava
Mini Java VM in Zig
https://github.com/chaoyangnz/zava
bytecode java java-8 jvm zig
Last synced: about 2 months ago
JSON representation
Mini Java VM in Zig
- Host: GitHub
- URL: https://github.com/chaoyangnz/zava
- Owner: chaoyangnz
- Created: 2022-08-23T08:56:50.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-19T14:17:25.000Z (9 months ago)
- Last Synced: 2024-04-17T09:04:55.293Z (5 months ago)
- Topics: bytecode, java, java-8, jvm, zig
- Language: Zig
- Homepage:
- Size: 51.7 MB
- Stars: 9
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-zig - zava🗒️Java VM / bytecode interpreter in Zig
README
# zava
Mini Java VM in Zig## What it is
Zava is a Java* VM implementation in Zig. This is a sister project of [Gava](https://github.com/chaoyangnz/gava) which is using Go.
The goal of Zava is to implement a couple of features which are not capable of doing by Go, such as GC and fine control of memory allocation.The reference of the implement is [JVM Spec 8 edition](https://docs.oracle.com/javase/specs/jvms/se8/html/) and it is supposed to be compatible with Java 8 bytecode.
---
> \* JAVA is a trademark of Oracle America, Inc.## Roadmap
Feature:
- [x] type system definition
- [x] class file parser
- [x] instructions interpretion
- [x] native methods bridge to support HelloWorld
- [x] class loading
- [x] bootstrap class loader
- [x] user defined class loader
- [x] string pool
- [x] basic reflection support (Class, Field, Method, Consutructor)
- [ ] multi-thread and concurrency
- [ ] garbage collector
- [ ] profiling and Debugger integrationNon-functional:
- [ ] sufficent unit test coverage
- [ ] code readability and clear documentation of high-level design
- [ ] mini ebook to describe how to evolve a mini VM from scratch
- [ ] VSCode debugging extension## Get started
- HelloWorld
```
zig build./zava HelloWorld
```![demo](demo.gif)
## Debugging
A VS code launch.json is configured for your debugging.
And after running the program, a `zava.log` is produced to trace the execution.
- info level: only method calls are logged
- debug level: per instruction executions are also logged with the context