关于 HTML5 “准备就绪” 的持续讨论基于许多错误的假设。这些导致了关于 HTML5 的谬误,这些谬误一旦被说出就会不断重复——很多时候根本没有验证其有效性。
HTML5 性能不佳?
每个想要谈论 HTML5 问题的人都关注的一大问题是性能。这里的主要问题是,几乎所有比较都忽略了一个事实,即你在比较苹果和梨(并非双关语)。
将 HTML5 应用程序的性能与原生应用程序进行比较,就像比较定制西装和商店里买的成衣。当然,定制西装会像手套一样合身,看起来也很棒,但如果你想出售它或将其转交给其他人,你就会很失望。对于下一个人来说,它不会是一样的。
这就是原生应用程序——它们是为单个环境和目的构建和优化的,并且处于固定状态——稍后详细介绍。
另一方面,HTML5 从其定义来看 是一种 Web 技术,应该独立于环境、显示或技术运行。它必须尽可能灵活,才能在 Web 上取得成功。从其定义来看,Web 是为所有人服务的,而不仅仅是那些能够负担得起非常昂贵的硬件并且乐于被一家公司控制的固定环境所束缚的一小部分幸运的人。
原生应用程序需要为每个设备和每个新平台从头开始编写,而 HTML5 应用程序允许你使用同一产品支持手机、平板电脑和台式机。HTML5 应用程序可以测试支持的功能并改进速度更快和更新设备上用户的体验,而不是将无法购买另一部手机的用户拒之门外,而不是具有固定尺寸和功能。
另一方面,原生应用程序在很多情况下都需要升级,并强迫最终用户购买新硬件,否则他们将无法获得产品。从灵活性的角度来看,HTML5 应用程序表现出色,而原生应用程序使你依赖于你的硬件,并在你无法负担或不想进行升级时让你陷入困境。一个很好的例子是苹果目前从 iOS 上切换到他们自己的地图。许多最终用户感到不满意,并且更愿意继续使用 Google 地图,但他们做不到。
HexGL - 一款由 WebGL 驱动的赛车游戏
看到 HTML5 在台式机上完全能够在性能方面超越,从滚动性能到 动态分析和更改视频,再到 以非常高的帧速率运行完整的 3D 游戏 并拥有 高速赛车游戏,我们不得不问自己,其性能问题出在哪里。
答案是硬件访问。为 iOS 和 Android 开发的移动硬件将 HTML5 应用程序视为二等公民,并且无法访问允许实现峰值性能的部分。iOS 中的 Web 视图受到操作系统的限制,无法像原生应用程序一样快速运行,尽管它使用了相同的原理。在 Android 上,Chrome 和 Firefox 展示了浏览器可以运行的速度,而相比之下,原生浏览器则缓慢爬行。
Android 上的原生浏览器让我们想起了 90 年代的 Internet Explorer,它威胁着长期保持不变,并阻碍万维网的发展——Mozilla 和 Firefox 诞生的原因。
从本质上讲,HTML5 是一辆 F1 赛车,它必须在泥土路上行驶,同时拖着操作系统赋予它的很多额外有效载荷,而无法绕过它——至少目前是这样。
HTML5 无法盈利?
HTML5 是一个基于开放 Web 技术的技术栈。说 HTML5 没有盈利模式,就像说 Web 无法盈利一样(当这写在一则显示广告的新闻网站上时,尤其具有讽刺意味)。
虽然乍一看,封闭的应用程序市场是销售产品的简单方法,但关于其成功的炒作很多,实际上,很少有开发人员能够通过封闭应用程序市场上的单个应用程序谋生。随着应用程序市场中发现和查找变得越来越困难,许多开发人员不再构建一个应用程序,而是构建数百个相同的应用程序(会说话的狗、会说话的猫、会说话的驴……),因为关键在于快速被发现并在市场搜索结果的第一页。
这就是使用原生应用程序的封闭应用程序市场对开发人员真正不利的地方:应用程序在 Web 上没有地址 (URL),并且无法在市场之外被找到。你需要手动在每个市场中提交每个应用程序,遵守其审查和提交流程,并且无法轻松更新你的应用程序,而不会导致服务中断。
HTML5 应用程序位于 Web 上并具有 URL,它还可以与 Adobe PhoneGap 等产品打包,成为 iOS 或 Android 的原生应用程序。反之则不可能。
从长远来看,这引发了一个问题,对于开发人员来说,哪种策略更好:押注于任何时候都可能撤回你的产品的单个封闭环境,还是在全球开放分发网络上分发并覆盖封闭商店?
Android 和 iOS 应用商店中的许多应用程序实际上都是 HTML5,并使用 PhoneGap 进行了转换。关于这一点,最大的故事是 《金融时报》将其应用程序发布为 HTML5 并获得了比原生应用程序更高的利润。最近,《纽约时报》 宣布将效仿其 Web 应用程序。
HTML5 无法离线使用?
由于 HTML5 是一个 Web 技术栈,因此本能反应是认为你必须始终在线才能使用它们。这完全是错误的。在 HTML5 应用程序中,有许多方法可以离线存储内容。最简单的方法是 Web 存储 API,它 在所有现代浏览器中都受支持(Opera mini 除外,因为它通过云服务发送内容并拥有自己的存储工具)。你还可以使用 AppCache 离线存储应用程序本身 它除了 Internet Explorer 外,其他所有浏览器都支持。如果你需要存储比 Web 存储提供的数据更复杂的数据,则可以使用 IndexedDB (适用于 Chrome 和 Firefox) 或 WebSQL (适用于 iOS 和 Safari)。为了解决这些问题,可以使用像 Lawnchair 这样的库来简化开发人员的使用。
HTML5 没有开发环境?
经常提到的一个问题是,HTML5 缺乏开发人员的工具。奇怪的是,你从未从开发人员那里听到过这种说法,而是来自那些希望购买软件来提高开发人员效率的人,而不是让他们自己决定什么能提高他们的效率。
HTML5 开发的核心是 Web 开发,并且为此提供了一个非常实用的开发环境。同样,主要问题是对 Web 的误解。你不会构建一个在任何地方看起来和运行都一样的产品——这会剥夺 Web 的核心优势。你构建一个对所有人都有效并在目标平台上表现出色的产品。因此,你的开发环境是一套工具,而不是一个可以为你做所有事情的单一工具。根据你构建的内容,你可以选择使用其中的许多工具或只使用一个。
Web 作为媒体的成功正是基于这样一个事实:你不需要成为开发人员才能发布内容——你可以使用博客平台、CMS 甚至操作系统附带的简单文本编辑器来创建你的第一个 HTML 页面。随着你在开发人员职业生涯中的进步,你会发现越来越多的你喜欢的工具,并对这些工具感到舒适和有效,但没有一个工具可以统治所有工具。一些开发人员更喜欢 Visual Studio 或 Eclipse 等 IDE。其他人想要 Dreamweaver 等所见即所得风格的编辑器,但大多数 Web 开发人员都会使用文本编辑器或其他一些工具。从 Sublime Text、Notepad++ 到 Linux 计算机上的 VIM 或 emacs,所有这些都是可以被数百万开发人员每天使用并用于构建 Web 内容的工具。
在 Web 开发人员调试和测试方面,如今他们很幸运,因为我们的最终用户必须查看我们构建的软件——浏览器——也是调试和测试环境。从 Firefox 将 Firebug 作为附加组件来实时查看更改并动态更改内容开始,然后是 Opera 的 Dragonfly 以及 Safari 和 Chrome 的 Devtools,现在所有浏览器都具有专门为开发人员提供的许多功能。Firefox 的新开发者工具 甚至更进一步,它不仅是一个调试环境,而且本身就是一组工具,开发人员可以根据自己的需要对其进行扩展。
远程调试是我们现在拥有的另一个选项。这意味着我们作为开发人员可以在我们的开发计算机上更改在手机上运行的应用程序,而不必编写它们、将它们发送到手机、安装它们、测试它们、查找错误并重复。这大大加快了开发时间。
对于更偏向视觉的开发人员,Adobe 最近发布了其 Edge 套件,它将所见即所得风格的开发引入 HTML5,包括从 Photoshop 拖放。Adobe 的 Edge Inspect 和 PhoneGap 使在多个设备上同时进行测试以及将 HTML5 应用程序作为打包的原生应用程序发送到 iOS 和 Android 变得容易。
在部署和打包方面,Google 刚刚发布了其 Yeoman 项目,该项目使 Web 开发人员可以轻松地将 Web 产品打包并部署为应用程序,并包含使它们运行良好的所有必要步骤。
总而言之,HTML5 没有固定的开发环境,因为这会削弱平台——这是 Web,你可以选择最适合你的工具。
HTML5 可以做而原生应用程序无法做到的事情
从本质上讲,HTML5 的许多谬误都是基于这样一个事实,即比较是在为其测试平台明确构建的内容与也在该平台上支持的内容之间进行的。就像比较快艇和气垫船的性能会产生相同可预测的结果一样。更有趣的问题是,是什么让 HTML5 对开发人员和最终用户来说如此出色,而原生应用程序可以或无法做到这一点。
- **一次编写,随处部署** - HTML5 可以在浏览器、平板电脑和台式机上运行,你可以将其转换为原生代码以支持 iOS 和 Android。反之则不可能。
- **通过 Web 共享** - 由于 HTML5 应用程序具有 URL,因此可以通过 Web 共享并通过搜索 Web 找到。你不需要转到市场并从拥挤、有限的空间中找到它,而是可以使用相同的技巧来推广其他 Web 内容。喜欢和链接到你的应用程序的人越多,就越容易被找到。
- **基于商定的多供应商标准构建** - HTML5 是使 Web 成为现在这样的公司的共同努力,而不是一家可以朝着你不满意的方向发展的供应商。
- **数百万开发人员** - 过去几年中为 Web 构建过内容的每个人都准备编写应用程序。它不再是一个小型、专门的社区。
- **消费和开发工具是同一件事** - 你只需要一个文本编辑器和一个浏览器即可开始。
- **小型、原子更新** - 如果原生应用程序需要升级,则需要重新下载整个应用程序(愤怒的小鸟的新关卡?以下是通过你的 3G 连接下载的 23MB)。HTML5 应用程序可以根据需要下载数据并将其离线存储,从而使更新不那么痛苦。
- **简单的功能升级** - 原生应用程序在安装时需要向你请求访问硬件的权限,并且以后无法更改,这就是为什么每个应用程序在一开始就请求访问所有内容的原因(这当然存在隐私/安全风险)。HTML5 应用程序可以根据需要请求访问硬件和数据,而无需更新或重新安装。
- **适应环境** - HTML5 应用程序可以使用响应式设计为环境提供最佳体验,而无需更改代码。你可以从台式机无缝切换到移动设备再到平板电脑,而无需在每个设备上安装不同的应用程序。
让我们看看原生应用程序是否可以做到这一点。
打破硬件锁定并简化盈利
HTML5 目前并非开发人员的显而易见的选择的主要原因是在涉及硬件时上述提到的锁定。iOS 设备不允许使用不同的浏览器引擎,也不允许 HTML5 访问摄像头、地址簿、振动、电话或短信。换句话说,所有使移动设备对开发人员来说有趣且对应用程序非常必要的功能。
为了解决此问题,Mozilla 和其他一些公司创建了一组 API,以标准化的方式定义对这些 API 的访问,称为 Web API。这允许任何浏览器以安全的方式访问硬件,并打破锁定。
第一个实现这些 API 的环境是 Firefox OS,其设备将于明年开始出货。使用 Firefox OS 手机,你可以构建具有与原生应用程序相同的硬件访问权限的应用程序。开发人员可以直接访问硬件,从而可以构建速度更快且更重要的是更小的应用程序。对于最终用户而言,好处是设备将更加便宜,并且 Firefox OS 可以运行在非常低规格的硬件上,例如无法升级到最新 Android 的硬件。
在盈利方面,Mozilla 正在开发自己的 HTML5 应用程序市场,该市场不仅允许提交 HTML5 应用程序,还允许通过简单的搜索在 Web 上发现这些应用程序。为了方便最终用户购买应用程序,我们与移动运营商合作,允许将账单计入移动合同。这允许没有信用卡的最终用户也能购买应用程序并加入移动 Web 革命。
HTML5 发展到什么程度了?
总而言之,HTML5 正在飞速发展,成为一个非常有趣且可靠的应用程序开发平台。我们必须消除的主要障碍是硬件访问,并且随着 Web API 的工作以及像 PhoneGap 这样的系统为我们提供了访问权限,这些障碍比我们预期的要小得多。
上面提到的 HTML5 相比原生应用的优势足以成为开发者参与并从 HTML5 开始的理由,而不是将时间浪费在为每个平台构建不同的代码库上。如果你只想支持一个特定的平台,你当然可以不这么做,但如果那样的话,就不要再抱怨 HTML5 的问题导致了你的决定。
HTML5 开发独立于平台和浏览器。如果你不认同这个理念,就会限制它的潜力。历史上,封闭的平台来了又去,而网络仍然发展强劲,它让你能够触达全球数百万用户,并且让你无需征求任何人的许可或安装复杂的开发环境即可开始开发。这就是人们开始使用网络的主要原因,而且至今仍然如此。没有人被拒之门外,所以,来试试吧。
关于 Chris Heilmann
HTML5 和开放网络的布道者。让我们一起解决这个问题!
124 条评论