2010-01-01 104 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編寫的。但是,所有現代操作系統都使用匯編語言。

相關問題