最近开了个新坑, 目的是实现一个简单的 JVM. 零零散散的提交了 100 个 commits , 最终的目标是 自举.
目前进度大概在 60% 基本的 classfile 解析,字节码执行, 方法调用, 类加载, 多态 已实现.
有感兴趣的道友吗? 同去同去.
最近开了个新坑, 目的是实现一个简单的 JVM. 零零散散的提交了 100 个 commits , 最终的目标是 自举.
目前进度大概在 60% 基本的 classfile 解析,字节码执行, 方法调用, 类加载, 多态 已实现.
有感兴趣的道友吗? 同去同去.
|
1
爱莫能助,赞楼主。
|
|
backfrwNov 20, 2019
2
正在看有关 jvm 的书,但是能力不足,楼主加油
|
|
DT37Nov 20, 2019
4
虽然能力不足但是我觉得是一件有意义的事儿,我试试
|
|
5
加油
|
|
BBCCBBNov 20, 2019
6
楼主去研究 graal,给它贡献吧. 他也是 java 写的.
|
|
LaummNov 20, 2019
7
用 java 自举 JVM , 编译出来是 java 字节码还是可执行二进制文件啊?
|
|
cjh1095358798Nov 20, 2019
8
厉害,而我自己 class 都没搞清楚
|
|
9
稍等,我把 OpenJDK 的源代码推上来
|
|
10
加油, 也贴下我的 Game Boy 虚拟机项目: https://github.com/mohanson/gameboy
去年到今年零零散散写了 4 个虚拟机 /仿真器: Webassembly, EVM, i8080 仿真以及 Game Boy 仿真... |
|
12
一脸迷茫的摸摸头
|
|
15
@cjh1095358798 来吧, 自己写个 classfile 解析就弄清楚了
|
|
Cat73Nov 20, 2019
16
我曾经也想过,然后再一想 JVM 可能需要实现的东西,emmm 就放弃了。。。
|
|
17
能力不够,先关注了。
|
|
octobersnowNov 20, 2019 via iPhone
19
有兴趣,怎么联系?
|
|
20
@octobersnow
欢迎 vx: ``` echo "Z3V4aW5na2VfCg==" | base64 -d ``` mail: ``` echo "YWRtaW5AZ3V4aW5na2UuY29tCg==" | base64 -d ``` gitHub issue 什么的也欢迎 gitter 也会响应 |
|
21
我之前用 go 学者写过呢
|
|
jimotudouNov 20, 2019
24
-D
|
|
27
厉害了
|
|
28
楼主可以参考 GraalVm 是实现了自举的 JVM,
可以将多种语言混编, 并不局限于 JAVA, 同时不依赖 JAVA 运行环境, 编译的最终结果是字节码文件。 |
|
29
大佬,Java8 里面的 lambda 语法打算怎么支持?
|
|
30
厉害了
大佬有相关的博客什么的吗?拜读下 |
|
32
@chenggiant 有点复杂 还没实现, 暂时的思路的是 用 asm 生成类, 然后加载调用.
|
|
33
@lidlesseye11 没啥东西,就不贴了 🤣
|
|
gabonNov 20, 2019 via Android
34
我之前也简单实现过,其实很简单的
|
|
36
蹭蹭楼主热度,贴一个之前用 python 写的 https://github.com/5A59/Zvm
|
|
37
@myqoo
话说之前教小朋友(初中)学 C 语言就是这么搞的,做的 chip8,web 界面、工具链什么的给他弄好,然后填 C 代码浏览器看结果就行。 |
|
38

用来支持 Interface 的第一个提交 https://github.com/guxingke/mini-jvm/commit/7eb742aacc9cf2beebed881ece26c0b389698963 |
|
woodratNov 20, 2019
39
蹭蹭楼主热度,贴一个之前用 python +LLVM 写的 C 编译器 https://github.com/Mithrilwoodrat/naivecompiler
|
|
40
JVM 的第三方实现里 avian 算比较完善了,只是类库不全,而且原作者停止维护了,倒是希望有人会继续接替开发维护工作
|
|
vjnjcNov 21, 2019
41
居然有点感兴趣
|