2012-11-25 17 views
5

JVMなしで動作するJava実装があるかどうかは疑問です。私が興味があるのは、好奇心が強いからです。すべてのSunライブラリが添付されていない「軽量」Java実装があるかどうかは疑問でした。JVMなしのJava

また、C++でのJavaの埋め込みにも興味がありますが、C++でのJVMの埋め込みはかなり面白いようです。私はちょうど私のC++アプリケーションでJava言語の機能のいくつかを利用したいと思っていますが、軽薄なJava APIをすべて利用しているわけではありません。

編集:私は、私は明確にする必要があることを得ている回答のロットから見

...

私は最近、JavaScriptを使用していますNode.jsのアプリケーションを、開発になりました。 istelfのJavaScriptは言語仕様であり、DOM、window.openなどは自動的には付属していませんが、しばらくしていました。私は、Googleのv8と似たものがあるかどうかは、JavaScriptを除いて、Javaのものを除いては不思議です。結局のところ、Hello Worldアプリケーションを書くことができないのであれば気にしません。JavaScriptをv8やSpiderMonkeyを使ってC++アプリケーションに埋め込むことができるように、JavaをC++アプリケーションに組み込みたいだけです。私がそれを行うことができれば、コンソール出力をC/C++で実装し、その実装をJavaから呼び出し可能にすることができます。

+5

SunのlibsとJVMは完全に別個のもので、Javaの主な機能は最先端のガベージコレクタです。これは明らかにJVMの機能です。 –

+1

JVMのバイトコード以外にJavaをコンパイルするものはありますか?それともJVMのバイトコードを別のものにコンパイルするのでしょうか?または何? – hyde

+0

JavaScriptはスクリプト言語であり、ほとんどのスクリプト言語インタープリタは、他の言語(通常はC/C++などのコンパイル言語)に簡単に組み込むことができるように設計されています。私はなぜJavaのようなコンパイル言語をC++のような別のコンパイル言語に組み込みたいのかよく分かりません。 JavaScriptやPython、Luaなどのスクリプト言語インタープリタを使用する方が良いでしょう。これは、プログラムのスクリプト言語が必要な場合に埋め込むAPIを明確に定義しています。 –

答えて

0

JOP

+0

いくつかのネイティブJava CPUがあります。たとえば、[Wikipedia](http://en.wikipedia.org/wiki/Java_processor)を参照してください。 – JimmyB

5

例えば小型のデバイスで使用するために設計された軽量のJavaプロセッサを使用すると、API(標準ライブラリ)なしで一人でのJava VMをしたいかがありますか?

JREはJVM(Virtual MAchine)と標準ライブラリで構成されているため、JVMなしでJava実装を見つけることはできません... JavaソースコードをネイティブコードにコンパイルするコンパイラGCJを参照してください)、VM実装されていないJava実装はありません。

代替のJava実装については、this wikipedia pageをご覧ください。

1

GCJ(GNU Compiler for Java)がありますが、OpenJDKがオープンソースであったため、このプロジェクトは廃止されました。

1

「JVM」は、クラスをロードし、バイトコードを解釈し、ストレージを管理する方法を知っているメカニズムです。 JVM内のクラスや他の基本的なデータ構造を表現するために、いくつかのクラス(String、Classなど)が必要であることを除けば、本質的にjava.lang ...のものは含まれていません。

その結果、JVMのないJavaは単なる意味のないビットです。

コンパイルされたバージョンのJavaがインタープリタを必要としているか、必要としていません(合理的にコンパクトなインタープリタは非常に簡単です)。プリミティブなクラスローダーと何らかのストレージ管理はまだ必要ですが、クラスローディングは簡単に保つことができ、短期間のアプリケーション(または特別な制限がある場合)の場合、ストレージマネージャはガベージコレクションを行う必要はありません。

pstantonが示唆しているように、小型デバイスに適した「軽量」Java(または「Javaライク」)実装があります。

1

IMHO、あなたは本当に欲しいものを再試験する必要があります。

Javaランタイムは、コード

  • それに付属する標準ライブラリを実行するために、2つの主要コンポーネント

    • JVMで構成されています。

    Javaを使用することをお勧めしますが、これがなくても残っているものはありません。

    たとえば、StringがJDKのクラスであるため、ライブラリなしで「hello world」プログラムを作成することさえできません。

  • 関連する問題