2017-10-26 19 views
1

私はいくつかのプロジェクトでダーツ/フラッターを使用していましたが、本当に楽しんでいます。Dart VMは引き続き使用されていますか?

私は、モバイルアプリケーションを構築するときに、ネイティブコードでネイティブアプリを構築することを読んだことがあります。しかし、私はダーツがパフォーマンスのために独自のVMを持っていることも読んでいます。

私が理解しようとしていることは、そのVMがモバイルアプリケーションをビルドするときに使用されるものか、ネイティブアプリ用にコンパイルされた他のコードをビルドしているかどうかです。それが何か他のことをしているのであれば、ダーツVMはまだ何のために使われていますか?

答えて

7

短い答え:はい、モバイルアプリをビルドするときにDart VMがまだ使用されています。

もう少し答え:Dart VMには、JIT 1とAOT 1の2つの異なる動作モードがあります。

DART VMは、Dartソースを動的にロードし、解析し、実行時にネイティブマシンコードにコンパイルすることができます。このモードは、アプリケーションを開発する際に使用され、デバッグ、ホットリロードなどの機能を提供します。

AOTモードでは、Dart VMはDartソースコードの動的読み込み/解析/コンパイルをサポートしていません。これは、プリコンパイルされたマシンコードの読み込みと実行のみをサポートしています。しかし、プリコンパイルされたマシンコードでさえも、VMはランタイムシステムに、ガベージコレクタ、ライブラリの動作に必要なさまざまなネイティブメソッド、ランタイムタイプ情報、ダイナミックメソッドルックアップなどが含まれているため、VMを実行する必要があります。アプリ。

AOTモードのプリコンパイルされたマシンコードはどこから得られますか?このコードは、リリースモードでアプリケーションをビルドするときにFlutterアプリケーションから(特殊モードの)VMによって生成されます。

+0

これはすごくきわめて明快です。ありがとうございました。 – DragonFax

0

Dart VMは、特にdart:ioを使用してローカルファイル、プロセス、ソケットにアクセスするなど、サーバー側のアプリケーションにはまったく適しています。

+0

フラッターでビルドしたモバイルアプリでVMが使用されているかどうか知っていますか?それが私が尋ねた最初の質問でした。 – DragonFax

+0

モバイルでは、開発中にVMが使用されます。ホットリロードは、コンパイルされたコードでは機能しません。 –

+0

VMは、開発時とFlutterアプリケーションの展開時の両方で使用されます。 VMは常に存在し、ユースケースに応じて構成が異なるだけです。ダーツVMはスイス軍のナイフです、それはスライスし、ダイス。下の私の答えを見てください。 –

関連する問題