1. 什么是EVM?
首先,这不是区块链那个虚拟机!
EVM是一款通用、精简的嵌入式虚拟机。他包含了语法解析前端框架和字节码运行后端,可以运行在资源受限制的单片机上。
1.1 EVM的特性
EVM是一款通用化设计的虚拟机引擎,拥有语法解析前端接口、编译器、虚拟机和虚拟机扩展接口框架。EVM专注与虚拟机运行性能、虚拟机稳定性和支持多种语言运行的能力。EVM虚拟机的特性描述如下:
1. 体积小,最小编译大小为40KB。
2. 占用资源少,最小内存要求为2KB。
3. 运行速度快,运行速度已经超过QuickJS。
4. 先进的内存管理,采用最复杂的压缩算法,无内存碎片(大部分解释器都存在内存碎片)。
5. 通用化的语法解析前端设计,可以支持多种语言。
6. 核心算法改进(哈希算法、编译原理等),满足嵌入式设备性能要求。
1.2 EVM对语言的支持
目前EVM虚拟机可以运行的语言有:Python3、Lua、JavaScript、QML、XML、JSON语法。其中QML语法属于多语言混合型语法,可以在QML中调用JavaScript语言。
1.3 EVM支持的芯片
EVM是一种纯C语言开发的虚拟机,没有任何外部依赖,可以在各种芯片上编译运行。目前EVM已经可以运行在stm32单片机系列上。
2. EVM引擎能带来什么
作为一款通用型的虚拟机,EVM可以为各行业的开发者带来更多的选择和玩法。
2.1 QML引擎
QML作为QT主打的面向UI开发的语言,其强大的描述能力和调用JavaScript的功能,为UI开发带来了全新的设计理念。尤其是QML属性绑定式编程,可以快速的描述UI的行为和动效。然而QML只能运行在QT图形引擎中,其体积庞大、性能不足的问题一直为人诟病,更不用说能让QML在单片机上运行了。但EVM引擎打破了这种限制,EVM引擎可以完整运行QML语法,同时通过虚拟机扩展接口,可以让QML语言服务于各种底层图形引擎,例如GuiLite、Littlevgl、AWTK等等。同时EVM引擎能够让多种语言混合运行,所以完美解决了QML中调用JavaScript的功能,并且还打破了QT中的QML无法调用JavaScript库的问题。
2.2 操作系统
目前针对物联网市场,出现了许多RTOS实时操作系统,例如:RT-Thread、LiteOS、TinyOS、AliOS、FreeRTOS、UCOS等等。那么高级语言开发底层设备变的相对容易很多。目前市面上支持高级语言编程的引擎有Jerryscript、Micropython、Espruino等等各种引擎,操作系统在适配这些引擎的时候变得非常复杂和繁琐,相当于每种引擎都要单独适配一遍。而EVM引擎只需要适配一次,就能满足多种语言开发,大大节省了资源和时间,同时EVM的运行性能远高于这些引擎,可以大幅度提升脚本运行的速度。
2.3 开发者
物联网的技术领域是互联网技术与嵌入式技术相结合的技术领域。开发者可能会来自各行各业,有做前端的、有做后端的、有做网路的、有做硬件的,没有任何一种编程语言有绝对优势。移植了Micropython的芯片可能无法满足JavaScript开发者要求,而移植了Jerryscript的芯片又无法满足Python爱好者的要求,两者都移植上去恐怕芯片资源都不够用。而EVM引擎能够很好解决这个问题,开发者可以根据需求来选择所熟悉的开发语言,并且EVM引擎允许多种编程语言之间相互调用,从而满足不同开发技术人员之前相互配合的问题。
2.4 生态
由于EVM虚拟机专注于虚拟机技术和虚拟机扩展技术,所以可以很容易对接其他解释引擎的生态资源。例如EVM虚拟机可以通过字节码翻译技术,将webassembly的字节码翻译并运行,这样可以完美兼容webassembly技术,同时又能为webassembly提供底层资源和内存管理等丰富的功能。
网友评论