Java是一种制作精良的OO语言,但我注意到的第一件事是它有多慢(与C ++相比)。这可能是因为它必须通过另一层转换(VM),而不是直接在CPU的本机微码中运行。
我的问题:您是否知道在不需要软件实现的VM的情况下创建Java本地CPU的任何尝试?
答案 0 :(得分:18)
Sun大约10年前设计了picoJava处理器,但它从来没有去过任何地方 - 当时没有它的市场,现代虚拟机使这个概念毫无意义。
然后是刚刚开始的ARM Jazelle架构。
答案 1 :(得分:7)
到目前为止,我发现这个难题的唯一参考是以下文章:
http://www.theserverside.com/discussions/thread.tss?thread_id=59958
虽然我最初有兴趣首先知道是否有Java-CPU以及它们是什么,但是这个帖子揭示了为什么我没有听说过任何内容(直到我读到学到的回复)这里)。 Alex Besogonov最后的评论似乎是最好的解释:
Java字节码不适合运行 在真正的硬件上。它是基于堆栈的,所以 流水线走出窗外。在 理论上,人们可以在飞行中做 从基于堆栈的转换到 基于寄存器的机器,但它会 需要很多晶体管。
所以实际上,它总是更多 有效的JIT编译Java字节码 然后在通用CPU上运行它。那里 JVM用于低功耗是一个例外 硬件速度快的设备 JVM不是问题(记住Forth CPU)的
当然,硬件仍然可以提供 很少有功能来加速JVM。喜欢 硬件辅助转发指针 这允许快速创建实时 压缩无间隙GC(我假设Azul 硬件有这种支持)。
这非常有趣。谢谢大家的答案。
答案 2 :(得分:5)
Azul Systems从头开始设计系统(运行大量服务)Java,包括硬件辅助垃圾收集。
还有GCJ用于将Java编译为本机代码,尽管它不是Java的完整实现。
答案 3 :(得分:0)
您可能想尝试JOP
它是开源的,您可以在自己的硬件上试用它。