30

Android が Dalvik VM で実行されているため、JVM 用の動的言語 (Clojure、Jython、JRuby など) は Dalvik (したがって Android) で良好なパフォーマンスを得るのが難しいと、ある時点で読んだことがあると思います。私の記憶が正しければ、その理由は、動的型付けを実現するために、内部で Java バイトコードをいじるのにかなりの手間がかかり、バイトコードから dalvik への変換ではこれを簡単に検出できないということでした。

では、Android 向けに開発したい場合、動的 JVM 言語を避けるべきでしょうか?


編集:もう少しコンテキストを提供する必要があったと思います。Clojure を使用して Android 向けのアプリを開発することを検討していました。Clojure を使用することを考えていた理由はいくつかあります。

  • FPを学びたい

  • 私はJavaを学ぶことにあまり興味がありません

  • Clojure には、非常に興味深い言語概念がいくつかあるようです (たとえば、STM)。

しかし、Clojure で Android 用のアプリを作成しようとすると、容認できないパフォーマンスの問題があることがわかりました。しかし、動的型付けを取得するために必要なバイトコード操作が原因で、動的型付け言語 (Clojure など) に問題があるというブログ投稿を見つけました。だから私は、これが真実かそうでないかの独立した確認を探していました. この特定の問題では、動的に型指定されたすべての JVM 言語を同じものとして扱うことができると仮定するよりも、私はよく知っていたはずです。私はかなり幅広い質問をしたと思うので、人々が私が尋ねていることをよく理解していなくても驚かないでください.

4

5 に答える 5

17

Dan Bornsteinは、Google I/OでDalvikに関するプレゼンテーションを行いました。気になる制約を含め、システム全般について学ぶことは注目に値します。Q&A中に、Javaバイトコードにコンパイルされた非Java言語の特定の問題が発生します。

Remco van't Veerにはgithubプロジェクトがあり、Androidで動作するようにClojureにパッチを適用しています。 Tim Riddellが、その使用方法に関するチュートリアルを作成しました

@seanがここで述べたように、パフォーマンスだけでなく大きな問題が発生することもあります。ダン・ボーンスタインは、ビデオで54:00までに、Jythonについて尋ねられたときにそれについて話し合っています。 現在、オンザフライでバイトコードを生成する動的言語はサポートされていません(バイトコード変換は実行時に利用できないため)。

于 2009-07-04T08:41:07.287 に答える
3

Androidにスクリプティングが追加されました

于 2009-06-10T02:34:09.060 に答える
2

clojureを機能させるためのパッチがいくつかあります。

http://riddell.us/tutorial/clojure_android/clojure_android.html

本当の問題は、いくつかの動的言語によるバイトコードジェネレーターの使用だと思います。DavlikVMのバイトコードは生成されません。したがって、evalは機能しません。

于 2009-06-10T02:12:37.467 に答える
2

実行中の電話の比較的窮屈なハードウェアを考えると、おそらくJavaをターゲットにするだけで、動的なjvm言語について心配する必要はありません。jvm上の動的言語は、私の理解ではJavaほど効率的ではありません。

Android SDKは非常に正気で書きやすいだけでなく、他のものを使用してもそれほど多くのメリットは得られないと思います。

于 2009-06-10T02:17:15.867 に答える
1

JVM の動的言語は、Dalvik で良好なパフォーマンスを得るのが難しいでしょう。

動的言語は、良いパフォーマンスを得るのに苦労しています。パフォーマンスが必要な場合は、Java (または C#、F# など) などの静的に型付けされた言語を使用してください。

于 2015-04-28T08:59:52.590 に答える