PeopleSoft PeopleTools移动应用开发
上QQ阅读APP看书,第一时间看更新

1.1 移动应用类型

在本书中,将讨论三种不同的移动应用类型:

•HTML5 Web应用

•原生应用

•混合应用

如果在移动设备上运行以上任何一种应用,那么可能很难分清到底是哪一种类型。然而,从开发的角度来看,应用类型在开发、维护以及功能实现方面都会产生重大的影响。

1.1.1 HTML5 Web应用

HTML5非常适合于移动开发。它支持LocalStorage、离线应用以及自适应布局,从而可以更好地适应移动设备不断发展且经常处于断开连接的特性。

HTML5应用与其他两种移动应用类型之间存在三点关键区别:

•传递机制

•设备功能的可访问性

•可移植性

简而言之,HTML5应用只是一个可通过Web浏览器访问的普通Web页面。这些应用通过设备的Web浏览器被部署和“安装”,而不是通过应用商店。它们在本地并没有安装的二进制文件。此处不严格地使用了术语“安装”,因为HTML5应用的安装只会创建一个指向本地Web缓存或远程Web网站的图标。

HTML5应用的一个主要局限性是其功能可访问性。它无法智能地允许所有的Web页面访问相机、通讯录、已安装应用数据等。需要访问这些设备功能的应用必须请求权限:较新的设备正在以一种安全的方式向HTML5应用开放这些功能。

构建HTML5应用的主要动机是可移植性。通过Web标准以及浏览器支持,HTML5可以实现用单一技术编写应用,同时可以将应用部署到多种不同的移动操作系统。

1.1.2 原生应用

原生应用使用特定于设备的工具包进行构建,且使用特定于开发商的语言进行编写。针对多种设备进行开发的开发人员需要维护数倍的代码行,针对每种操作系统都需要进行代码维护。这些应用通常由一个严格控制的应用商店发布。选择原生应用而不选择HTML5的主要原因是为了访问那些HTML5应用无法访问的设备功能。

案例研究:Facebook和HTML5

2012年的多条新闻报道都引用了Mark Zuckerberg的一句话:“相对于原生应用,我们认为作为一家公司所犯的最大错误就是在HTML5上投入了太多的赌注”。这是一句非常有利的声明。Mark为什么这么说?其中有一个故事:当年Facebook为了尝试简化开发流程,将其iOS和Android应用都整合成一个单一的HTML5应用,并以一种混合模式分发。然而,因为受到性能问题的困扰,Facebook最终放弃了HTML5,而选择了原生应用。到底什么地方出现了错误?HTML5应用是否真的比原生应用运行要慢?关于Facebook为什么在使用HTML5时遭受到性能问题的困扰,至今仍存在很多传言。一些观点认为主要原因是其存在缺陷的结构和设计,从而导致页面数据大量更新时产生了性能问题。而另一些观点则认为是因为移动硬件上JavaScript的不佳表现导致了性能问题。对于每个说HTML5慢的博客,都能找到另一个说它与原生应用一样快的博客。其实,很难说哪种观点正确。但有一件事是肯定的——性能良好的HTML5应用需要好的工程。

目前很难说哪种技术最终将赢得这场性能之战的胜利。在你开始进行移动开发项目时,请评估一下自己的部署选项:HTML5、原生或混合。性能只是一种度量。在选择适合自己公司的模式时应该综合考虑每种模式的所有优点。

1.1.3 混合应用

混合应用是运行在原生容器中的标准HTML5 Web应用。它们通常通过Web商店以类似于原生应用的分发方式进行分发。混合应用具备了另外两种应用类型的优缺点。与HTML5应用类似,混合应用使用了多个操作系统共享的一个公共代码库。同时,由于这些应用都是Web应用,因此它们也共享了HTML5应用的实时特性。此外,通过原生容器,混合应用以类似于原生移动应用的方式获取了对设备功能的受信任访问。PhoneGap(一种流行的混合容器)通过一种插件结构(该结构通过JavaScript API对外公开)使设备功能可访问。

注意:

本书的第III部分将会介绍PhoneGap(以及Apache Cordova)。