2009-03-22 8 views
18

Java実装(OpenJDK)とAndroidの仮想マシンDalvikVMはオープンソースなので、SunのJavaVMをGoogleのDalvikVMに実装する必要があります。これにより、JVMベースのアプリケーションと言語(Clojure, Jython)をアンドロイド上ですぐに実行できるようになります。AndroidでJavaバイトコードを実行する - DalvikVMの上にあるSun JVM

このようなSun JVMの実装を継続的に作成する努力はありますか?

+0

は、Androidの携帯電話でjavaバイトコードを実行できるのですか?もしそうなら、あなたはステップを列挙できますか? – inquisitive

答えて

13

OpenJDKはネイティブコードを使用しているため、通常のポートではありません...少なくとも1つのVM(JikesRVM)がJavaで書かれていますが、残念ながらJavaの実装は完全ではありません。

DalvikVMは.classファイルから変換されたクラスを実行するので、クラスを変換する必要があります。そして、 "唯一の"問題は、プログラムがDalvikVM上で動作している間に、生成されたバイトコードをDalvikVMフォーマットに変換する余分なステップが必要であるためです。

Hmmm ....実行時にクラスファイルを実行時にDirvikVMファイルに変換するJITT(Just In Time Translator)の並べ替え。私はそれがいかに遅いのだろうかと思います。私は可能な解決策(のみJavaMEの)を発見した一方

+0

hm。 1995年にx86のemuで動く眺めのような、jvmの中の? :) – George

+0

古いものはすべて新しいものです:-) – TofuBeer

0

私は問題が技術的だとは思わない。理論的には、OpenJDKをiPhoneに移行することはできますが、適法な制限があります。

+0

アンドロイドの使用許諾は次のとおりです:http://developer.android.com/sdk/download.html?v=android-sdk-windows-1.1_r1.zip私はここに法的障壁は見当たりません。 – George

+0

また、Android OSはApacheとGPLライセンスの下にあります:http://source.android.com/license。したがって、法的な制限はありません。 – George

9

可能です。ポート・プロセス(= ASMなし、シンプルなAWTピア)を大幅に緩和するShark、Zero、caciocavalloのような努力があります。 Plus Androidは、Linuxカーネルの背後にあるものにすぎません。唯一の疑問は、誰によっていつ行われるのだろうか?

ところで、iphoneとアンドロイドの両方の電話機にはJazelle互換のプロセッサが搭載されています.JackelleのサポートをOpenJDKに追加することは非常に強力なプロセッサハッキングスキルを持つ方が大歓迎です。 こうすることで、非常に軽いリソースアクセラレーション(Jazelle)とJITのどちらかを選択することができます。

iPhoneについては、それは同じことです:ポートが可能です。 AppleだけがiPhoneライセンスに、VMの使用をはっきりと禁止するセクションを入れている。ヨーロッパの法律に従って、私には、このライセンスセクションは違法です。 2つの理由:2つの製品を強制的にリンクすることはできません。ここで私は調整し、アイフォーンはリンクされています。あなたが売ることができるものを売ることを拒否することはできません。ここでは、VMがiPhone用に構築されるとすぐに、iTuneストアに置くことが拒否されると、この点が適用されます。アップルのライセンス合法性を地球上で争う人はいますか?私はそうは思わない、不幸な人々は、Androidや他のプラットフォームに飛ぶだろう。

1

技術的には、ホットスポットのdalvik vmまたはdalvikのバイトコードでホットスポットのバイトコードを解釈することは可能ですが、長期的には効率的なデザイン(エレガントではない)は決してありません。このような分割された生態系の将来の進化における維持管理に関して、そのコストは非常に高くなる可能性があります。

私は、最初から、dalvik VMは、Java仮想マシンのエコシステムを改善する革新的な努力ではなく、電力/市場管理の問題だと思います。dalvik vmとhotspot vmは、同じ川を渡る湖2つの高速道路の橋であり、お互いから5メートルの距離に並んでいます。それは分裂し、Java技術の生態系に混乱をもたらします。

googleは、私の意見では、過去10年間で革新的な貢献をしてきた技術リーダーであり、はるかに保守的なオラクルを矮小化していますが、この非常に主題ではほぼ破壊的な方法でJavaの生態系を揺さぶっています。我々(プログラマー)はこの問題に対する単一の統一的な解決策に努めなければならない。とにかく "仮想マシン"という概念の背後にある主なアイデアです - それはgoogleもoracleにも属してはいけません。

0

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

私はコマンドラインで使用するFoundation jvmを再パッケージし、vkfox.com/android/bin/foundation-jvm.binでホストしています。 JavaIDEdroidの無料アプリでeclipseコンパイラを使用することも、このjvmを使用して古いkopiまたはkopisusuコンパイラを使用して、オンボード開発システム用のJ2ME JDKからスタブされたcdc + foundation jarファイルを作成することもできます。 TerminalIDEの機能(consoleとsunコンパイラ)を指定されたref jarとともに使用すると、そこにアクセスできます。これは、MIDPまたはawtグラフィックの可能性を持つヘッドレスjdk1.4と本質的に同等です。

0

試してみるDebian Wheezyを使ってGNURoot app(proot ptrace container)を試してみてください。 (長いパスを含む)
apt-getの
はapt-getをOpenJDKの-7-JRE
は/ usr/libに/ JVM/javaの-7-OpenJDKのタルメル/ JRE/binに/ javaのインストール更新...

関連する問題