この質問は最初はばかげているように聞こえるかもしれませんが、まったくそうではないかもしれません。
Java は Java 言語ではありません。Java はScala や Groovy などの他の多くの言語でプログラミングできるため、ほとんどの人はそのことを知っています。
Java は具体的な VM の実装ではありません。SUN、Microsoft、IBM だけでなく、他の実装もあるからです。
Java はクラス フレームワークではありません。多くの実装では、自由にクラスを追加したり除外したりします。
一般的な VM 仕様や Java バイトコードを使用する必要さえありません。Dalvik VMを参照してください。
それが何であれ、それは彼らが共有する一連の原則に過ぎないのかもしれません。これは、少なくとも Dalvik と Microsoft VM/J# には当てはまらないため、「一度書けばどこでも実行できる」というわけではありません。
問題は、Java とは正確には何なのかということです。正確な定義さえありますか?
EDIT 多くの人が、Java はプログラミング言語のみを意味するという意見を持っているようです。したがって、Java 対応の携帯電話は、Java 言語のみで作成されたクラス ファイルで構成されるプログラムをユーザーが使用できる電話でなければなりません。これが本当なら、Java 仮想マシン / Java ランタイム環境 / Java 開発キットは Java 専用に作られ、他の jvm 言語には独自の対応する xvm / xre / xdk があります。