从中间件的历史来看移动App开发的未来.pdf
从中间件的历史来看移动App开发的未来
在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3
个月的培训就可以拿到8K甚至上万的工作;在北京稍微有点工作经验
的iOS开发,就要求2万一个月的工资。不知道大家是否想过:移动
应用开发已经在市场上火热了这么多年了,为什么很多公司还仍然会面
临移动开发人才稀缺的问题呢?对于移动开发人才的增长速度总是赶不
上市场需求发展的原因,我认为不应该简单归为市场供求关系的问题,
其源动力还是来自移动应用整体的开发模式和开发效率低下的内因。正
是这强大的市场需求和低下的原生开发效率结合在一起才导致了这几
年软件开发行业人才的严重失衡,导致大家没办法也只能涨工资的方式
来抢人才。为此我们一直在寻找高性价比的应用开发方案(实现低成本
投入和高品质的产出),尽可能的降低应用开发复杂性。应用复杂性的
本质是逻辑和控制,逻辑决定了代码复杂性的下限,而控制则包括对应
用环境和设备环境的进一步优化。我们常抱怨应用不够简洁的最根本原
因:就是其没能处理好逻辑与控制之间的耦合。说到应用复杂度的解耦,
最常见的解决方案就是通过元语言抽象让逻辑和控制进行分离,也就是
人们通常所说的中间件方案。先普及一下:什么叫元语言?简单说,元
语言就是对应用语法和语义的配置,对应的元数据则是对这些配置的具
体描述。也就是说元既是数据也是代码。为了能说清楚这个问题,让我
们来简单回顾一下中间件开发技术的发展历史:
最早也是最基础的应用开发方式是元编程(MetaProgramming):也
就是从元语言到目标语言的编译器,将元数据编译为目标程序代码的开
发过程。元编程的模式要求我们要面向具体设备进行编程,每种设备在
操作系统基础上会提供给开发者大量的api服务,最终的应用的源代码
经过编译和链接两个过程生成可以直接运行的应用程序。虽然开发过程
的复杂度较高,但元编程生成应用的执行效率确实非常高。采用元编程
方式的开发工具包括:汇编语言、c语言、PowerBuilder、VC、Objective-C
等。我们可以通过下图来理解元编程:
元编程之后,紧接着就出现了元驱动编程(MetaDriven
Programming):它是直接在目标语言中实现元语言的解释器,这是支
撑中间件技术的基础方式。元驱动编程带来的最大的好处就是我们不必
再面向具体的设备进行编程,元语言需要先预编译成中间代码,中间代
码对于不同类型设备的适配工作完全可以交给“运行时引擎”去完成,从
而达到了“writeonceandrunanyway”的能力。采用元驱动编程方式的
开发工具包括:Java、Flex、.Net等。我们可以通过下图来理解元驱动
编程的模型:
这些年比较流行的应该还是元解释编程(MetaInterpretive
Programming):它可以让元语言直接运行在不同的目标环境中,这也
就是我们所说的脚本语言编程。由于省去了编译和预编译的过程,代码
的语法检查的过程只能在运行期间完成,理论上讲这会降低应用的执行
的效率。但随着计算机硬件性能不断的提升,性能问题已经被越来越弱
化,同时元解释编程简洁强大的语法也大大提高了应用的开发速度,也
降低了程序的复杂度。采用元解释编程方式的开发工具包括:
Javascript、Python、Lua等。我们可以通过下图来理解元驱动编程的
模型:
为什么在移动互联时代,很多传统应用开发的规则都不再适用了呢?
让我们来对比一下移动设备和传统计算机体系结构之间的差异,看看移
动设备到底在结构上发生了哪些重要的变化。首先移动设备去掉操作系
统的缓存,为了控制个体应用对系统造成的任何不良影响,在应用的物
理内存不够时,该应用马上就会强制退出。这就是app开发中为什么
一点点的内存问题就会产生闪退的根本原因,也是我们在项目中需要通
过底层原生编程来优化app稳定性的必要原因之一。另外由于移动操作
系统中个体应用独立化的设计,让系统级的运行时引擎无处加载,这自
然也就颠覆了元驱动编程在app开发中应用的可行性,于是程序员们就
又要重新开始寻找移动中间件技术的解决方案了。
第一代移动中间件的编程(HTML5BasedAppProgramming)是基
于HTML5技术的跨平台app开发模型。在这个模型中一般都通过内嵌
的webkit内核来实现原生扩展代码的桥接,用HTML5构建网页UI,
用网页中的Javascript编写业务代码。在这个模型下HTML5技术天生
就具备跨平台的能力,而且很多传统的网站开发程序员在技术上