目前进度大概在 60% 基本的 classfile 解析,字节码执行, 方法调用, 类加载, 多态 已实现.
有感兴趣的道友吗? 同去同去.
1 leiuu 2019-11-20 10:35:32 +08:00 ![]() 爱莫能助,赞楼主。 |
![]() | 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 ![]() 加油 |
![]() | 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 ![]() 稍等,我把 OpenJDK 的源代码推上来 |
![]() | 10 Mohanson 2019-11-20 11:00:36 +08:00 ![]() 加油, 也贴下我的 Game Boy 虚拟机项目: https://github.com/mohanson/gameboy 去年到今年零零散散写了 4 个虚拟机 /仿真器: Webassembly, EVM, i8080 仿真以及 Game Boy 仿真... |
![]() | 12 redford42 2019-11-20 11:06:17 +08:00 ![]() 一脸迷茫的摸摸头 |
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 ![]() 能力不够,先关注了。 |
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 我之前用 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 ![]() 厉害了 |
![]() | 28 th00000 2019-11-20 17:15:53 +08:00 ![]() 楼主可以参考 GraalVm 是实现了自举的 JVM, 可以将多种语言混编, 并不局限于 JAVA, 同时不依赖 JAVA 运行环境, 编译的最终结果是字节码文件。 |
29 chenggiant 2019-11-20 17:16:02 +08:00 via iPhone ![]() 大佬,Java8 里面的 lambda 语法打算怎么支持? |
30 lidlesseye11 2019-11-20 17:21:11 +08:00 ![]() 厉害了 大佬有相关的博客什么的吗?拜读下 |
32 guxingke OP @chenggiant 有点复杂 还没实现, 暂时的思路的是 用 asm 生成类, 然后加载调用. |
33 guxingke OP @lidlesseye11 没啥东西,就不贴了 |
34 gabon 2019-11-20 18:25:05 +08:00 via Android 我之前也简单实现过,其实很简单的 |
![]() | 36 zy5a59 PRO ![]() 蹭蹭楼主热度,贴一个之前用 python 写的 https://github.com/5A59/Zvm |
![]() | 37 Owenjia 2019-11-20 21:25:49 +08:00 ![]() @myqoo 话说之前教小朋友(初中)学 C 语言就是这么搞的,做的 chip8,web 界面、工具链什么的给他弄好,然后填 C 代码浏览器看结果就行。 |
38 guxingke OP  用来支持 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 ![]() JVM 的第三方实现里 avian 算比较完善了,只是类库不全,而且原作者停止维护了,倒是希望有人会继续接替开发维护工作 |
![]() | 41 vjnjc 2019-11-21 00:45:39 +08:00 居然有点感兴趣 |