最近开了个新坑, 目的是实现一个简单的 JVM. 零零散散的提交了 100 个 commits , 最终的目标是 自举.
目前进度大概在 60% 基本的 classfile 解析,字节码执行, 方法调用, 类加载, 多态 已实现.
有感兴趣的道友吗? 同去同去.
1
leiuu 2019-11-20 10:35:32 +08:00 1
爱莫能助,赞楼主。
|
2
backfrw 2019-11-20 10:36:44 +08:00
正在看有关 jvm 的书,但是能力不足,楼主加油
|
4
DT37 2019-11-20 10:44:14 +08:00
虽然能力不足但是我觉得是一件有意义的事儿,我试试
|
5
qiyuey 2019-11-20 10:46:33 +08:00 1
加油
|
6
BBCCBB 2019-11-20 10:47:19 +08:00
楼主去研究 graal,给它贡献吧. 他也是 java 写的.
|
7
Laumm 2019-11-20 10:49:47 +08:00
用 java 自举 JVM , 编译出来是 java 字节码还是可执行二进制文件啊?
|
8
cjh1095358798 2019-11-20 10:49:58 +08:00
厉害,而我自己 class 都没搞清楚
|
9
tabris17 2019-11-20 10:51:05 +08:00 6
稍等,我把 OpenJDK 的源代码推上来
|
10
Mohanson 2019-11-20 11:00:36 +08:00 2
加油, 也贴下我的 Game Boy 虚拟机项目: https://github.com/mohanson/gameboy
去年到今年零零散散写了 4 个虚拟机 /仿真器: Webassembly, EVM, i8080 仿真以及 Game Boy 仿真... |
12
redford42 2019-11-20 11:06:17 +08:00 1
一脸迷茫的摸摸头
|
15
guxingke OP @cjh1095358798 来吧, 自己写个 classfile 解析就弄清楚了
|
16
Cat73 2019-11-20 11:12:10 +08:00
我曾经也想过,然后再一想 JVM 可能需要实现的东西,emmm 就放弃了。。。
|
17
hqweay 2019-11-20 11:21:08 +08:00 1
能力不够,先关注了。
|
18
guxingke OP @Cat73 以我爬坑的经验, 到目前为止, 还算简单, 毕竟是 Java 来实现, 搞不定的可以暂时委托到宿主 JVM 去搞, 先绕一下.
|
19
octobersnow 2019-11-20 11:53:45 +08:00 via iPhone
有兴趣,怎么联系?
|
20
guxingke OP @octobersnow
欢迎 vx: ``` echo "Z3V4aW5na2VfCg==" | base64 -d ``` mail: ``` echo "YWRtaW5AZ3V4aW5na2UuY29tCg==" | base64 -d ``` gitHub issue 什么的也欢迎 gitter 也会响应 |
21
find 2019-11-20 12:54:31 +08:00 via iPhone 1
我之前用 go 学者写过呢
|
23
myqoo 2019-11-20 13:38:00 +08:00
@Mohanson 既然都用 rust 了,不如编译成 WebAssembly 放个 html 的在线 demo,关注量马上提升了。
|
24
jimotudou 2019-11-20 15:10:46 +08:00
-D
|
27
lx91714 2019-11-20 16:56:28 +08:00 via Android 1
厉害了
|
28
th00000 2019-11-20 17:15:53 +08:00 1
楼主可以参考 GraalVm 是实现了自举的 JVM,
可以将多种语言混编, 并不局限于 JAVA, 同时不依赖 JAVA 运行环境, 编译的最终结果是字节码文件。 |
29
chenggiant 2019-11-20 17:16:02 +08:00 via iPhone 1
大佬,Java8 里面的 lambda 语法打算怎么支持?
|
30
lidlesseye11 2019-11-20 17:21:11 +08:00 1
厉害了
大佬有相关的博客什么的吗?拜读下 |
32
guxingke OP @chenggiant 有点复杂 还没实现, 暂时的思路的是 用 asm 生成类, 然后加载调用.
|
33
guxingke OP @lidlesseye11 没啥东西,就不贴了 🤣
|
34
gabon 2019-11-20 18:25:05 +08:00 via Android
我之前也简单实现过,其实很简单的
|
36
zy5a59 2019-11-20 20:46:02 +08:00 1
蹭蹭楼主热度,贴一个之前用 python 写的 https://github.com/5A59/Zvm
|
37
Owenjia 2019-11-20 21:25:49 +08:00 1
@myqoo
话说之前教小朋友(初中)学 C 语言就是这么搞的,做的 chip8,web 界面、工具链什么的给他弄好,然后填 C 代码浏览器看结果就行。 |
38
guxingke OP ![1574259614.png]( https://raw.githubusercontent.com/guxingke/oss/master/blog/1574259614.png)
用来支持 Interface 的第一个提交 https://github.com/guxingke/mini-jvm/commit/7eb742aacc9cf2beebed881ece26c0b389698963 |
39
woodrat 2019-11-20 23:52:17 +08:00
蹭蹭楼主热度,贴一个之前用 python +LLVM 写的 C 编译器 https://github.com/Mithrilwoodrat/naivecompiler
|
40
pursuer 2019-11-21 00:17:11 +08:00 1
JVM 的第三方实现里 avian 算比较完善了,只是类库不全,而且原作者停止维护了,倒是希望有人会继续接替开发维护工作
|
41
vjnjc 2019-11-21 00:45:39 +08:00
居然有点感兴趣
|