2010-01-01 70 views
26

我想知道的是有可能使这是用C语言一样,我可以写在Java中,让我有相同的功能,用C语言编写是否有可能使用java制作操作系统?

+4

已经存在这样的操作系统!看看这个=> http://sourceforge.net/projects/jos/ – missingfaktor 2010-01-01 08:48:17

+7

JOS从来没有得到任何地方... http://www.jnode.org是一个更好的例子。 – 2010-01-01 09:53:03

+0

即使只有极少量的研究发现已经创建了一个。 – Raedwald 2013-10-07 00:15:11

回答

36

在理论上是一个像操作Windows的XP,但你仍然必须有一些底层汇编代码来引导将在机器上运行的Java虚拟机,以及访问硬件驱动程序的低级代码。

wikipedia

鉴于Sun Microsystems的Java是今天 最主要的 面向对象的语言之一,这是毫不 奇怪,基于Java的操作系统 系统已尝试。在此 区域中,理想情况下,内核将由 组成,用于支持JVM的最低要求为 。这是此操作系统 中唯一的 组件,必须使用非Java语言的 语言编写。建立在JVM和基本硬件支持 的 之上,可以用Java编写操作系统的其余 ;甚至 传统上用较低级别 语言(例如C,例如设备 驱动程序)编写的系统部分更可以用Java编写。

在这样的 操作系统上尝试的示例包括JX,JNode和 JavaOS。

+0

硬件驱动程序也应该用Java编写。 – 2011-11-19 10:26:07

3

这取决于你认为的“功能”。如果你的意思是图形界面,花哨的窗口效果等,那么是的,尽管你需要汇编语言或C语言来获取最低位(即与I/O端口等接口)。如果你还包含Windows ABI作为一个功能,那么它会变得更加困难,因为它们遵循Pascal调用约定。

+3

Windows API不是操作系统的必要组成部分。 – 2010-01-01 10:03:35

5

理论上,是的。但是,您需要以某种方式使用低级代码运行Java VM(除非您想将Java编译为汇编程序,如果不牺牲Java的许多功能,这可能是不可能的)。

+0

Eli击败了我大致相同的答案... – 2010-01-01 08:49:57

+0

Jikes RVM(以前称为IBM Jalapeno)和Sun Lab的Maxine是自承载JVM的两个示例。前者有大约1000行C. Java通常被编译成机器码。 – 2010-01-01 11:34:06

+0

@ TomHawtin-tackline,Maxine是否向公众开放? – 2011-11-19 10:26:56

10
+2

这里还有一个。 http://sourceforge.net/projects/jos/。但我第二个是Eli Bendersky和Ron Gejman说的。 – 2010-01-01 08:52:57

+0

我可以将它安装在VmWare上吗? – 2016-07-30 07:32:58

3

操作的系统更接近的硬件(像驱动程序)。在我看来,这不是Java领域(只是问题域操作系统的错误解决方案)。

5

从理论上讲,你实际上可以使用Java processor来编写Java中的整个操作系统。基本上它使用Java字节码作为处理器的指令集。

3

正如上面提到的那样,它已经是一个尝试。 Jnode是唯一一个经受住了时间考验的人,并且正在积极努力,尽管他们还没有多年发布新版本。 但是,如果你看看他们的Git提交,他们正在撰写即将发布的版本。我是Java的粉丝,期待发布。那些讨厌Java这类冗长的命令式语言的人会畏惧这个想法,但并不适合所有人。

有趣的是在硬件中实现Java字节码的想法。我认为这不会成为任何问题,因为Java的优势在于您无需担心硬件问题。您只需要在Java中获得操作系统,并且可以在任何JVM上运行。

我认为Java在操作系统领域的真正威力是虚拟化。 Java无处不在,我无法想象拥有更好的虚拟操作系统。

正如上面提到的其他海报,它不能在没有Java硬件实现的Java中完全实现。 Jnode完全是用汇编和Java编写的。但是,所有现代操作系统都使用汇编语言。

相关问题