Tim Bray不久前在西雅图 Android 开发者群组会议上论及移动应用的 Web 与原生之争,他详述了双方的众多论点论据,但并没有彻底倒向任一方。他首先来了一段自白:
我是搞 Web 出身的……从 1994 年起就靠它吃饭,中间还小赚了几笔。所以我懂 Web,我喜欢它,我感激它。
首先,他请大家承认下述现状:
移动设备上几乎所有应用都需要使用网络,而它们几乎都是经由 HTTP 实现的。
所以他认为,几乎所有移动应用都是 Web 应用。只不过大家一般所说的“Web Apps”,其实是指用 HTML、JavaScript 和 CSS 编写的移动应用。而原生应用
载体是经过编译的代码,与 CocoaTouch、Android、WinPhone7 之类的框架打交道。
Tim Bray 解释,游戏多用原生技术编写的主要原因,是为了能够重用 Unity、Unreal 之类现成的游戏引擎。本质上,Android 和 iOS 可以在这个层次上共享 C 代码。
Web 技术的最大好处,是像游戏引擎一样,可以跨平台重用客户端代码。他认为,假如维持两大主流平台的状况,Web 技术在跨平台重用方面的优势不明显。但如果市场较为分裂,应用开发者需要支持 Windows Mobile 7 、RIM、WebOS 等平台,则 Web 技术将大展拳脚。
他指出 Web 技术当前存在若干实质障碍,如性能和访问内置硬件功能的方面,但并非不可克服。他个人认为 Web 技术的真正问题是在工具和文化层面。
Android 和 iOS 框架经过其精干开发团队的精准设计,开发者可以轻而易举地用它们创造出吸引人的原生应用。
也许 Web 框架的繁盛反而成了它自己最大的敌人:
这是一个两难选择,以 [专门搜集各种 JavaScript 库的]EvetyJS 网站为例,它列举了 21 种不同的 JavaScript 工具包,我敢说其中大部分都是相当优秀的,但我也敢说除了这 21 种,还有更多我从来没听说过的。那么,你准备押宝哪一种?
他的结论是虽然 Web 框架得到很大投入,“但浏览器还远远没有跟上的迹象”。
Tim 提醒说,PhoneGap 和 Appcelerator 希望提供一种方案让开发者既能够用 Web 技术编写跨平台共享的代码,又具备原生的外观和进入应用商店的能力,但这条路线“非常难,比表面上看要难得多”。
Tim 举出他自己使用“Trip It”应用的情况作为案例。“Trip It”应用同时提供了原生和 Web 两种版本,但并没有这样做的明确理由 ,因为它需要用到的一切能力,Web 框架都能提供。可是 Tim 的答案跟很多智能手机用户一样:
我提供又一件证据:在手机上,我每次都用 [Trip It 的] 原生应用,从来不用网站。还有,我是它的付费用户,促使我跨过收费门槛的,恰好是原生应用的流畅感。
智能手机是一类相当复杂的机器,每天都有成千上万的开发者为它创造一种新类型的应用程序——“融合应用(converged applications)”。这类新应用常常戏剧性地改变我们的生活,医疗、位置相关商业、社交网络、金融(通过手机收款和支付正日益普及)、娱乐……各领域达到的便利程度甚至连两年前都无法想象。虽然各种应用都离不开 HTTP,但其实设备本身还使用了一系列预设前提与 Web 迥异的电话通信协议,Web 几乎总是假定设备拥有持续的网络连接和电源,而这些通信协议则为双向通信、网络鉴权、小额支付、电源和带宽消耗等方面优化。
消费者会不会继续偏好原生应用和应用商店的便利?抑或消费者其实希望脱离蛮横的收费模式,宁愿接受 Web 和熟悉的广告?你是像 Tim 一样举棋不定还是早就下定决心?你自己用原生应用多还是 Web 应用多?
评论