【问题标题】:Is it possible to make an operating system using java?是否可以使用java制作操作系统?
【发布时间】:2010-12-31 14:03:27
【问题描述】:

我想知道是否可以像用 C 语言编写的 windows-xp 一样进行操作,就像我可以用 java 编写那样,这样我就可以拥有与用 C 编写的相同的功能

【问题讨论】:

  • 已经有这样的操作系统了!看看这个 => sourceforge.net/projects/jos
  • JOS 从来没有成功过……jnode.org 是一个更好的例子。
  • 即使是最少量的研究也发现已经创建了一个。

标签: java operating-system


【解决方案1】:

理论上是的,但您仍然需要一些低级汇编代码来引导将在机器上运行的 Java VM,以及访问硬件驱动程序的低级代码。

来自wikipedia

鉴于 Sun Microsystems 的 Java 是 今天是最具统治力的之一 面向对象的语言,它不是 惊讶于基于 Java 的操作 系统已尝试。在这个 区域,理想情况下,内核将 包括最低要求 支持JVM。这是唯一的 这种操作系统的组成部分 那必须写成 Java 以外的语言。建立在 JVM 和基本硬件支持, 剩下的可以写 Java中的操作系统;甚至 系统中更多的部分 传统上写在较低级别 诸如 C 之类的语言,例如设备 驱动程序,可以用Java编写。

此类尝试的示例 操作系统包括 JX、JNode 和 Java操作系统。

【讨论】:

  • 硬件驱动也应该用Java编写。
【解决方案2】:

【讨论】:

  • 这里还有一个。 sourceforge.net/projects/jos 。但我赞同 Eli Bendersky 和 ​​Ron Gejman 的说法。
  • 我可以在 VmWare 上安装它吗?
【解决方案3】:

理论上,是的。但是您需要以某种方式让 Java VM 使用低级代码运行(除非您想将 Java 编译为程序集,这在不牺牲 Java 的许多特性的情况下可能是不可能的)。

【讨论】:

  • Jikes RVM(以前的 IBM Jalapeno)和 Sun Lab 的 Maxine 是自托管 JVM 的两个示例。前者有大约 1000 行 C 代码。Java 通常被编译成机器码。
  • @TomHawtin-tackline,Maxine 向公众公开了吗?
  • @Thorbjørn Ravn Andersen HotSpot 是 Oracle 生产 JVM。仍然有 JRockit,当重要的等效功能添加到 HotSpot 时,它将被逐步淘汰 - 拥有两个生产 JVM 没有意义。 (还有 Java ME JVM,同样如此。)
【解决方案4】:

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

【讨论】:

【解决方案5】:

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

【讨论】:

  • Windows API 不是操作系统的必要部分。
【解决方案6】:

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

【讨论】:

    【解决方案7】:

    正如上面提到的其他人,它已经是尝试者了。 Jnode 是唯一一个经受住了时间考验并且正在积极开发中的,尽管他们已经多年没有发布新版本了。 但是,如果您查看他们的 Git 提交,就会发现在我写这篇文章时,他们正在开发一个即将发布的版本。我是 Java 的粉丝,期待发布。讨厌像 Java 这样冗长的命令式语言的人对这个想法感到畏缩,但它并不适合所有人。

    在硬件中实现 Java 字节码的想法也很有趣。我认为这不会有任何进展,因为 Java 的优势在于您无需过多担心硬件问题。您只需要获得一个 Java 操作系统,它就可以在任何 JVM 上运行。

    我认为 Java 在操作系统领域的真正力量在于虚拟化。我想不出更好的方式来拥有一个虚拟操作系统,因为 Java 无处不在。

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

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2012-05-09
      相关资源
      最近更新 更多