Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
M

mini-jvm

> 编程语言
Open source

使用 JDK8 实现 JVM(Java Virtual Machine)

712 stars0 likes1 views
WebsiteGitHub

About

使用 JDK8 实现 JVM(Java Virtual Machine)

Mini-jvm


使用 Java 8 实现 JVM

特性

元循环(Metacircular)

mini-jvm on mini-jvm on hotspot. 可以在 mini-jvm 里运行 mini-jvm .

$ java -jar jvm-core/target/mini-jvm.jar -jar jvm-core/target/mini-jvm.jar -jar test.jar
# Hello World!

动机

  1. 尝试了解 JVM 原理, Learning by doing
  2. 纸上得来终觉浅, 实践
  3. 用简单的代码帮助 Javaer 理解 JVM

快速体验 [Macos 用户]

Hello world

bash
brew tap guxingke/repo && brew install mini-jvm

cat  HelloWorld.java
public class HelloWorld {
  public static void main(String[] args) {
    if (args.length == 0) {
      System.out.println("hello");
      return;
    }

    for(int i = 0; i  hello

# with program args
mini-jvm HelloWold hello mini-jvm
# =>  hello
# =>  mini-jvm

# 输入 mini-jvm -help 了解更多.

快速体验 [其他操作系统]

需要自行下载打包. Dev

规划

  • Class 文件解析 90%
  • 字节码执行 90%
  • 类加载 90%
  • 方法调用 90%
  • 实例化 90%
  • Native 方法 90%
  • 异常处理 60%
  • self-booting 70%

局限

  1. 不实现 GC
  2. 不实现多线程

变更记录

  • 实现了元循环(Metacircular)
  • 反射特性基本可用
  • 增加简单的调试器 bin/jdb.
  • 支持 Lambda 调用, closure, currying 可用.
  • Hello World 级别可用

个人记录

  • 如何构建你自己的 JVM (2) Hello World
  • 如何构建你自己的 JVM (1) 解释器
  • 如何构建你自己的 JVM (0) 概述
  • 用 Java 实现一个简单的虚拟机 ?

建议

  • 在JDK1.8.0_121环境下发现编译不过的情况,详情见#25,本项目的目的是学习JVM,为了项目足够小,清晰和易于理解,并不打算做各种适配工作,建议大家在MacOSX,Maven 3.3+,JDK 1.8.0_192+下学习;

联系作者

微信群

加个人微信 guxingke_,备注 mini-jvm 拉你进群。

参考

  • The Java® Virtual Machine Specification
  • JVM 字节码从入门到精通
  • 自己动手写Java虚拟机

其他

新项目地址 mini-jvm_x, 使用多种语言实现。

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Javainterpreterjvmjvm-bytecodejvm8

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言