• 1
  • 2
  • 3
  • 4
  • 5
阿里云应用开发 首 页  »  帮助中心  »  云服务器  »  阿里云应用开发
Blend完美接盘Native app
发布日期:2016-8-2 22:8:28

  全球软件开发大会QCon近日亮相上海。作为为团队领导者、项目经理、架构师和高级软件开发人员量身打造的企业软件开发大会,QCon邀请诸多业内大牛为大家做出技术分享。其中,直达号Clouda+团队的百度资深工程师雷志兴用一场名为《Blend,完美地混合Web App与Native App》的演讲,吸引了和会代表们的大量“眼球”。

  现场,雷志兴从百度轻应用与直达号讲起,继而谈到Blend的初衷。“去年八月我们推出轻应用,这是一项面向开发者的平台与技术,而今年在轻应用的基础上我们推出直达号。百度提供很强的渠道分发能力,但是从体验上来说,我们依然觉得轻应用与Native app有一定差异,而Blend的就是为弥补这些差异而出现。”

  在他看来,Blend不仅是一项“拿来即用”的开源技术,更是一种开发理念。使用这个理念,App不仅能够保留web灵活性,做到极快的迭代速度,剔除冗长的版本发布过程,还能在交互中保证足够的流畅性。

  图1

  “Blend中有两项核心技术:多webview技术和插件动态加载技术。前者能够让web的能力与性能得到质的提高,后者则是在架构上保证运行环境的简单高效”雷志兴表示。

  1、无线困境谁来破局

  随着移动互联网的发展,Native App开始逐渐到达它增长的天花板,所以越来越多开发者开始把目标瞄向web开发。在初期,一般大家在做移动web站点的时候,都会追求一些无刷新的跳转、换页效果,但是这些效果在高端机上都会偶尔出现运行不流畅等问题,在中低端智能机上更是难以运行。因此近一两年来,大家倾向于不在移动web站点中采用复杂的特效,只在最关键的部分,用最小的代价来实现。这样一来尽管满足了大部分用户的需求,不过很多个性化的效果又无法顺利实现了。

  对于WebApp的能力,Developer Economics在调研Google Play中的30339个App曾给出过一份报告,报告显示,抛开性能的话,若只使用HTML5技术,能够实现37%的app,若使用Phonegap,能实现49%,若使用Appcelerator,能实现63%。

  同时,大量的调研都显示性能与API数量不足是webapp的主要软肋,而性能的最主要体现是在页面切换的转场过程。所以Clouda+团队面临的首要目标就是怎么能让WebApp的转场像Native App那般流畅。

  在iOS下,有较好的设备性能与浏览器支持,用Web来做复杂交互问题不太大,但是Android下就相当棘手了。Clouda+团队的Blend项目正向前端开发者展示着另一种可能。

  2、调研尝试寻找源头

  轻应用有两大入口:移动搜索与手机百度App,接入轻应用的开发者特别看重手机百度入口。由于在手机百度中,因为轻应用的运行环境是百度框,所以开发者可使用一些Native API的接口,即Clouda API,包括提供设备能力的Device API,提供百度云服务能力的MBASS API等等。

  最初,他们团队重点考虑的是类似Appcelerator的方案,但们不像Appcelerator那么激进地将Javascript编译成Native code,而希望暴露一组基本的Native API,供前端工程师调用以实现流畅的App效果。但是这样随之而来的问题是,开发者的可定制性会变得特别差,极度依赖Native API,开发感受会很糟糕,毕竟开发者操作的不再是DOM,而是一个私有的API。所以这个方案很快就被否定了。

  后来,雷志兴发现,其实大家在性能方面的担忧主要还是在转场与动画上。不论页面多复杂,很少有会担心页面内部的性能。于是他提出了一个概念——Every element can be a webview。因为轻应用的使用场景与Native结合得很好,Blend团队就开始利用Native技术来做转场。相对用web技术,用Native来做转场在技术上就可控多了。

  3、技术开源贡献业界

  由于把握住了问题的核心,因为Blend的核心实现也很顺利,雷志兴说,Blend秉承了模型从简的原则,且为开发者保留最大的灵活性。所谓模型从简,就是Blend提供的是核心能力:让Javascript能够控制webview,就好像控制DOM一样,不同webview间通过事件通讯,Javascript与Native code通过事件通讯,这让开发者能快速理解核心概念并上手。另外,为开发者保留最大的灵活性,主要体现在Blend内部不大量依赖原生控件,webview内部的样式完全可通过开发者来自定义,在UI风格上面没有任何限制,拥有无限的灵活性。另外,Blend也不会影响开发者对其他库、框架的选择。

  “Blend的这个概念让View有了‘原生’支持,任何的Element都可以用一个独立的webview来实现,浏览内核的负担就减轻了,而且切换时的过场动画用原生代码实现,也保证了性能。”雷志兴说。

  Blend的出现,对轻应用开发者来说是巨大的福音,他们可在在不接触任何Native代码的前提下,就让轻应用的体验有质的提高,Blend也已通过轻应用Runtime下发到部分轻应用的运行环境中了。

  值得一提的是,雷志兴非常热衷于技术开源,在百度,他所所负责的技术产品全部是开源项目:Tangram是百度第一个开源的技术项目,FIS亦于2012年开放源代码,Clouda+同样也是开源产品。所因此,Blend除能为百度轻应用解决体验问题,同样适用于第三方的App,开发者可将SDK打包入App,单独发布App上架。

  Blend能在能保证用户体验的前提下节省人力成本,又有很高的定制性,迭代速度与web相当。若你正开发App的初版,你可用Blend理念来加速开发,尽早上线MVP(最简可行产品)并快速迭代;若你正开发一个大中型App,这个理念能释放web的灵活性,让web开发工程师在App迭代过程中做得更多、做得更好,作为国内同样数一数二的云计算行业阿里云,同样值得学习。