Archive for the ‘wmlscript’ Category

WML Script运行环境

星期六, 8月 15th, 2009

今天8月15日,距离过来封闭开发一个月了,wmlscript的运行环境算是做完了,由于扩展的库函数也不多,所以工作得以提早一点完成。

比较有成就感的地方在于,这次除了脚本文本=>字节码的过程需要借助gateway的代码之外,字节码的执行环境部分完全是自己设计和编写代码的。

也经过了性能测试和功能测试,而在180M主频的ARM上计算WML Script脚本的MD5算法,只需要90个毫秒左右。

当然,在设计上的瑕疵还是存在的,导致在内存回收上有些不够完美的地方,不过经过一番修补,测试中已经不存在内存泄露的问题了。

对比一下流行的浏览器中用来执行javascript和方式与字节码执行wml script的方式:

javascript的执行是按照文本来进行逐行执行,而wml script则是预编译成字节码,然后像虚拟机一样执行。

从这个角度看,当然是字节码的执行效率更高了。当然,如果把javascript也进行预编译,执行效率应该也是可以的,只不过,编译过程所消耗的时间也会体现在页面加载过程中,这必然会令用户感到不爽。

wml script的解析执行

星期六, 7月 4th, 2009

WML 里面使用的script语言,也就是wmlscript,与javascript同源,也是ECMAScript的一个扩展。

WML Script里面的库函数比Javascript少得多了,然而看其规范书的描述,号称是为了WAP环境下的带宽不足的情况而设计的。

而WML Script有Byte code(字节码)的形式,wmls文件在服务器上先进行预编译之后,成为Byte code,然后传到终端上解析执行。

由于Byte code是指令级别的格式,所以可以直接解析执行,当然不能直接运行,我看也没有CPU可以直接支持wmls byte code的直接运行。

gateway是Kannel的一个产品,里面包含了将wml script转为byte code的源代码,而解析执行wmls byte code的代码则没有,这部分可能要针对不同平台单独些了。