web-dev-qa-db-ja.com

Javaを使用してオペレーティングシステムを作成することは可能ですか?

C言語で記述されたwindows-xpのような操作を、Java

27
giri

理論上はそうですが、bootstrap the Java VMこれはマシン上で実行され、ハードウェアドライバーにアクセスするための低レベルのコードも実行します。

wikipedia から:

Sun MicrosystemsのJavaが今日最も有力なオブジェクト指向言語の1つであることを考えると、Javaベースのオペレーティングシステムが試みられたことは当然のことです。この領域では、理想的には、カーネルはJVMをサポートするために最低限必要なもので構成されます。これは、Java以外の言語で作成する必要のあるオペレーティングシステムの唯一のコンポーネントです。そのJVMと基本的なハードウェアサポートに基づいて構築すると、オペレーティングシステムの残りの部分はJavaで、従来はCなどの低レベル言語で記述されているシステムの一部(デバイスドライバーなど)でもJavaで記述できます。

このようなオペレーティングシステムでの試行の例には、JX、JNode、JavaOSなどがあります。

38
Eli Bendersky
10
sesteel

理論的にはそうです。しかし、どういうわけかJava VM低レベルのコードを使用して実行する必要があります(Java Javaの機能の多くを犠牲にすることなしにはおそらく不可能です)。

5
Ron Gejman

理論的には、実際にはOS全体をJava Javaプロセッサ で記述できます。基本的には、命令としてJavaバイトコードを使用しますプロセッサ用に設定

5
iCodeSometime

それは、あなたが「機能」をどのように考えるかに依存します。グラフィカルインターフェイス、派手なウィンドウ効果などを意味する場合は、はい。ただし、最下位ビットにはアセンブリ言語またはCが必要です(つまり、I/Oポートとのインターフェイスなど)。 Windows ABIも機能として含めると、Pascalの呼び出し規約に従うため、さらに難しくなります。

オペレーティングシステムはハードウェアに近くなります(ドライバーなど)。私の見解では、これはJava(問題のドメインオペレーティングシステムの誤った解決策)の領域ではありません)。

3
manuel aldana

他の人が前述したように、それはすでに試みられています。 Jnodeは、長年のテストに耐えて、数年のうちに新しいビルドをリリースしていませんが、積極的に取り組んでいる唯一のものです。しかし、Gitのコミットを見ると、私がこれを書いている間、彼らは差し迫ったリリースに取り組んでいます。私はJavaのファンであり、リリースを楽しみにしています。Javaのような冗長な命令型言語を嫌う人々は、アイデアに飽き飽きしていますが、すべての人に適しているわけではありません。

また興味深いのは、Javaバイトコードをハードウェアに実装するという考えです。Javaの強みは、ハードウェアについて心配する必要はありませんJavaでOSを取得するだけで、どのJVMでも実行できます。

Javaの真の力は仮想化です。Javaはどこにでもあるので、仮想OSを使用するより良い方法は考えられません。 。

上記の他のポスターのように、Java Javaハードウェア実装なしでは完全に実装することはできません。Jnodeは完全にアセンブリとJavaで記述されています。しかし最近のオペレーティングシステムはすべて、アセンブリ言語を使用しています。

3
magneto12321