对于开发者而言,「Write Once,Run Anywhere」究竟凭借的是什么?
在 AI、IoT、大数据、云计算等火热技术的促活下,越来越多的设备“联动”起来,随之并入万物互联之列的设备也与日俱增。在智联设备量爆发之际,殊不知呈现在众人面前的竟是一款款形态各异的智能终端产品,毋庸置疑,这对于用户而言,想要统一管理这些设备都极为繁琐,更不要论对于在这些智能终端设备背后默默提供支持与更新的开发者了。
此前,在2019华为开发者大会上,华为消费者业务软件总裁王成录曾发布了一份针对应用开发者的调查数据统计,根据调查结果,我们发现,时下有 63% 的应用开发者有多设备适配困扰,即在推出一款新的软件时,需要对不同终端进行适配与兼容;还有 49% 的受访者表示,基于不同的平台,需要使用多种不同编程语言来完成;另外,有 20% 的程序员称跨平台数据融合是在多端开发过程中最大的挑战。
归根究底,面向多终端做开发,显然极大地增加的开发者的时间与技术成本,那么,是否有一种方法可以帮助开发者实现一招制敌,即「Write Once,Run Anywhere」,亦或是「一次编写、多端部署」的愿景?
日前,我们从华为的分布式技术中找到了答案。
一次开发,多端部署
想必大家对今年 8 月 HDC 2019 还有不少的印象,彼时在大会现场,华为消费者业务软件总裁王成录宣布正式发布新一代操作系统 EMUI10,同时,王成录表示,EMUI10 采用了三大关键分布式技术,即硬件能力互助共享、一次开发多端部署、分布式安全。而也就在那时,我们首次听到了华为的“一次开发,多端部署”的福音。
作为“一次开发,多端部署”的强有力支撑——分布式技术,根据传统的定义来看,它是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。其旨在利用更多的机器,处理更多的数据。简单来看,分布式技术可以用来打造一台“超级设备”,让信息在多终端之间无缝流转,各终端之间能力互助共享、互为外设,最终实现应用如同在同一终端运行、用户如同使用同一终端、开发者如同为同一终端开发。该分布式技术的应用,不仅大幅降低跨设备的应用开发工作量,还有效地提升了开发者的效率。
不过,纸上得来终觉浅,绝知此事要躬行。「一次开发,多端部署」看似简单,但其复杂度、适用性等都对开发者提出了很大的挑战。
基于 App 开发层面 ,想要实现一次开发,多端部署,首先需要在多终端与应用之间的架起一座桥梁,而该部分可分为简化为两大块内容:UI 和业务逻辑。
只有将 UI 和业务逻辑做解耦,如构建统一的编程框架、自动适配多终端硬件能力的统一抽象UI控件,以及能为不同屏幕的终端提供自适应的响应式布局等等,开发者才能更好地实现应用界面多端自适应功能,由此让应用超越单终端体验,跨终端生态共享,具备多设备分布式体验,提升跨终端体验。
那么,究竟该如何构建一款具备良好地扩展性、可靠性、低延时等特性的统一编程框架?对此,华为在分布式场景中为开发者解决了这一难题,并提供了两大框架:分布式 UX 框架和分布式应用与执行框架。该两大框架分别针对界面逻辑、业务逻辑最大限度地提供系统级别的分布式能力抽象,旨在帮助开发者们以低成本、高效率的方式实现一次开发、多端部署的愿景。
接下来,我们将共同见证两大框架带来的“魔力”。
分布式 UX 框架——轻松实现界面跨端自适应
如文章伊始所述,万物互联场景之下,我们所常用的智能设备早已不局限于普通的智能手机,还有电脑、平板、车载设备、智能助手,乃至诸多的折叠设备,在这其中,作为开发者,想要实现一次开发、多端部署这一目标,首先需要突破应用与多个屏幕界面适配与兼容性问题,也就是一套代码如何自适应各个终端界面的难题。基于这一点,华为研发了一款分布式UX 框架,旨在将自适应功能模块抽象化置于平台层,以此通过 App 代码调用,从而实现应用程序的跨终端运行及应用程序跨多终端自适应显示。
分布式 UX 框架将适配功能进行了抽象化,可简单地分为交互层、逻辑层、界面层、要素图层(Feature Layer)。除此之外,该框架也提供了一些工具包/链,以及库等。
对于应用开发者而言,在面向界面自适应编程时,主要用到分布式 UX 框架中三大模块:
UX 编程框架中的智能界面开发包。该开发包将界面元素、内容框架、页面框架等不同维度的组件能力抽象化,为开发者直观地提供了多态控件、动态布局、栅格系统、工程模板等模块。通过该智能界面开发包,可轻松将不同设备中的控件、自适应的信息结构设计、乃至系统参数抽象,便于开发者调用。
声明式界面编程DSL。在分布式 UX 这一框架中,华为在界面层,主要采用了 DSL 来为开发者提供提升分布式界面编程效率的声明式语言,通过 DSL 描述目标性质,从而让计算机明白目标。
UX 编程框架中的分布式界面执行框架。这对于开发者而言,是不可见的。在分布式开发过程中,不同的 UX 设备之间的依赖、兼容、编译、解析等平台级工作均由该框架完成。
基于以上,开发者只需在开发过程中调用智能界面开发包中的工具或模板进行代码设计,并在 App 的前端界面代码中声明DSL 相关的文件,最后借助分布式界面执行框架编译代码,即可轻松实现一次开发,多端部署的界面自适应问题。
分布式应用与执行框架——业务逻辑的元能力化
不过,仅解决了多终端界面自适应的问题,对于开发者而言,还有一个更为严峻的挑战——除了界面之外,如何将应用的其他功能及服务部分均适用于多终端?
众所周知,目前开发者在开发应用时,会分别面向手机、桌面,以及不同的操作系统发布不同的版本,同时基于不同的平台所采用的技术架构以及框架均会有所不同。无形之中,这一举措就造成了多设备割裂的状态,那么如何让不同设备之间的应用在开发层面有共通性,从而让服务可以灵活迁移与互助,这就是华为分布式应用与执行框架所需要完成的使命。
在落地应用过程中,分布式应用与执行框架首先将应用程序业务逻辑进行了解耦,分隔成可在任何设备上独立工作的原子能力 AA(原子化服务,Atomic Ability)。对于分布式应用与执行框架中最核心的部分,元能力(AA)是面向未来全场景不同应用开发的解决方案,适合近场且轻量级,其能够在实现应用分布式的基础结构之上,完成应用的跨设备迁移。
从功能上来看,元能力由第三方开发而成,集成单一功能程序实体,并由系统直接调用。举例说明,如在面向同一类型的不同应用时,AA 可以集成通用的特性并封装,然后将其接口开放给开发者,开发者通过FA(特性能力,Feature Ability)调用其他设备有而本设备没有的计算能力,或者将本设备的计算能力共享给其他设备,从而实现一次开发,多端部署的业务逻辑调用。
这也正如今年 HDC 上的一个视频通话 App 案例,通过分布式应用与执行框架,可将视频通话 App 业务逻辑解耦成 7 个模块:视频处理、音频处理、通话控制、通话迁移、视频采集、音频控制、美颜。其中,通过调用视频采集、音频控制、美颜三个相互独立的 AA,即可实现视频处理、音频处理、通话控制、通话迁移四个单一的特性。
对于开发者而言,可以基于不同的设备按需部署。比如:对于功能最为完善的智能手机设备而言,7 个功能模块全部会用到;但大屏如电脑等设备,5 个功能模块已足够;对于智能音箱设备,因缺少视频界面显示,直接调用三个模块即可实现功能部署。
整体而言,应用由元能力灵活组装,可大可小,可分可合,从而能够为开发者提供统一的开发入口。对此,你 Get 了吗?没get到也不要紧,12月20日,华为将在上海举办一场面向开发者的线下活动,还将为你进行全方位展示分布式技术,并发布更多开放Kit内容。活动详情请搜索华为开发者联盟,获取更多技术能力。
领取专属 10元无门槛券
私享最新 技术干货