终端应用类型概览

在移动互联网应用场景不断丰富、终端设备算力不断增强、设备与设备之间交互越来越容易的背景下,连接与人设备的终端应用形态、呈现百花齐放的态势。

终端应用类型概览

若要将终端应用分类,建议按两个维度:开发者体验、用户体验,来划分。

  • Native App: 原生应用,使用操作系统原生技术栈,传统客户端应用,基于操作系统上的UI框架开发。运行在操作系统容器内。
  • Web App: H5应用,基于H5规范开发。运行在浏览器或WebView容器内。
  • Hybrid App: H5应用在性能、获取系统权限方面存在天生不足,为了解决这个问题,部分功能通过调用系统原生能力实现。
  • Cross-OS Native App: 原生应用,使用第三方通用技术栈,一次开发,可跨OS运行。
  • Instant App: 原生免安装应用,可通过 Intent 唤起,用完即销毁;也可以称为卡片应用。
  • 小程序/轻应用: 运行在超级App环境内的卡片式应用,如微信小程序、支付宝小程序。
  • 快应用: 可离线运行的Web应用,并可支持Native UI。

Native App

基于操作系统自带的UI框架开发的应用,性能最好,移植性最差、不能跨操作系统运行。

Web App

Web App 使用JavaScript开发,运行在浏览器组件中(浏览器或WebView)。相对原生应用,性能较差,天然具备跨平台、动态更新能力。

Hybrid App

Native 与 Web 技术混合使用构建的App。Hybrid App发展的两大驱动力:

  • H5 API 不能满足Web App获取系统权限的需求,开发者通常需要通过桥接方式调用系统API。
  • Native App动态化需求,如通过WebView方式集成Web站点内容。

谷歌的 PWA 也属于Hybrid App,是谷歌Chrome团队主导,想通过Web App能力增强,抢占Native App份额。

PWA的主要特征如下。

  • 渐进式:能确保每个用户都能打开网页
  • 响应式:PC,手机,平板,不管哪种格式,网页格式都能完美适配
  • 离线应用:支持用户在没网的条件下也能打开网页,这里就需要 Service Worker 的帮助
  • APP 化:能够像 APP 一样和用户进行交互
  • 常更新:一旦 Web 网页有什么改动,都能立即在用户端体现出来
  • 安全:安全第一,给自己的网站加上一把绿锁–HTTPS
  • 可搜索:能够被引擎搜索到推送:做到在不打开网页的前提下,推送新的消息
  • 可安装:能够将 Web 想 APP 一样添加到桌面可跳转:只要通过一个连接就可以跳转到你的 Web 页面

Cross-OS Native App

Cross OS Native App 可以实现一次开发,多OS运行,无需为每个OS定制开发一套App,减轻了开发者的工作量。Cross OS Native App采用三方UI框架,通过桥接的方式,将系统无关的UI组件桥接到系统原生UI组件,针对不同操作系统UI组件做适配,从而实现一次开发,多OS运行

Cross OS Native App 根据技术栈,可分为JITAOT两类。

  • JIT: 运行时解析,代表为React Native、Weex;开发语言为JavaScript,在运行时动态转换组件。
  • AOT: 预编译,代表为Flutter,Flutter的开发语言为Dart。AOT的方式对系统API依赖更小,如Flutter就自带了图形渲染引擎Skia,不依赖系统的图形渲染引擎,因此能做系统性的优化,比React Native运行效率高。

JIT 类型 (React Native等)

AOT 类型 (Flutter)

Instant App

Instant App 产生的驱动力有两个:

  • 用户与设备的交互方式变更,特别是语音交互场景,系统理解用户意图(Intent)之后,需要唤起一个App完成用户意图。
  • App功能越来越多、用户一次只需要用到其中很少的一个或两个功能,不希望下载庞大的App。

当前谷歌与苹果都推出了 Instant App,苹果的 Instant App命名为 Clips,Instant App都是Native App,是Native App模块化拆分+App Store模块化分发两项技术结合实现的。

以谷歌Instant App为例,简单阐述Instant App的发展历程。

  1. 移动端应用最初始的形态从PC端继承,用户之间分享信息通过超链接,使用浏览器浏览超链接的内容。这种方式是最通用的,但是通用就难以做到个性化,不同的内容形式、不同的内容提供方对于内容展示的多样性诉求难以满足。
  2. 为了应对这个问题,谷歌推出了App Link技术,App Link允许开发者使用Native App打开超链接内容。App Link允许多个Native应用映射到同一个超链接,打开之前会让用户选择。
  3. 为了进一步提升用户体验与安全性,谷歌推出Instant App,可以理解为免安装App。Instant App需配合Google Paly使用,用户点击一个超链接时,如果该超链接有对应的Instant App,则Google Play会调用起Instant App对应的界面,用完即销毁。Instant App与超链接的映射关系是一对一,也就是Instant App的开发者必须是对应超链接域名拥有者。

关于详细的Instant App 的背景,演进在 Google新技术:Instant App全拆解 系列里讲解的很清楚。

小程序/轻应用

小程序/轻应用,是指运行在超级App内的应用,这类应用通常只完成一个特定功能,开发简单,被称为小程序、轻应用。

微信小程序是微信作为一个人与人连接的聊天工具扩展为人与组织、企业、设备连接的关键举措。各行各业的企业、政府、组织通过微信小程序连接相关人,小程序使得微信获得了新的生命力。 特别是腾讯组织变革成立ToB事业群之后,腾讯云通过微信与小程序获得了不少订单,如云南的旅游项目。

近期微信小程序又推出了WMPF(微信小程序框架),WMPF是一个独立的框架,类似谷歌的GMS、华为的HMS,安装在设备上,提供微信小程序运行时依赖库,也就是微信小程序可以脱离微信运行了。 这个举措是腾讯针对微信生态在IoT领域的布局,通过微信小程序再连接物。

快应用

快应用是手机厂家为了抵抗微信小程序推出的手机小程序,称为快应用,快应用同时具备体积小、启动快的特征。快应用相关技术与标准由快应用联盟负责管理,当前快应用使用是Web App的技术栈,是支持离线运行的Web App。

快应用的运行框架预制到手机ROM中,可以实现免安装(准确是说因为体积足够小所以安装足够快),因此可以在手机的搜索结果、负一屏中显示,用户点开即可用。从这个视角看,与Instant App是要完成的功能是类似的。

Reference

Google新技术:Instant App全拆解(1)——初探

Google新技术:Instant App全拆解(2)——剖析

Google新技术:Instant App全拆解(3)——着手

Google新技术:Instant App全拆解(4)——架构(完结)

PWA

我们真的需要网页版App吗?Google PWA的困局

WHAT is Progressive Web App?

如何看待 Progressive Web Apps 的发展前景?

android/architecture-samples