【问题标题】:Porting JVM to MINIX将 JVM 移植到 MINIX
【发布时间】:2012-12-13 21:16:01
【问题描述】:

正如您从标题中看到的那样,出于某种原因,我需要使在 Minix 上运行 .class 文件成为可能(不需要编译器)。那么有人可以指出我的任何方向,建议一些文献或提供一些建议吗?一般来说,你会怎么做?

直到现在我才找到OpenJDK(但这并不是我想要的)。我还阅读了 Tanenbaum 的“操作系统设计和实现”。它让我对 minix 内部结构有了很多了解。

【问题讨论】:

    标签: linux jvm porting minix


    【解决方案1】:

    如果您只想运行.class 文件而不关心性能,您可以创建一个字节码解释器,这可能比移植/创建一个完整的编译器更简单。您可以找到这些类文件的详细格式here,以及指定的VM 的行为here

    您还需要选择一个运行时——OpenJDK 和 GNU Classpath 可能是最好的选择——并通过在 C 中实现其 native 方法将其移植到 MINIX。native 方法通常与平台有关——特定的东西,例如对文件 I/O 的调用,因此无法在独立于平台的 Java 语言中实现。

    this wiki page 上还有许多您可能会发现有用的其他链接和资源。

    【讨论】:

    • 太好了,谢谢,我想到了口译员,只是不知道是否可以。
    • 另外,如果可能的话,你能给我粗略估计一下这个项目所需的时间吗?我不完全确定我在做什么:)
    • 嗯,这取决于您的技能水平和先前的经验,以及您希望它完成的端口:) 我一直致力于将 OpenJDK 移植到浏览器(请参阅我的 wiki 页面链接),我们中的 2-3 个人花了大约 1.5 个月的时间才让javac 运行。然而,我们并没有全职做。
    • 再问一个问题,您对将 jamVM 移植到 MINIX 而不是 openJDK 有什么看法?你认为它会更快吗?移植不执行,性能不相关。
    • 我对 JamVM 没有任何经验,所以很难说。
    【解决方案2】:

    Jainja JVM(我是作者)可以在 Minix 3.2 上工作(未使用 3.3 测试)。它是一个带有 Java 5 标准库的解释器(即没有 JIT)。使用 X11 后端对 AWT/Swing 的支持有限。

    【讨论】: