我想知道是否有可能用Java编写一个像Windows XP这样的操作系统,与用C语言编写的一样具备相同的功能。
我想知道是否有可能用Java编写一个像Windows XP这样的操作系统,与用C语言编写的一样具备相同的功能。
理论上是可以的。但是你需要使用低级代码来运行Java虚拟机(除非你想将Java编译为汇编语言,这可能会牺牲很多Java的特性)。
这要看你认为的“特性”是什么。如果你指的是图形界面、华丽的窗口效果等,那么是的,不过你需要汇编语言或C语言来处理底层操作(如与I/O端口交互等)。如果你将Windows ABIs也视为一种特性,那么就会更难,因为它们遵循Pascal调用约定。
操作系统更接近硬件(如驱动程序)。在我看来,这并不是Java的领域(只是操作系统问题域的错误解决方案)。
正如其他人所提到的,这个已经尝试过了。Jnode是唯一经得起时间考验并正在积极开发的操作系统,虽然他们多年没有发布新版本。 但是,如果您查看他们的Git提交,他们正在编写即将发布的代码。我是Java的粉丝,并期待着发布。讨厌冗长命令式语言(如Java)的人可能会对此感到不适,但这并不适用于每个人。
有趣的是,在硬件中实现Java字节码的想法。我认为这不会有任何进展,因为Java的强项在于您不需要过多关注硬件。您只需要获取一个Java操作系统,它可以在任何JVM上运行。
我认为Java在操作系统领域的真正优势是虚拟化。我想不出比使用Java更好的方法来拥有虚拟操作系统,因为Java无处不在。
就像其他发帖者在上面指出的那样,如果没有Java硬件实现,它不能完全在Java中实现。 Jnode完全由汇编和Java编写。但是,所有现代操作系统都使用某些汇编语言。