18

Java 実装 ( OpenJDK) と Android の仮想マシン DalvikVM の両方がオープンソースであるため、Google の DalvikVM の上に Sun の JavaVM を実装できる必要があります。これにより、JVM ベースのアプリと言語 ( Clojure, Jython) を Android 上ですぐに実行できるようになります。

Sun JVM のそのような実装を作成するための継続的な取り組みはありますか?

4

7 に答える 7

13

OpenJDK はネイティブ コードを使用するため、重要なポートになります... Java で記述された VM ( JikesRVM ) が少なくとも 1 つありますが、残念ながら Java の完全に機能する実装ではありません。

DalvikVM は .class ファイルから変換されたクラスを実行するため、クラスを変換できるはずです。次に、「唯一の」問題は、言語がオンザフライでバイトコードを生成する場合です。そのためには、プログラムが DalvikVM で実行されている間に、生成されたバイトコードを DalvikVM 形式に変換する追加の手順が必要になります。

うーん....電話での実行時にクラスファイルをDalvikVMファイルに変換するJITT(Just In Time Translator)のようなものです。私はそれがどれほど遅いのだろうかと思います。

于 2009-03-22T16:07:40.977 に答える
9

OpenJDK の Android プラットフォームへの移植が可能です。ポート プロセスを大幅に簡素化する Shark、Zero、caciocavallo などの取り組みがあります (= ASM なし、単純な AWT ピア)。さらに、Android は背後にある Linux カーネルに他なりません。唯一の問題は、それが誰によっていつ行われるかということです。

ところで、iphone と android 携帯の両方に Jazelle 互換プロセッサが搭載されているため、非常に強力なプロセッサ ハッキング スキルを持つ誰かが Jazelle サポートを OpenJDK に追加することを大歓迎します。そうすることで、非常に軽いリソースアクセラレーション (Jazelle) と JIT のいずれかを選択できます ;-)

iPhoneについても同じことで、ポート可能です。VM の使用を明確に禁止するセクションを iPhone のライセンスに入れているのは Apple だけです。ヨーロッパの法律により、私にとって、このライセンス セクションは違法です。2 つの理由: 2 つの製品の強制購入/リンク購入はできません。ここでチューニングを行い、iPhone をリンクします。売れるものを売ることを拒むことはできません。VM が iPhone 用にビルドされるとすぐに、iTune ストアへの配置が拒否された場合、この点が適用されます。地球上で Apple ライセンスの合法性に異議を唱えたい人はいますか? 私はそうは思いません。不幸な人々は Android やその他のプラットフォームに飛んでいくでしょう。

于 2009-09-29T10:23:52.000 に答える
1

それまでの間、可能な解決策を見つけました(JavaMEのみ):

于 2009-03-22T16:57:18.033 に答える
1

技術的には、dalvik vm 上のホットスポット バイトコードまたはホットスポット上の dalvik のバイトコードを解釈できるはずですが、長期的には効率的な (エレガントなことは言うまでもなく) 設計にはなりません。そのためのコストは、特にそのような分割されたエコシステムの将来の進化におけるメンテナンスに関して非常に高くなる可能性があります.

当初から、dalvik vm は、Java 仮想マシンのエコシステムを改善するための革新的な取り組みではなく、権力/市場管理の問題であると思います。dalvik vm と hotspot vm は、互いに 5 メートル離れて平行に構築された、同じ川に架かる湖 2 つの高速道路の橋です。それは Java 技術エコシステムに分裂と混乱をもたらします。

私の意見では、Google は間違いなく過去 10 年間に革新的な貢献をした技術的リーダーであり、はるかに保守的なオラクルを圧倒しています。私たち (プログラマー) は、この問題に対する単一の統一された解決策を模索する必要があります。とにかく、それが「仮想マシン」の概念の背後にある主なアイデアです.Googleにもオラクルにも属してはなりません.

于 2011-07-24T00:14:00.610 に答える
1

debian Wheezy で GNURoot アプリ (proot ptrace コンテナー) を試してください。
apt-get update
apt-get install openjdk-7-jre
/usr/lib/jvm/java-7-openjdk-armel/jre/bin/java ...
(長いパスを含む)

于 2014-09-05T12:08:18.130 に答える
0

問題は技術的なものではないと思います。理論的には、たとえば OpenJDK を iPhone に移行できますが、法的な制限があります。

于 2009-03-22T13:14:46.243 に答える
0

Android ARM apk の MIDP、Foundation、および Personal Profile jvm については、http: //davy.preuveneers.be/phoneme/を参照してください。(デイビーありがとう!!!)

コマンド ラインで使用する Foundation jvm を再パッケージ化し、vkfox.com/android/bin/foundation-jvm.bin でホストします。オンボード開発システム用の J2ME jdk からのスタブ化された cdc + ファンデーション jar ファイルと一緒に、JavaIDEdroid 無料アプリで Eclipse コンパイラーを使用するか、この jvm で古い kopi または kopisusu コンパイラーを使用できます。TerminalIDE の機能 (コンソールおよび Sun コンパイラー) を指示された ref jar と共に使用することでも、そこに到達できます。これは本質的に、MIDP または awt グラフィックスの可能性があるヘッドレス jdk1.4 と同等です。

于 2014-01-31T19:12:20.393 に答える