11 2014
10

TinyJS解释器使用感想
2014年11月10日

虽然我曾经是个C++党,坚定的Java排斥者,但是在之前的工作当中,Java是仅次于PHP我最常用的语言。 然而现在手头上的工作是需要做一个运行于手机上,支持iOS与Android的渲染器,能同时支持两个平台的语言,也就C/C++了。 说实的,用了这么久更新的语言,再回头用C++,也觉得这个语言也确实挺难用的。 为了能够降低开发复杂度,一部分性能不太重要的逻辑部件决定使用JavaScript开发。 这就需要集成一个JavaScript解释器。

说到JavaScript,最出名的莫过于Google的V8解释器。其他的还有MuJS等号称更轻量级的解释器。 但是这些都太庞大了,虽然在功能全面性与性能等方面,这些“胖子”都很可靠,但是集成到我们自己的项目里来, 颇觉喧宾夺主,只是需要个简单的脚本解释却得集成一个比我们自己项目还要庞大的系统进来十分令人不爽。

我与我的同伴在做过很多研究,最终决定选择使用一个开源的个人开发的解释器:TinyJS。

这东西确实对得起自己的名字,唯一必选的部件,也就是语法解释器的核心是个只有一个2000+行的C++文件。 但是不得不说,也无愧它的名字,功能少的可怜,缺少for in循环,和众多实用函数。 我们刚开始是自己给它添加了这些功能,但是最终发现在数组与字符串处理方面的函数缺失太严重, 决定放弃这个确实足够小巧的解释器。

我们转向了他的兄弟项目TinyJS 42。这是另一个人在原版的基础之上改造出来的一个更加全面的JavaScript解释器,只是个头大了一倍。 不过即使大了一圈,他的体积也还是够小巧可爱。 虽然也存在不少问题,着实让我们头疼周旋了一番,不过最后可以良好运转,性能对我们的目的已经完全足够。

我们并没有科学全面地测试过这个解释器,不过感官上来讲,该有的功能都有,用来做为游戏的内嵌解释器挺合适的。