不需要操作系统的Java虚拟机?

19

我知道BEA正在研发LiquidVM,它不需要底层操作系统,但我想知道是否有开源社区中的人正在开发类似的项目。

理想情况下,我希望找到一种实现方式,其中虚拟机直接由操作系统引导程序加载。


你打算为哪种系统编写应用程序? - Kevin Williams
哈哈,好问题。我喜欢听这样的项目。顺便说一下,我记得曾经读过一个开源项目,该项目让CPython(标准Python实现)在裸机上运行,并正在努力用Python构建操作系统 :) 不幸的是,我已经丢失了链接。 - Falaina
记得这个吗?http://en.wikipedia.org/wiki/JavaOS - skaffman
从2023年开始,看一下GraalVM的本地代码生成。 - Thorbjørn Ravn Andersen
9个回答

15
与SANOS不同,JNode操作系统是一个完整的操作系统,支持许多设备、文件系统、网络堆栈、GUI堆栈、命令行和大约50个命令等等。JNode目前在x86(32位)上运行,并启用了一个处理器,但正在开发x86-64和多处理器版本。(JNode 99.99%使用Java编写。将其移植到新架构需要重写0.01%的汇编代码,创建/修改硬件特定驱动程序...并为新架构编写本地代码编译器。)
我们目前有大约7名活跃的开发人员,但我们始终在寻找新的人加入团队,特别是那些了解Java和代码生成、垃圾收集器、驱动程序等方面的人。
(值得一提的是,我们使用最新版本的OpenJDK类库:截至最后一次统计,为1.6u24。)

链接似乎已损坏。找到了这个:http://jnode.ro/node/936 - Thorbjørn Ravn Andersen

4

有一个名为Sun项目的Squawk,它是一种在硬件上运行而不是在底层操作系统上运行的虚拟机。对于像Sun SPOT这样的嵌入式设备非常有用,其中Squawk就是操作系统。

Squawk的许可证是GPLv2。


请注意,Squawk 已经基本上停止维护了,而且版本也不是很新(我认为它仍然停留在 1.3),因此我不建议在任何新的开发中使用它。 - Cel Skeggs

4

你需要什么帮助?

也许Sanos可以给你一小段代码,用于硬件和JVM之间的通信?

http://www.jbox.dk/sanos/


1
Sanos支持JDK 1.6和/或64位吗? - McGovernTheory
据我所知,最新版本是1.4。它是开源的,如果您需要,可以随意加入。 - Thorbjørn Ravn Andersen
SANOS会因为没有产生足够的社区兴趣而消亡吗? - McGovernTheory
没什么主意。问问项目开发者吧 :) - Thorbjørn Ravn Andersen

4

还有一个Project Guest VM,它是在Xen hypervisor上托管的JVM。虽然主页似乎缺乏细节,但也有一篇Google Tech Talk关于这个项目的介绍。


这确实是一个非常有趣和有前途的项目。您应该编辑您的答案并添加指向Maxine的引用:https://maxine.dev.java.net/ - ivan_ivanovich_ivanoff

2

Oracle似乎再次朝着这个方向努力。

通过收购BEA Systems获得的技术...... Oracle已经复苏了先进的虚拟化技术:一种Java虚拟机,可以直接在hypervisor上运行,而无需操作系统。

请参见


2

JNode OS 是一个主要用 Java 编写的操作系统。


JNODE和SANOS相比有何想法? - McGovernTheory

1

JOE,Java On Everything,可以在没有操作系统的情况下运行Java。它完全由Java构建,并且位于https://github.com/joekoolade/JOE

JOE可以通过将操作系统构建到程序中来在没有操作系统的情况下运行Java程序。这使得程序更容易配置和部署。 JOE可以使任何Java程序员成为嵌入式开发人员。

JOE是一个进程虚拟机,可以在没有操作系统的情况下运行Java应用程序。它通过虚拟化操作系统和硬件来构建程序中的操作系统。这消除了操作系统、硬件、用户代码和虚拟机之间的边界。用户/监管者交叉、程序安全性、内存保护、虚拟寻址和JNI库接口中的开销和复杂性被替换为Java语言中更简单、更有效的机制。 JOE通过在Java中实现所有这些层来无缝地将这些层混合在一起。这个虚拟化的Java环境从应用程序到硬件提供了一个安全、安全、连贯和一致的面向对象的操作。


0

我对Java非常新手,但我有一些电子知识。

JVM是一个虚拟机,实际上在系统上运行。它可以是Windows或Solaris x86平台。 但据我所知,JVM本身就像一个系统,用于编译的字节码。对于字节码,JVM虚拟化自己的ALU、堆栈等。它甚至有自己的机器和汇编语言。

因此,如果我们能够在硬件芯片上实现JVM规范,那么它将不再是JVM,而是独立的Java机器,我们可以在其上开发100%用Java编写的操作系统。

因此,在这种情况下,JVM将不是操作系统,而是直接理解Java字节码的系统。


0

只是我看到和听到的一小段。

麻省理工学院在60年代/70年代开发了一台Lisp机器,这是一台本质上理解Lisp的机器,我认为他们后来也商业化了。

我在2002年左右听说有人正在开发一个在芯片上的JVM,使用FPGA或ASIC。

MIT / Lisp的故事是真实的,我在他们的博物馆里看到了,有人知道关于芯片上的JVM是否有任何真相吗?

谢谢, 马丁。


一些ARM CPU拥有http://www.arm.com/products/multimedia/java/jazelle.html - 不过我不确定它是否是一个功能齐全的Java虚拟机(我的直觉是可能不是)。 - andri
Jazelle并不是一个完整的JVM,它只是提供了一些支持,使CPU能够执行一些字节码指令,从而更容易编写高性能的JVM。 - Joachim Sauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接