从中间件的历史来看移动App开发的未来

  在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作;在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资。不知道大家是否想过:移动应用开发已经在市场上火热了这么多年了,为什么很多公司还仍然会面临移动开发人才稀缺的问题呢?对于移动开发人才的增长速度总是赶不上市场需求发展的原因,我认为不应该简单归为市场供求关系的问题,其源动力还是来自移动应用整体的开发模式和开发效率低下的内因。正是这强大的市场需求和低下的原生开发效率结合在一起才导致了这几年软件开发行业人才的严重失衡,导致大家没办法也只能涨工资的方式来抢人才。为此我们一直在寻找高性价比的应用开发方案(实现低成本投入和高品质的产出),尽可能的降低应用开发复杂性。应用复杂性的本质是逻辑和控制,逻辑决定了代码复杂性的下限,而控制则包括对应用环境和设备环境的进一步优化。我们常抱怨应用不够简洁的最根本原因:就是其没能处理好逻辑与控制之间的耦合。说到应用复杂度的解耦,最常见的解决方案就是通过元语言抽象让逻辑和控制进行分离,也就是人们通常所说的中间件方案。先普及一下:什么叫元语言?简单说,元语言就是对应用语法和语义的配置,对应的元数据则是对这些配置的具体描述。也就是说元既是数据也是代码。为了能说清楚这个问题,让我们来简单回顾一下中间件开发技术的发展历史:

  最早也是最基础的应用开发方式是元编程(Meta Programming):也就是从元语言到目标语言的编译器,将元数据编译为目标程序代码的开发过程。元编程的模式要求我们要面向具体设备进行编程,每种设备在操作系统基础上会提供给开发者大量的api服务,最终的应用的源代码经过编译和链接两个过程生成可以直接运行的应用程序。虽然开发过程的复杂度较高,但元编程生成应用的执行效率确实非常高。采用元编程方式的开发工具包括:汇编语言、c语言、PowerBuilder、VC、Objective-C等。我们可以通过下图来理解元编程:

  元编程之后,紧接着就出现了元驱动编程(Meta Driven Programming) :它是直接在目标语言中实现元语言的解释器,这是支撑中间件技术的基础方式。元驱动编程带来的最大的好处就是我们不必再面向具体的设备进行编程,元语言需要先预编译成中间代码,中间代码对于不同类型设备的适配工作完全可以交给“运行时引擎”去完成,从而达到了“write once and run anyway”的能力。 采用元驱动编程方式的开发工具包括:Java、Flex、.Net等。我们可以通过下图来理解元驱动编程的模型:

  这些年比较流行的应该还是元解释编程(Meta Interpretive Programming):它可以让元语言直接运行在不同的目标环境中,这也就是我们所说的脚本语言编程。由于省去了编译和预编译的过程,代码的语法检查的过程只能在运行期间完成,理论上讲这会降低应用的执行的效率。但随着计算机硬件性能不断的提升,性能问题已经被越来越弱化,同时元解释编程简洁强大的语法也大大提高了应用的开发速度,也降低了程序的复杂度。采用元解释编程方式的开发工具包括:Javascript、Python、Lua等。我们可以通过下图来理解元驱动编程的模型:

  为什么在移动互联时代,很多传统应用开发的规则都不再适用了呢?让我们来对比一下移动设备和传统计算机体系结构之间的差异,看看移动设备到底在结构上发生了哪些重要的变化。首先移动设备去掉操作系统的缓存,为了控制个体应用对系统造成的任何不良影响,在应用的物理内存不够时,该应用马上就会强制退出。 这就是app开发中为什么一点点的内存问题就会产生闪退的根本原因,也是我们在项目中需要通过底层原生编程来优化app稳定性的必要原因之一。另外由于移动操作系统中个体应用独立化的设计,让系统级的运行时引擎无处加载,这自然也就颠覆了元驱动编程在app开发中应用的可行性,于是程序员们就又要重新开始寻找移动中间件技术的解决方案了。

  第一代移动中间件的编程(HTML5 Based App Programming)是基于HTML5技术的跨平台app开发模型。在这个模型中一般都通过内嵌的webkit内核来实现原生扩展代码的桥接,用HTML5构建网页UI,用网页中的Javascript编写业务代码。在这个模型下HTML5技术天生就具备跨平台的能力,而且很多传统的网站开发程序员在技术上也可以很自然的过度。采用第一代移动中间件模型的产品包括:PhoneGap平台、数字天堂中间件产品、烽火中间件产品等。我们可以通过下图来理解第一代移动中间件产品的模型:

  在第一代移动中间件技术的发展过程,吸引了大量传统的web程序员,很多人都希望能够通过html5技术进入app开发的阵营里。但经过几年内大量的尝试后我们发现,市场上主流app开发工作仍然还是要交给原生开发人员完成,几年下来用Html5开发出来的优质app在应用商店里仍然是凤毛麟角。html5的交互体验能力和原生app开发之间的差距似乎越来越大了,虽然硬件设备的高速发展解决了部分html5页面运行效率的问题,但android和IOS每次大版本升级在UI交互能力上的提高却让html5技术有点越来越望尘莫及了。

  随着技术的发展很自然又出现了对第一代移动中间件编程技术的改进模型,其结构如下图所示

  在改进模型中的变化主要体现在两个方面:首先是对原生扩展能力进行了进一步增强。除了对文件、照相机、通讯录等本地能力的扩展外,还增强了对原生UI框架的扩展能力以及对第三方服务的扩展能力;另外改进模型中还增加了扩展模块的概念对外提供开放平台,允许开发者扩展自己开发原生组件。虽然改进的模型在很大程度上了增强了HTML5和原生的原生交互能力,但最大的技术瓶颈仍然能解决,即对于基础UI的构建还是只能通过网页方式实现。开发者仍然需要通过网页渲染来模拟原生交互,所不同的只是可以通过网页内的javascript再去调用一些原生扩展功能而已。目前采用第一代移动中间件改进模型的产品包括:Appcan、APICloud、HBuilder等。

  HTML5技术是第一代移动中间件技术发展的核心动力,但随着IT技术的发展,它也成为了移动中间件技术进一步发展的最大瓶颈。无论大家在第一代中间件的改进模型多么努力,却始终改变不了WebView的单线程模型、改变不了DOM/CSS的复杂而低效的排版和渲染水平、改变不了浏览器通过内嵌Cavas、WebGL和定时器来实现动画的在用户体验效果上的失败。 很多人都还在幻想着HTML5会成为App的未来,要知道HTML5这项Web时代的技术本身就不是为移动互联时代而生的,HTML5的骨子里根本就不具备移动互联的基因,它与App的未来实际已经是渐行渐远了。

  Facebook在2015年初重磅推出了React Native移动开发中间件技术,在结构上完全摆脱了HTML5的束缚,真正开启了一套通过自定义原生控件渲染UI的框架的道路,我们可以称之为第二代移动中间件的编程(Meta Extended App Programming)。我们可以通过下图来理解该模型:

  Facebook在React Native产品中所提出的 “Learning once, write anywhere” 本身也是一种复用的思想。大家厌烦了各种各样的编程语言,如果有一种语言真的能够统一移动开发领域,对于所有人都是好事。先不说这个框架后续是否能得到大众认可,单从源码来说,这个框架源码里有非常多的设计思想和实现方式值得学习。React Native产品虽然在实用性还有很大的不足,但它最大的价值则是为移动中间件技术提供了全新的发展思路。或许很多人还没有关注到,2015年中旬的时候一款DeviceOne的移动中间件产品正式对外发布,它对React Native产品架构进行全面的继承和改进,不仅实现了跨平台移动开发的“Write once, run anywhere”能力(同时支持IOS、Android、Windows10),还实现了原生开发扩展平台的完全开放。我们来研究一下这第二代移动中间件的改进模型吧:

  在DeviceOne这个模型中所有UI组件功能组件都已经被抽象成可被自由扩展的跨平台组件,就连Webkit本身在模型中也仅仅退化成一个普通的UI组件而已,App开发者可以自由选择js脚本、lua脚本甚至python脚本来编写业务逻辑,让昂贵的原生开发人员能够更专注于底层技术创新和组件封装,让应用开发人员可以更加专注于具体项目的业务需求,实现原生开发和应用开发的分离,也就是让逻辑和控制充分解耦。

  随着移动互联时代的高速发展,人类对“低成本高品质”app开发技术的需求越来越迫切。Fred Brooks在人月神话中曾阐述的 “没有银弹”理论一直以来对IT界产生了很深的影响:他认为不存在一种技术能使得软件开发在生产力、可靠性、简洁性方面提高一个数量级。但在我看来也不一定要那么悲观了,凡事都没那么绝对,任何原则都有其假设的前提和范围,如果超过这个范围,原则可能都要失效了。例如:如果超出了宇宙大爆炸基点的范围,我们就会失去任何参照物,那么就连时间概念同时也都会消失,更何况Fred Brooks的理论呢?虽然“没有银弹”理论在软件工程范围内是被普遍认可的,但我们这并不能仅以此就推理出 “低成本高品质”的需求是无解的。App的开发技术的发展历程不是可简单线性描述,也更不会局限于软件工程理论的范围内。就像Kevin Kelly在《失控》中所说的那样,IT技术应该更贴近大自然自身的发展规律。工业时代的标志是机械设计能力的登峰造极,而以IT技术为代表的新生物文明则应使设计再次回归自然。React native和Device one的出现就让我们看到了app开发的新希望,这可能就是我们期待了已久的移动中间件技术发展拐点。凡事不破不立,React native通过扩展标签的方式实现了去HTML5化,而Device one继而则在支持跨平台的同时还还进一步实现了去中心化,按照这样思路再发展下去移动中间件技术的未来将会是怎样的呢?一旦我们能通过分布式的、至下而上的去中心化控制系统来激发大量个体(开发者)的差异化发展,就能够最大限度的实现整个系统的自学习和自递增,当系统的进化进而再反过来再影响和改变个体的时候,那么软件开发的生产力、可靠性、简洁性可能就会在每次迭代过程中实现突破,甚至能以指数级别的速度开启全新的增长…

时间: 2024-10-13 05:51:15

从中间件的历史来看移动App开发的未来的相关文章

【转】中间件的历史来看移动App开发的未来

今天是十一长假,自己整理了寝室,差点累死,现在才开电脑,随便逛逛博客,看到不错博文,转载一下.. 在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开发已经在市场上火热了这么多年了,为什么很多公司还仍然会面临移动开发人才稀缺的问题呢?对于移动开发人才的增长速度总是赶不上市场需求发展的原因,我认为不应该简单归为市场供求关系的问题,其源动力还是来自移动应

Facebook与谷歌和APP开发的未来

谷歌最近推出的Flutter和Facebook的React Native正在帮助缩小构建混合应用和本机应用之间的差距.两者都在改变游戏,但提供值得考虑的关键差异. 了解每个框架带来的内容至关重要,这样您就可以为您想要实现的目标决定最佳解决方案.以下是Google和Facebook通过Flutter和React提供下一级应用开发机会的七种关键方式. 1.工具和IDE选择. 能够在您偏好的开发环境中工作至关重要,因为确保它可以促进您的受众将使用您的app的不同平台和设备所需的工具.这就是利用可以使用

未来集市APP开发模式开发

未来集市系统开发,找广州[小清:13//66242//7230]未来集市系统开发模式,未来集市系统开发案例,未来集市系统开发公司,未来集市系统开发平台,未来集市系统开发哪里有,未来集市APP开发,未来集市模式开发,未来集市软件开发,未来集市平台开发. 未来的生活你看到了吗?颠覆的世界你准备好了吗?有人跨界打劫你的市场,而你却不知对手在哪里?如此变幻莫测的世界究竟属于哪些人?互联网行业从来不缺时髦的热词,继O2O.互联网+以及人工智能之后,“下半场”成为如今互联网行业收官热点.行业已达成共识,互联

打通移动App开发的任督二脉、实现移动互联创业的中国梦

年初的两会上,第一次听到克强总理讲到“互联网+”的计划,当时就让我为之感到无比振奋.我个人的理解是:“互联网+”的本质就是要对传统行业供需双方的重构,通过移动互联技术来推动各个行业上的全民创新,促使中国经济再次腾飞.在整个创新的过程中,我们同时还应该清醒的认识到:“互联网+”是一次全新的业务创新,IT技术在这次创新中所应充当的仅仅是变革动力和技术手段,绝对不把它理解为创新的主体.无论要做互联网+餐饮.互联网+教育.还是互联网+医疗等等,我们都应该把核心资源投入到专注客户的刚需.缩短服务的层级.提

Android 6.0指纹识别App开发demo

在android 6.0中google终于给android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚啊.在google全新发布的nexus设备:nexus 5x和nexus 6p中都携带了一颗指纹识别芯片在设备的背面,如下图(图片来自网络): 笔者手中的设备就是图上的那台黑色的nexus 5x,话说这台机器很是好看呢!手感超棒! 废话不多说,下面我出一个指纹识别的demo app,并且详细说明怎么

App开发需要了解的基本技术

本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web App就是针对iOS/Android优化后的web站点,用户不需要下载安装即可访问.一般的web站点测重使用网页技术在移动端做展示,包括文字,视频,图片等,而Web App更侧重“功能”,是基于网页技术开发实现特定功能的应用,必须依赖手机浏览器运行.Web App开发成本低,维护更新简单,支持云修复,

APP开发基础知识

本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web App就是针对iOS/Android优化后的web站点,用户不需要下载安装即可访问.一般的web站点测重使用网页技术在移动端做展示,包括文字,视频,图片等,而Web App更侧重"功能",是基于网页技术开发实现特定功能的应用,必须依赖手机浏览器运行.Web App开发成本低,维护更新简单,支

北京APP开发培训

企业看到移动互联网发展的潜力,也开始把眼光朝向了APP开发.企业与用户对APP开发的需求和智能手机的不断在增加,使得APP开发培训不断增多,APP开发人才需求也在不断增加.大量的APP开发培训班也涌现出来. 截至2015年6月底,中国网民规模已经达到6.68亿,其中手机网民规模为5.9357亿,在整体网民中占比88.9%,用户规模还在不断增长.而移动用户的增长,就必然会带动APP开发的发展.面对如此大的市场,APP开发培训成为了众多择业者的**. 据统计,APP开发工程师薪金待遇在IT行业中属于

面向Web Cloud的HTML5 App开发实战:Browser&HTML5&CSS3&PhoneGap&jQuery Mobile& WebSocket&Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技