Java是移动设备最重要的语言,因为它允许在字节码和机器之间插入JVM的虚拟层,从而在每台机器上执行相同的二进制/字节代码。
我们可以构建Java物理机器,它将采用字节代码而不是X86 / arm的传统操作码和操作数吗?所以可以使用Java构建实际操作系统,它比在我们当前的操作系统上安装JVM高效/快速
我的猜测是它会限制安装新版本的JVM,但很多移动设备都支持限制版本的JVM,这可能不是问题吗?
为什么有人没有尝试将相同的概念应用于硬件?
答案 0 :(得分:13)
这已经存在。第一次尝试是Sun的PicoJava规范,其中一个开源实现在某个时候发布。
可以直接运行Java字节码的CPU的当前示例:
答案 1 :(得分:7)
我们可以建造这样的野兽吗?我们当然可以。我们也可以尝试用一根芹菜来砍伐卡里树,但这并不是一个好主意: - )
与Forth 很多月亮之前做过类似的事情(Novix,我认为它被称为)。我怀疑在这个特定情况下它会因多种原因而失败。
创建Java CPU的成本远远超过创建Java解释器的成本。这就是为什么没有一百万个不同的CPU制造商,但是 百万种不同的计算机语言(好吧,可能不是那么多,但它很多)。
JIT编译器完全消除了对Java-in-silicon的需求,因为他们无论如何都要编译成汇编语言。
与第1点相关,想象一下修复CPU中的错误而不是解释器中的错误。除非你的CPU具有某种形式的可升级性(例如可替换微码),否则事情会变得昂贵。而且,如果你做使用微码,你已经失去了硅片上Java的一些优点,因为你现在有一个片上解释器,而不是在一个regualr操作系统上运行。
许多人已经在使用拥有Java的机器。您将面临对市场的阻力很多转向您的解决方案。
答案 2 :(得分:1)
AFAIK,这已经完成(see the PSC 1000 microprocessor reference manual)。引用:
PSC1000微处理器的堆栈架构 和Java虚拟机非常相似 类似。这导致只有一个相对简单的字节 代码翻译器(20K)需要生成 相反,来自Java字节代码的可执行本机代码 而不是一个完整的即时(JIT)编译器(200-400K)。该 结果是Java程序的初始执行速度要快得多 并且显着减小了内存需求。 此外,大多数现代语言都是实现的 堆栈模型。 PSC1000的功能 运行Java有效地应用于其他语言 如C,Forth和Postscript ..
答案 3 :(得分:1)
问题在于你没有规模经济。
英特尔/ AMD处理器比它们可以获得的更便宜,更快,直到它们到处都是每个CPU。目前基于软件的JVM比硬件中的速度要快得多,而且随着CPU的不断加快,没有动力去移动。
时代变了。使用当前架构时CPU不会更快,所以现在可能更有意义,因为Java非常适合多核应用程序。
答案 4 :(得分:0)
Sun已经生成了一些Java芯片(picoJava,ultraJava),并且有this one。