2

Dalvik と Google の Android OS が初めて登場したとき、それについてよく読みました。私がよく理解していないことの 1 つは、Java が使用される理由です。私がそれを理解する方法は次のとおりです。

Java code -> Java bytecode -> Dalvik bytecode

私が理解できないのは、Dalvik VM 用の Java 以外のストレートな Dalvik コードやその他のフロント エンドにコンパイルされるものをまだ見ていない理由です。Java を使用せずに Android を操作するストレート コンパイラや方法について何か作業が行われていますか?

明確にするために、Java バイトコードにコンパイルされない言語を探しています。また、動的言語には関心がありません。動的言語に関するいくつかの質問を既に読みました。また、NDK についても認識しています。実際のネイティブ コンパイル言語ではなく、Dalvik でコンパイルされた言語に関する情報を探しています。

4

4 に答える 4

2

オペレーティング システム (*nix のバリエーション) 上で直接実行されるネイティブ Android アプリケーションを作成する可能性もあります。そのための推奨される方法は、Android NDK を使用することです。

http://developer.android.com/sdk/ndk/index.html

それを行うには、より「ハックな」方法もあります。ARM C/C++ コンパイラを使用して、通常の *nix プログラムのようにアプリケーションを作成するだけです。ただし、これは主に GUI を使用しないバックグラウンド サービスに適しています。

于 2010-10-14T07:32:38.563 に答える
1

私が理解できないのは、Dalvik VM 用の Java 以外のストレートな Dalvik コードやその他のフロント エンドにコンパイルされるものをまだ見ていない理由です。

この理由は、基本的に「Dalvik への直接」コンパイラが必要ないためです。ご指摘のとおり、既存のコンパイル チェーンはとにかくバイトコードを介して行われるためです。

dalvik に直接行く唯一の理由は、言語がバイトコードにない dex 機能を何らかの意味で利用できるかどうかです。ただし、dex と Java バイトコードは非常に似ています。主な違いは、JVM がスタック ベースであるのに対し、Dalvik はレジスタ ベースであることです。それ以外は、命令セットは驚くほど似ています。


おそらくすでにお気づきのことと思いますが、JVM に基づく言語、つまり Java バイトコードにコンパイルされる任意の言語を使用できます。

いくつかの例:

于 2010-10-14T07:46:36.833 に答える
1

MonoDroid は、C#.NET コードを Dalvik に変換するベータ プロジェクトです。完全に完成したわけではありませんが、C# は知っているが Java は知らない人にとっては、いくつかの可能性が開かれます。

于 2010-10-14T15:03:51.417 に答える
0

Java は Android 開発が公式にサポートしているものであり、Android SDK は開発に基づいているため、誰もが Java を使用しています。ただし、C/C++ で開発できる NDK (Native Development Kit) も提供しています。

ここで元の発表を参照してください: http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

于 2010-10-14T07:30:56.120 に答える