构建Lua和JS环境虚拟机1

Posted 万云阁主

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建Lua和JS环境虚拟机1相关的知识,希望对你有一定的参考价值。

构建Lua和JS环境虚拟机

 

编写本文的基础在于,编者想将一些好的框架或者好的引擎,特别是C/C++实现的引擎和框架,想利用轻量级的脚本语言lua或者js实现之,这个好处是:令编码实现需求变得更加容易,使得开发过程中,不用掌握太过繁杂的语法知识,能够支持热更新机制,不再局限于历史上的更新方式。这些都是值得研究和推崇的,让编程变得更加简单,让编码量变得更加少,以期实现全民编程。这是本文的基础。

 

思想基础已经确定,编者开始来讲解虚拟机的实现过程。虚拟机的概念是什么呢?很多人都有一些概念,怎么样去看待虚拟机。我们都知道java是有一个虚拟机的,jvm。那么jvm提供了什么呢,jvm令我们的编码不再局限在C++层,不再局限在C层,甚至操作系统汇编层面,它提供的技术,令我们可以编写一套代码,全平台运行之,仅仅需要安装jvm即可。有的读者可能有疑问,我们使用C/C++编写的应用,难道全平台运行不了?确实是运行不了。我们利用C语言,编写windows的exe,编写centos的可执行程序,他们都不是跨平台的,每一个平台的代码都需要重新构建,去适配执行。这里不用拿ANSI C去做对比,毕竟这个是标准C,绝大多数编译器都是支持的。那我们应该拿什么去对比呢。图形库,网络库,那这些去做对比。

 

使用C语言的都清楚,不用的系统的,支撑图形库的技术不同,opengl,direct x等,网络库也是实现不同,有的是重叠IO,有的是epoll,poll,select等等。我们发现编写跨平台的网络应用相关的,我们得分别写多套有关网络处理的应用,以期实现我们的需求。编写的代码量很大,并且出现bug各个平台并无相同。遇到问题,也不能很好解决。这是我们常见的引擎开发中遇到的问题:windows平台上面展示可行,macos平台展现乱码。我们得自己分别出处理才行,得自己去主动维护,如果引擎方面不再提供支持维护的话。这在编者使用cocos2d-x引擎方面,遇到的情况颇多。

 

假定我们采取java开发的话,我们会担心这个问题吗?完全不用,因为虚拟机已经帮我们处理好了。虚拟机已经在适配各个系统平台上面,帮我们处理好了这一切,我们要做的仅仅是利用java去实现我们的需求即可。

 

这无疑令我们的关注面大大减少,同时令开发维护量也减少了。遇到跨平台的bug,虚拟机提供方面,已经帮我们处理好了,悄悄更新虚拟机即可。

 

其实这个道理,和我去开发lua/js虚拟机很类似。我们开发lua虚拟机,不就是为了令使用lua去制作app或者游戏的人,更加快捷和舒适吗。使用UE4蓝图开发,运行效率低下,使用C++开发,开发效率低下,开发速度慢。使用lua开发,效率可以得到一定维护,开发速度更快,取两者的中间值,既拥有了一定的开发效率,也拥有了一定的运行效率。何乐而不使用之。

 

本文并没有直接去讲解实现,实现的部分,我们后面的文章慢慢道来。有很多读者可能有疑问,为什么要采用lua/js,而不是其他的语言,lua是ANSI C实现的,标准C可以跨平台,仅仅需要底层编译通过,并不需要安装额外的lib。另外采取js实现虚拟机,无非是一种兴趣。

以上是关于构建Lua和JS环境虚拟机1的主要内容,如果未能解决你的问题,请参考以下文章

lua虚拟机概述

深入理解 Lua 虚拟机

使用 Vagrant + VirtualBox 快速构建 CentOS 下的 Docker 环境

深入理解Java虚拟机MacOS构建编译环境

Lua 核心概念

深入理解Lua虚拟机