我想知道是否有可能像使用C语言编写的windows-xp这样的操作,就像我在java中编写的那样,这样我将具有与C中编写的相同的功能
答案 0 :(得分:38)
理论上是的,但你仍然需要一些低级汇编代码来引导将在机器上运行的Java VM,以及用于访问硬件驱动程序的低级代码。
来自wikipedia:
鉴于Sun Microsystems的Java是 今天最具统治力的人之一 面向对象的语言,它是没有的 令人惊讶的是基于Java的操作 系统已经尝试过。在这 区域,理想情况下,内核会 由最低要求组成 支持JVM。这是唯一的 这种操作系统的组成部分 那必须写成一个 Java以外的语言。建立在 JVM和基本硬件支持, 剩下的就可以了 Java中的操作系统;甚至 更多的系统部分 传统上写在较低级别 C等语言,例如设备 驱动程序,可以用Java编写。
尝试这样的例子 操作系统包括JX,JNode和 JavaOS。
答案 1 :(得分:10)
答案 2 :(得分:5)
理论上,是的。但是你需要以某种方式使用低级代码运行Java VM(除非你想将Java编译成汇编,这可能是不可能的,而不会牺牲很多Java的功能)。
答案 3 :(得分:5)
理论上,您实际上可以使用Java processor在Java中编写整个操作系统。基本上它使用Java字节码作为处理器的指令集
答案 4 :(得分:3)
这取决于您认为的“功能”。如果你的意思是图形界面,花式窗口效果等,那么是的,虽然你需要汇编语言或C代表最低位(即与I / O端口连接等)。如果您还将Windows ABI作为一项功能包含在内,那么它会越来越难以遵循Pascal调用约定。
答案 5 :(得分:3)
操作系统更接近硬件(如驱动程序)。在我看来,这不是Java领域(只是问题域操作系统的错误解决方案)。
答案 6 :(得分:3)
正如上面提到的其他人一样,它已经进行了尝试。 Jnode是唯一经受住时间考验的人,虽然他们多年没有发布新版本,但他们正在积极开展工作。 但是,如果你看看他们的Git提交,他们正在编写即将发布的版本。我是Java的粉丝,期待发布。讨厌像Java这样冗长的命令式语言的人会对这个想法感到畏缩,但并不适合所有人。
有趣的是在硬件中实现Java字节代码的想法。我认为这不会随处可见,因为Java的优势在于你不需要担心硬件问题。您只需要在Java中获得操作系统,它就可以在任何JVM上运行。
我认为操作系统域中Java的真正威力是虚拟化。我无法想到拥有虚拟操作系统的更好方法,因为Java无处不在。
正如上面提到的其他海报,如果没有Java硬件实现,它无法在Java中完全实现。 Jnode完全用汇编和Java编写。但是,所有现代操作系统都使用一些汇编语言。