在移动互联网应用场景不断丰富、终端设备算力不断增强、设备与设备之间交互越来越容易的背景下,连接与人设备的终端应用形态、呈现百花齐放的态势。
终端应用类型概览
若要将终端应用分类,建议按两个维度:开发者体验、用户体验,来划分。
- 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 根据技术栈,可分为JIT
与AOT
两类。
- 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的发展历程。
- 移动端应用最初始的形态从PC端继承,用户之间分享信息通过超链接,使用浏览器浏览超链接的内容。这种方式是最通用的,但是通用就难以做到个性化,不同的内容形式、不同的内容提供方对于内容展示的多样性诉求难以满足。
- 为了应对这个问题,谷歌推出了App Link技术,App Link允许开发者使用Native App打开超链接内容。App Link允许多个Native应用映射到同一个超链接,打开之前会让用户选择。
- 为了进一步提升用户体验与安全性,谷歌推出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)——架构(完结)