ceclinux
V2EX  ›  编程

用 Javascript 写一个 Java 解释器的可行性

  •  
  •   ceclinux · Mar 21, 2017 · 5400 views
    This topic created in 3343 days ago, the information mentioned may be changed or developed.

    各位写过编译器解释器的大大好。我突然想挖一坑,用 Javascript 写一个 Java 解释器,这样子就可以在浏览器上运行简单的 Java 。也就是说,完成之后差不多可以利用这个解释器做一个类似 OA 的网站,比 leetcode 快( leetcode 提交最近真的很慢 orz )。

    当然,首先是要完成这个解释器再说。本人有写过一个简单的 Java 到 MIPS 的编译器(用 Java 写的),也用 Javascript 写过 ML 的解释器,但是很多地方知识忘得也差不多了,不知道会踩到什么坑,希望能给一些材料或者源代码提供参考,谢谢

    11 replies    2017-03-21 20:06:58 +08:00
    mind3x
        1
    mind3x  
       Mar 21, 2017
    从精简版的 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!
    loading
        2
    loading  
       Mar 21, 2017 via Android
    wasm 目前很火,可以了解一下。
    simonlei
        3
    simonlei  
       Mar 21, 2017
    gwt 不就是干这个的吗,都这么多年了。
    glasslion
        4
    glasslion  
       Mar 21, 2017
    @simonlei gwt 是 java 写的
    fqzz
        5
    fqzz  
       Mar 21, 2017
    ceclinux
        6
    ceclinux  
    OP
       Mar 21, 2017
    @mind3x
    @fqzz
    额,想绕过 JVM ,直接解析 Java 代码不知道行不行
    Accldent
        7
    Accldent  
       Mar 21, 2017
    @ceclinux 没理解什么叫绕过 JVM 直接解析 Java 代码, JVM 根本不关心是不是 Java 代码, JVM 消费的是 class file , javac 才是负责把 Java 编译成 class 的
    Technetiumer
        8
    Technetiumer  
       Mar 21, 2017   ❤️ 1
    楼上说的是 Java > 中间代码 > JVM
    你想要 Java > 解释执行

    当然可行, js 都能写虚拟机了(操作系统虚拟机) http://copy.sh/v86/
    ceclinux
        9
    ceclinux  
    OP
       Mar 21, 2017
    @Technetiumer 对,我就要 Java > 解释执行,没看到别人做过这个, Js 实现虚拟机执行 Java bytecode 的倒是一大堆
    另外这个网站好酷^_^
    fqzz
        10
    fqzz  
       Mar 21, 2017
    think2011
        11
    think2011  
       Mar 21, 2017
    那个用 JavaScript 实现了虚拟机好厉害,不知道是什么原理!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2800 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 11:14 · PVG 19:14 · LAX 04:14 · JFK 07:14
    ♥ Do have faith in what you're doing.