• 请不要在回答技术问题时复制粘贴 AI 生成的内容
guxingke
V2EX  ›  程序员

[直播贴][mini-jvm] 如何使用 Java 实现一个简单的 JVM.

  •  
  •   guxingke ·
    guxingke · Dec 17, 2019 · 2623 views
    This topic created in 2521 days ago, the information mentioned may be changed or developed.

    实现一个简单的 JVM 比我想象的还是要难一些的, 中途会碰到一些有意思的问题, 由于项目尚未结束, 没大块的时间来整理, 暂开贴, 一备个人日后回顾, 二则若有他人交流与此, 岂不善哉. 有兴趣不妨关注此贴, 必有更新.

    最终的目标的 mini-jvm 把 mini-jvm 跑起来. 目前离这个目标还很远.

    一些基础特性已简单实现.
    字节码执行引擎
    方法调用
    lambda

    项目地址: mini-jvm

    7 replies  •  2019-12-18 22:30:13 +08:00
    lavvrence
    lavvrence
    Dec 17, 2019
    1
    这算是 Java 自举?
    guxingke
    guxingke
    OP
    Dec 17, 2019
    2
    https://github.com/guxingke/mini-jvm/commit/d2a75a12308c42d22b19f89177ba8a4dfef6cef7
    今日更新. 主要是格式化了 debug 日志的输出 , 接口的递归初始化 , instanceof 指令实现.

    选项 verbose:class , 输出加载的 class

    ![1576584932.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576584932.png)

    选项 verbose:trace , 输出执行的字节码指令

    ![1576585316.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576585316.png)

    选项 verbose:debug, 输出执行每个字节码指令的栈帧信息.

    ![1576585426.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1576585426.png)
    mortonnex
    mortonnex
    Dec 17, 2019❤️1
    3
    楼主厉害了!
    guxingke
    guxingke
    OP
    Dec 17, 2019
    4
    @jaylee4869 是的, 想这么干
    keelii
    keelii
    Dec 17, 2019
    5
    所以直播呢?
    guxingke
    guxingke
    OP
    Dec 17, 2019 via Android
    6
    @keelii 有更新了就播一点😃
    guxingke
    guxingke
    OP
    Dec 18, 2019
    7
    实现了简单的 JDB (The Java Debugger)
    n/next -> 执行到下一个方法调用 (invoke 指令)
    s/step -> 单步执行指令
    ls/list -> 输出当前方法字节码
    run -> 启动
    env -> 输出当前栈帧的信息.

    https://raw.githubusercontent.com/guxingke/oss/master/blog/1576679149.png
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1645 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:21 · PVG 00:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.