当前位置: 首页 > 科技观察

WebApp与NativeApp的又一轮较量?

时间:2023-03-16 22:18:34 科技观察

历史的轮回Web应用程序多年来一直在挑战原生应用程序。以各大公司野心勃勃的操作系统为例:如今盘踞LG电视的WebOS名噪一时,谷歌力推ChromeOS,在教育领域也不差,三星和英特尔独领风骚,但有雷声很大,雨水很少。Tizen,Mozilla的FirefoxOS,适用于低端设备。还有各种用于开发和打包Web/混合应用程序的产品:Cordova、Crosswalk、nw.js、Electron。他们可能在各自的领域都取得了成功,但整体的地位和形势很难说Web应用对Native应用的世界构成了足够的威胁。然而,Web应用程序也在不断地反映和发展。最近一系列的技术革新和发展,使得网络应用成为操作系统一等公民的目标比以往更加明确。且看“扬长避短”后的WebApp是否真的能开始与NativeApp竞争。《成长》Webapp的力量首先来自于web。Web不是某个围栏内封闭的花园,它是一片野蛮生长的开放大草原,任何提供标准支持的终端都可以平等地访问。Web协议栈使遍布全球的网页成为一个实时更新的网络,并通过URL相互连接。回头看W3CPackagedApp(Widget)标准和SysApps(系统应用工作组)的没落,很大程度上是因为放弃了web这些核心竞争力。Web应用程序的优势还来自于HTML、CSS和JavaScript。它们受到很多批评,但它们也是使用最广泛的开发工具。而新的ES6、WebComponents标准也在让它们拥有更强的开发和表达能力。当然,HTML的语义表达也是搜索的基石之一,这使得Web应用程序易于被索引和发现。“避短板”Webapp的短板首先在于能力不足。虽然有Cordova等工具可以打通nativeAPI和nativeAPI之间的鸿沟,但是webapp打包后的“长度”呢?因此,一方面,Web标准化组织正在努力为各种硬件访问提供接口。另一方面,ServiceWorker的提出是为了解决webapp本身无法通过简单的增加API来解决的关键问题:首先,webapp缺乏后台运行的能力。WebWorker可以在后台运行,但它依赖于页面。页面不存在时无法运行;其次,通过URL访问的网页之间是相互隔离的,虽然可以通过WebMessaging相互通信,但这是一种弱连接,需要消息之间的页面有关联。ServiceWorker通过新的Web应用程序编程模型和一组API统一了这两个问题。简单地说,serviceworker是一个短暂的、事件驱动的后台线程,它处理来自系统及其控制的页面的事件。目前,可以通过ServiceWorker实现的功能包括:可编程的离线缓存,取代颠簸的ApplicationCache,PushNotification(消息推送),BackgroundSync(后台同步)。ServiceWorker可以成为许多需要跨页面处理能力的入口点。比如错过了WebIntents,ServiceWorker也可能成为它复活的一个平台:通过ServiceWorker注册一个Intent事件,当事件到来时,Worker就会启动。针对不同的intentworker,可以选择打开不同的页面或者重新聚焦一个已经打开的页面。在W3CManifest标准的帮助下,Web应用程序在理论上具有超越浏览器并成为系统一部分的能力。Web应用程序的缺点是性能。当然,性能的问题不是和原生app跑分的对比,而是用户体验。在JavaScript方面,各家浏览器厂商一直在挖掘更高的性能,而最近几家巨头同时参与的WebAssembly的提案更是让业界充满了期待。请想象一下,浏览器直接执行的游戏引擎代码是经过优化的二进制中间表示(IR),甚至是缓存的后端转换机器码。此外,在渲染引擎方面,60FPS的性能一直是Blink过去一年的主要目标。相信Edge、WebKit等也不会掉队。渐进式webapp“扬长避短”之后,webapp应该以什么形式进入系统,成为系统的一员呢?AlexRussell最近提出了一个progressivewebapp的概念,这个概念在Android上已经可以看到萌芽。通过AndroidChrome上的搜索或链接发现并使用了一个页面。当该页面或某个域内的页面在一定时间内被多次访问时,浏览器会认为这些网页可以升级为APP,并弹出对话框让用户选择是否升级将网络应用程序安装到系统。该网页应用可享有与原生应用类似的权限,如启动主界面、独立的应用选择栏等。目前,Chrome规定只有使用了ServiceWorker和Manifest的网页才能升级为WebApp并安装,以保证App的质量。在我看来,这个渐进式网络应用程序的概念可以比作人与人之间的互动。一个人从陌生,到熟悉,再到相信。展开你的想象,webapp的权限管理也能渐进吗?具有高度安全性和隐私性的API访问控制将根据您对该应用程序的信任进行调整。综上所述,各种网络操作系统和混合打包工具已经挑战了原生应用程序主导的世界。随着web技术的进一步成熟,openweb可以逐渐像nativeapp一样逐渐成为系统的一部分。我希望有一天自由、平等、开放的网络成为开发者最好的平台。

最新推荐
猜你喜欢