Java物理机怎么样?

Java是移动设备最重要的语言,因为它允许通过在字节代码和机器之间插入JVM的虚拟层来在每台机器上执行相同的二进制/字节代码。

我们可以构建Java物理机器,它将采用字节代码而不是X86 / arm的传统操作码和操作数吗? 所以可以使用Java构建实际操作系统,它比在我们当前的操作系统上安装JVM高效/快速

我的猜测是它会限制安装新版本的JVM,但许多移动设备确实支持有限版本的JVM,这可能不是问题吗?

为什么有人没有尝试将相同的概念实现到硬件?

我们可以建造这样的野兽吗? 我们当然可以。 我们也可以尝试用一根芹菜来砍伐卡里树,但这并不是一个好主意:-)

类似的事情是在Forth 许多月前完成的(Novix,我认为它被称为)。 我怀疑在这种特殊情况下它会因多种原因而失败。

  1. 创建Java CPU的成本远远超过创建Java解释器的成本。 这就是为什么没有一百万种不同的CPU制造商,但是有一百万种不同的计算机语言(好吧,也许不是那么多,但它很多)。

  2. JIT编译器完全消除了对Java-in-silicon的需求,因为它们无论如何都要编译成汇编语言。

  3. 与第1点相关,想象一下修复CPU中的错误而不是解释器中的错误。 除非你的CPU具有某种forms的可升级性(例如可替换的微码),否则事情会变得昂贵。 而且,如果你使用微代码,你已经失去了Java-on-silicon的一些优点,因为你现在有一个片上解释器而不是在一个regualr操作系统上运行。

  4. 许多人已经使用具有Java的机器。 您将面临对市场的阻力,转向您的解决方案。

这已经存在。 第一次尝试是Sun的PicoJava规范,其中一些开源实现在某个时候发布。

可以直接运行Java字节码的CPU的当前示例:

  • aJile: http ://www.ajile.com/
  • Imsys: http : //www.imsystech.com/
  • 带有Jazelle扩展的ARM
  • JOP: http : //www.jopdesign.com/index.jsp

AFAIK,这已经完成( 参见PSC 1000微处理器参考手册 )。 引用:

PSC1000微处理器和Java虚拟机的堆栈体系结构非常相似。 这导致仅需要相对简单的字节码转换器(20K)来从Java字节代码生成可执行本机代码,而不是完整的即时(JIT)编译器(200-400K)。 结果是Java程序的初始执行速度更快,内存需求也大大减少。 此外,大多数现代语言都是在堆栈模型上实现的。 允许PSC1000有效运行Java的function同样适用于其他语言,如C,Forth和Postscript。

这个问题是你没有规模经济。

英特尔/ AMD处理器比它们可以获得的更便宜,更快,直到它们到处都是每个CPU。 目前基于软件的JVM比硬件中的速度要快得多,而且随着CPU的不断加快,没有动力去移动。

时代变了。 对于当前的体系结构,CPU没有得到更快的速度,因此现在可能更有意义,因为Java非常适合多核应用程序。

Sun已经生产了一些Java芯片(picoJava,ultraJava),而且还有这个芯片。