是DART VM仍在使用?

问题描述 投票:22回答:3

我一直在使用镖/扑了几个项目,我真的很喜欢它。

我读过,建立一个移动应用程序时,镖建立与本地代码的本地应用程序。但是,我也看到了那个飞镖都有自己的虚拟机性能。

我试图理解的是,如果该虚拟机是当你建立一个移动应用程序有什么用呢,还是建立其编译为本地应用其他代码。而如果做别的事情,什么是飞镖VM还是用的呢?

dart flutter
3个回答
48
投票

简短的回答:是的,当你建立你的移动应用程序仍在使用飞镖VM。

现在不再回答:飞镖VM有两种不同的操作模式的一个JIT和AOT一个。

在JIT模式达特VM能够动态地加载达特源,解析它和它编译为本机机器代码在运行中执行它。当你开发你的应用程序,并提供了诸如调试,热重装等使用此模式

在AOT模式达特VM不支持的达特源代码动态加载/解析/编译。它只支持加载和执行预编译的机器代码。然而,即使预编译的机器代码还需要VM来执行,因为VM提供一种含有垃圾收集器,发挥作用所需要的dart:*库各种本地方法,运行时类型信息,动态方法查找等该模式在已部署的应用使用的运行时系统。

哪里预编译的机器码AOT模式从何而来?此代码是由您的应用程序扑VM(的一种特殊模式)当您在发布模式下构建应用程序产生的。

你可以阅读更多关于达特VM如何执行飞镖代码here


9
投票

当飞镖VM在发布模式下使用,它是不是真的在软件实现的虚拟计算机的处理器,它有它自己的机器语言,从硬件的机器语言不同的传统意义上的VM(虚拟机)。

这是什么原因导致在原来的问题的困惑。在发行模式下,飞镖VM基本上是一个运行时库(比所有的高级语言,需要运行时库没有太大的不同)。


0
投票

达特VM是服务器端应用程序非常不错,尤其是在使用dart:io访问本地文件,进程,和插座。

© www.soinside.com 2019 - 2024. All rights reserved.