各位写过编译器解释器的大大好。我突然想挖一坑,用 Javascript 写一个 Java 解释器,这样子就可以在浏览器上运行简单的 Java 。也就是说,完成之后差不多可以利用这个解释器做一个类似 OA 的网站,比 leetcode 快( leetcode 提交最近真的很慢 orz )。
当然,首先是要完成这个解释器再说。本人有写过一个简单的 Java 到 MIPS 的编译器(用 Java 写的),也用 Javascript 写过 ML 的解释器,但是很多地方知识忘得也差不多了,不知道会踩到什么坑,希望能给一些材料或者源代码提供参考,谢谢
1
mind3x 2017-03-21 14:04:46 +08:00
从精简版的 CLDC 开始,相当于 JDK 1.1 时代的 VM , Oracle 有 C 语言的参考实现: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javame-419430.html#J2MECLDC-1.1-WINUNIX-G-F
JVM 字节码的解释执行本身不算复杂,但 class 的 loading/verifying 和 GC 都是很大一砣东西。 Good luck! |
2
loading 2017-03-21 14:09:07 +08:00 via Android
wasm 目前很火,可以了解一下。
|
3
simonlei 2017-03-21 14:29:17 +08:00
gwt 不就是干这个的吗,都这么多年了。
|
5
fqzz 2017-03-21 14:52:21 +08:00
|
7
Accldent 2017-03-21 15:29:12 +08:00
@ceclinux 没理解什么叫绕过 JVM 直接解析 Java 代码, JVM 根本不关心是不是 Java 代码, JVM 消费的是 class file , javac 才是负责把 Java 编译成 class 的
|
8
Technetiumer 2017-03-21 15:43:04 +08:00 1
|
9
ceclinux OP @Technetiumer 对,我就要 Java > 解释执行,没看到别人做过这个, Js 实现虚拟机执行 Java bytecode 的倒是一大堆
另外这个网站好酷^_^ |
10
fqzz 2017-03-21 19:41:13 +08:00
|
11
think2011 2017-03-21 20:06:58 +08:00
那个用 JavaScript 实现了虚拟机好厉害,不知道是什么原理!
|