最近一年多,从事的ios项目就是一个浏览器架构。在最近半年,由于原有框架的不成熟,正在受到越来越多的挑战。比如网络请求方式,页面布局,脚本动态化等。
在年关将近的时候,就开始研究下成熟的浏览器,比如webkit。
偏题了,其实,这次想说的是,同时看的两个脚本框架,phonegap和v8。
phonegap其实是使用网页渲染成类似ios的界面效果,然后利用js访问设备api。我起初一直以为,phonegap是把js的api解析和本地api绑定,于是一直在找解析功能,未能如愿。之后,跟踪调试,发现,phonegap的调用,其实是把本地api转换成web service,而把js函数调用转成对应的web service url格式。至于解析神马的,就交给ios的webview自带的引擎解析。不得不说,这种方式非常巧妙。不过,我不清楚,是否可以用这种方式直接绘制ios或者其他设备的本地UI。有待继续观察。
然后,我就开始研究真正的js解析引擎,试图在自己项目中移植一个。找到了spiderMonkey的移植项目,iMonkey。移植很简单,但是使用很麻烦,接口封装还是有问题。还是转向v8,其实一开始也是打算用v8,但是没找到怎么移植,只能再接再厉。发现v8编译成库,在模拟器上还是可以运行的。最简单的方法就是使用scons,记得安装一个。
说到这里,发现国外各种技术层出不穷啊,比如国外已经火热的git,国内估计没多少人用。有好比这次编译google v8用到的工具,scons, gyp这两个用python写的工具,gyp在百度上甚至搜不到什么信息。gyp可以根据系统,产生工程文件,比如makefile,xcodeproj, vsproj。而scons呢,就是直接编译的工具,好比make。由python的跨平台特性,这两个工具天然就是跨平台。看到这些,我觉得python应该会在3、5年以后替代很多c的事情。
但我更看好js。由node.js的推出,我觉得以后开发的趋势将会变成,一部分人去是完善底层sdk,无论是服务器端还是客户端还是浏览器端。然后由功能开发人员,使用js等动态语言拼装功能、界面等。web的开发模式正在深入人心,也会革新整个软件业的。web开发模式的优点,我觉得就是天然的,它把各种层次区分了,数据(html+JSON),控制(js),界面(CSS)。
再次做些预言。软件的趋势就是,开发人员越来越不需要关心底层的实现,好像内存管理,socket什么的。也可能以后用一种语言就能跨所有平台开发产品,因为会有人去实现中间层的对接。中间层,也就是类似浏览器这层的开发将会是下面几年的开发热潮,会涌现出一堆类似node.js这样的中间层。遍布各种平台,包括服务器,手机端,桌面。而js也许就是这次的语言赢家。一则因为他现在的普遍使用,二则它内在的动态性使然。