首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guxingke
V2EX  ›  Java

实现一个简单的 JVM ?

  •  
  •   guxingke · 100 天前 · 4988 次点击
    这是一个创建于 100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近开了个新坑, 目的是实现一个简单的 JVM. 零零散散的提交了 100 个 commits , 最终的目标是 自举.

    目前进度大概在 60% 基本的 classfile 解析,字节码执行, 方法调用, 类加载, 多态 已实现.

    有感兴趣的道友吗? 同去同去.

    https://github.com/guxingke/mini-jvm

    第 1 条附言  ·  99 天前
    我的联系方式

    vx: ``` echo "Z3V4aW5na2VfCg==" | base64 -d ```
    mail: ``` echo "YWRtaW5AZ3V4aW5na2UuY29tCg==" | base64 -d ```

    gitHub issue 什么的也欢迎

    gitter 也会响应
    42 回复  |  直到 2019-11-21 10:12:36 +08:00
    leiuu
        1
    leiuu   100 天前   ❤️ 1
    爱莫能助,赞楼主。
    backfrw
        2
    backfrw   100 天前
    正在看有关 jvm 的书,但是能力不足,楼主加油
    guxingke
        3
    guxingke   100 天前
    @backfrw 目前实现来看, 还是比较简单的. 真的. 代码也不多, 目前就那么几千行吧
    DT37
        4
    DT37   100 天前
    虽然能力不足但是我觉得是一件有意义的事儿,我试试
    qiyuey
        5
    qiyuey   100 天前   ❤️ 1
    加油
    BBCCBB
        6
    BBCCBB   100 天前
    楼主去研究 graal,给它贡献吧. 他也是 java 写的.
    Laumm
        7
    Laumm   100 天前
    用 java 自举 JVM , 编译出来是 java 字节码还是可执行二进制文件啊?
    cjh1095358798
        8
    cjh1095358798   100 天前
    厉害,而我自己 class 都没搞清楚
    tabris17
        9
    tabris17   100 天前   ❤️ 6
    稍等,我把 OpenJDK 的源代码推上来
    Mohanson
        10
    Mohanson   100 天前   ❤️ 2
    加油, 也贴下我的 Game Boy 虚拟机项目: https://github.com/mohanson/gameboy

    去年到今年零零散散写了 4 个虚拟机 /仿真器: Webassembly, EVM, i8080 仿真以及 Game Boy 仿真...
    guxingke
        11
    guxingke   100 天前
    @DT37 比心欢迎
    redford42
        12
    redford42   100 天前   ❤️ 1
    一脸迷茫的摸摸头
    guxingke
        13
    guxingke   100 天前
    @Laumm 还是 java 字节码啊
    guxingke
        14
    guxingke   99 天前
    @BBCCBB 在关注这个项目... 但没深究, AOT 编译还是不错的
    guxingke
        15
    guxingke   99 天前
    @cjh1095358798 来吧, 自己写个 classfile 解析就弄清楚了
    Cat73
        16
    Cat73   99 天前
    我曾经也想过,然后再一想 JVM 可能需要实现的东西,emmm 就放弃了。。。
    hqweay
        17
    hqweay   99 天前   ❤️ 1
    能力不够,先关注了。
    guxingke
        18
    guxingke   99 天前
    @Cat73 以我爬坑的经验, 到目前为止, 还算简单, 毕竟是 Java 来实现, 搞不定的可以暂时委托到宿主 JVM 去搞, 先绕一下.
    octobersnow
        19
    octobersnow   99 天前 via iPhone
    有兴趣,怎么联系?
    guxingke
        20
    guxingke   99 天前
    @octobersnow
    欢迎

    vx: ``` echo "Z3V4aW5na2VfCg==" | base64 -d ```
    mail: ``` echo "YWRtaW5AZ3V4aW5na2UuY29tCg==" | base64 -d ```

    gitHub issue 什么的也欢迎

    gitter 也会响应
    find
        21
    find   99 天前 via iPhone   ❤️ 1
    我之前用 go 学者写过呢
    Gav1n
        22
    Gav1n   99 天前
    @find 用 Go 写 JVM,大佬膜拜一下。好厉害~
    myqoo
        23
    myqoo   99 天前
    @Mohanson 既然都用 rust 了,不如编译成 WebAssembly 放个 html 的在线 demo,关注量马上提升了。
    jimotudou
        24
    jimotudou   99 天前
    -D
    guxingke
        25
    guxingke   99 天前
    @myqoo 赞同+1
    laudukang
        26
    laudukang   99 天前
    @tabris17 厉害了
    lx91714
        27
    lx91714   99 天前 via Android   ❤️ 1
    厉害了
    th00000
        28
    th00000   99 天前   ❤️ 1
    楼主可以参考 GraalVm 是实现了自举的 JVM,
    可以将多种语言混编, 并不局限于 JAVA, 同时不依赖 JAVA 运行环境,
    编译的最终结果是字节码文件。
    chenggiant
        29
    chenggiant   99 天前 via iPhone   ❤️ 1
    大佬,Java8 里面的 lambda 语法打算怎么支持?
    lidlesseye11
        30
    lidlesseye11   99 天前   ❤️ 1
    厉害了
    大佬有相关的博客什么的吗?拜读下
    guxingke
        31
    guxingke   99 天前
    @th00000 暂时只想写个简单易懂的 🤣
    guxingke
        32
    guxingke   99 天前
    @chenggiant 有点复杂 还没实现, 暂时的思路的是 用 asm 生成类, 然后加载调用.
    guxingke
        33
    guxingke   99 天前
    @lidlesseye11 没啥东西,就不贴了 🤣
    gabon
        34
    gabon   99 天前 via Android
    我之前也简单实现过,其实很简单的
    guxingke
        35
    guxingke   99 天前 via Android
    @gabon 是的 懂行的来了😂
    zy5a59
        36
    zy5a59   99 天前   ❤️ 1
    蹭蹭楼主热度,贴一个之前用 python 写的 https://github.com/5A59/Zvm
    Owenjia
        37
    Owenjia   99 天前   ❤️ 1
    @myqoo
    话说之前教小朋友(初中)学 C 语言就是这么搞的,做的 chip8,web 界面、工具链什么的给他弄好,然后填 C 代码浏览器看结果就行。
    woodrat
        39
    woodrat   99 天前
    蹭蹭楼主热度,贴一个之前用 python +LLVM 写的 C 编译器 https://github.com/Mithrilwoodrat/naivecompiler
    pursuer
        40
    pursuer   99 天前   ❤️ 1
    JVM 的第三方实现里 avian 算比较完善了,只是类库不全,而且原作者停止维护了,倒是希望有人会继续接替开发维护工作
    vjnjc
        41
    vjnjc   99 天前
    居然有点感兴趣
    guxingke
        42
    guxingke   99 天前
    @vjnjc 联系我联系我
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4016 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
    ♥ Do have faith in what you're doing.