13

まず、この質問に不適切なタイトルを付けた可能性があると思いますが、適切な言葉が思い浮かびませんでしたので、お気軽に編集を提案してください。質問がより教育的で他の人に関連するものになるようにします.

javax.Swing を Android プロジェクトに使用できないことはわかっています。これを受け入れ、Android XML ベースの UI デザインを学びましたが、好奇心から、その理由を正確に知りたいと思っています。

電話の画面サイズは Swing ではうまく処理できない可能性があることは理解していますが、開発者が単に javax.Swing パッケージをインポートするのを止めるにはどうすればよいでしょうか (Android Studio がそもそもそれを起こさせないことに加えて)。変形した見苦しい Swing ウィンドウが Android デバイスの画面に表示される可能性はありますか? また、AWT と SWT もインポートする必要があることも認識していますが、同じ質問がこれらのパッケージにも当てはまります。

私がこれを理解していないのは、Java 仮想マシンと Android の同等物がどのように使用されているかを理解していないことが原因かもしれません (Dalvik はまだ使用されているのでしょうか、それとも冷ややかな七面鳥を ART に切り替えたのでしょうか?)。

いつものように、あなたが提供できる主題に関する情報や読み物は大歓迎です. JVM、Dalvik、および ART がどのように機能するかの基礎についてもっと学びたいと思っています。

4

2 に答える 2

9

少なくとも 3 つの基本的な違いがあります。

  • API が異なります。たとえば、Android の SDK の最新バージョンでさえ JSR 203 を持っていません。
  • バイナリ形式が異なります。Dalvik/ART は JVM バイトコードを生成しません。
  • 言語レベルが異なります。特定の言語レベルをサポートするために、Dalvik/ART は独自の VM に適合するようにすべての解析/バイトコード生成を再実装する必要があるため、これは前のポイントの結果の一部です。

後者の点は、結果として、Android では、5前に Java で登場した try-with-resources のメインストリーム サポートがまだないことを意味します。これに加えて Java 8 の「優れた機能」をサポートするためのさまざまな取り組みが行われてきましたが、どれも実際には Java の「コア」ではありません。彼らは JVM を使用しておらず、Java コンパイラーも使用していません。

最近のニュースによると、これは「Android N」(実際には OpenJDK を使用する) で変更される予定です。これは朗報です。また、ポイント 1 については、API が著作権で保護されているという悪名高い Oracle 対 Google のケースを思い出すかもしれません... これはまだ完全に解決されていません。

于 2016-03-31T14:05:03.467 に答える
3

この記事はhttp://www.techentice.com/dalvik-vs-art-android-drop-dalvik-effective-art/に役立つかもしれませんが、多少古くなっていますが、すでに. ただし、JVM と DALVIK および ART の違いについては説明しています。

于 2016-03-31T13:58:52.910 に答える