我是iOS(本机)开发人员,自App Store问世以来。从那以后,我也学到了一些Windows-Phone和Android。我注意到在本机上构建HTML5网络应用程序的必然趋势,它似乎比我预期的增长更快。作为一个本地开发人员,这让我感到很沮丧,因为大多数时候有很多关于本地语言的论据,而且只有少数人会去HTML5(即它是跨平台的!),但后面这几个论点似乎比前者更胜一筹。以及更多这些天,有时是无效的原因。
我并不认为移动应用程序的“未来”是HTML5,而是使用像PhoneGap这样的工具,它可以实现跨平台的大规模分发。与原生应用相比,网络应用的体验总是低于标准,而且最重要的是,很多神话往往会浮现在它周围。例如,“客户不会为多个平台上的本地开发付费;它太贵了!”这是一个神话,如果许多客户真正了解他们获得的应用程序质量的差异,他们将为此付出代价。行业领导者一次又一次地证明了这一点,他们在很大程度上并没有为客户构建网络应用程序。我甚至知道当CEO拿到他们外包的应用程序时发生的近乎诉讼,这是一个PhoneGap / HTML5应用程序。他(正当地)对承诺“应用程序”的公司感到愤怒,并想知道为什么它没有像其他应用程序一样感觉或回应,从而导致一团糟。
其他的神话包括HTML5路由可以节省大量的代码和时间,但情况并非如此。跨越设备/平台的测试,更不用说在这些平台上实现应用程序功能所涉及的CSS和javascript的数量,通常会导致代码混乱,并且花费很多时间来调试相关问题。一个典型的本地开发人员可以在几个平台上在几个小时内弹出简单的基于列表的导航/详细视图,当它很可能需要大约相同的时间来构建HTML5以“模仿”并伪造相同的确切功能和外观/感觉。此外,通过PhoneGap / HTML5路线,总是能够确保您落后于平台和技术的前沿,而不是最前沿的事实呢?
我最大的挫败感是,现在似乎有些开发商店甚至有时甚至向客户推荐PhoneGap / HTML5方法,因为它具有跨平台等的吸引力,甚至没有真正向客户解释(有时候他们无能为力)关于它在性能和外观/感觉上的差异实际上需要什么。
我当然希望跟上时代的步伐并为最坏的情况做好准备,这就是为什么我要开始学习这些工具的原因,但我很好奇你们(当地的开发人员)是如何处理这种工具的事情?在我这个想法中,我一个人吗?关于如何以合理的方式向人们解释如何做出这个决策过程的任何建议?
在我得到有关此问题的回复之前,请注意我完全理解有时网络应用程序路线是正确的方法,我完全理解有些客户根本不会支付原生费用,这很好。我也明白,预测表明随着时间的推移,HTML5应用程序的百分比将继续上升。但是,我只是不同意“所有应用程序应该是HTML5的日益增长的心态,我们只是在使用原生作品时需要(即相机等)。“我的个人意见是,它应该是相反的:“所有应用程序都应该是原生的,除非在HTML5中更容易/更快地执行特定的UI和功能”。公司可以找到快速编码的本地开发人员,并且可以访问代码库,以便快速进行本机开发,如果不是通过Web应用程序进行快速编写。
思考?如果这是一个错误的论坛,我会提前道歉,但我很想得到意见和建议。谢谢! -Vincent
答案 0 :(得分:10)
以下是使用Native vs. HTML5的简单案例。从技术上讲,没有任何东西阻止基于浏览器的解决方案变得像基于本机的解决方案一样强大,但它永远不会发生,这就是为什么:供应商退出:苹果,谷歌和微软没有动力制造这发生了。想一想。如果他们完全标准化,他们的平台几乎没有优势。让我们以消息传递为例。你能通过HTML5获得最好的Apple或Android消息服务吗?当然你可以,但为什么平台供应商会走这条路?为什么他们会贬值iOS SDK或Android SDK?所以这就像浏览器之战只在移动领域发挥作用。当浏览器战争开始时,每个人都认为超级浏览器会出现,但它从未出现过,而且出于同样的原因,这次也不会出现。所以它真的不仅仅是描述的技术问题,开放式还是封闭性。事实上,供应商不会以开放的方式提供最新和最好的产品。这是大多数跨平台解决方案落后于供应商版本的原因之一。
另一个例子是支持WebGL。对WebGL的支持所需的时间远远超过应有的时间。一旦有比WebGl更好的东西,它将首先以原生的方式提供,然后在所有浏览器,每个主要设备上最终完全支持WebGL。但支持总是落后于本土人。关键是基于浏览器将始终落后一步,因为这就是供应商喜欢它的方式。
另请注意,许多应用客户认为HTML5实际上更符合网络/互联网标准,而实际上原生应用就像HTML5应用一样使用HTTP。这是常见的误解,因为大多数本机应用程序使用HTTP上的服务访问,就像HTML5应用程序一样。唯一的区别是您正在处理javascript与本机方式的请求和响应。
安全性是另一个需要考虑的重要问题,有多少安全应用正在使用HTML5?我敢打赌,大多数进行安全交易的应用程序都是原生的,并且有充分的理由。
如果人们可以提供最近在Android或iOS中发布的功能的示例以及PhoneGap提供的这些功能的支持级别以及PhoneGAP支持这些sdk功能的路线图,那将非常有用。换句话说,当SDK的新版本出现时,PhoneGAP没有锁定步骤,也没有Titanium。然而,PhoneGap在我看来是本机解决方案的主要竞争对手,因此它与本机的比较将是最有意义的。我认为将本机与跨平台的专有SDK进行比较是浪费时间。这永远不会有足够的吸引力,无论是给PhoneGAP还是Native,都可以赚钱。
对于那些对PhoneGap感到兴奋的人,请注意。内置插件可能存在于您需要的所有平台上,但如果您需要为PhoneGap编写自己的插件,该怎么办? (您将要了解PhoneGAP中GAP背后的真实故事)或者因为您想要做一些与现有插件完全不同的事情,或者因为您想要自定义现有插件。这不是一次性部署的场景。您需要为您想要该功能的每个平台编写自定义插件。换句话说,你又回到了原住民。因此,您最好花时间仔细评估插件(在您将要运行HTML5应用程序的所有平台上),并确保它们现在和将来都是您需要的。另一方面,没有PhoneGAP的HTML5非常不稳定,而且有限,你会发现你不久就会自行重写PhoneGAP。
另一点是,应用程序可以通过多种方式进行实际交互,其中只有一种方式是使用HTTP。它还经常需要以最佳方式与设备上的操作系统和资源进行交互。不要太提及真正不关心使用什么底层技术但基于与许多原生应用程序交互的高期望的用户。
当您运行HTML5应用程序时,您实际上是在另一个应用程序(即浏览器)中运行您的应用程序。浏览器应用程序的功能与平台供应商所允许的一样强大。如果历史是任何指南,它将会发展,并且会添加更多功能,但从不以最佳方式,永远不会与所有其他供应商同步,并且由于技术和业务原因,从未与底层操作系统和SDK保持同步。
用户希望获得最佳体验,应该注意的是,虽然有很多人拥有自己的机器人,而且很多人拥有iPhone和iPad,但同时拥有这两者的人相对较少。换句话说,Android用户可能不关心您的应用的iOS版本,而iOS用户可能不关心您的Android应用。但是用户真正关心应用程序如何在他们选择的平台上运行。他们不希望在两个平台上运行一半的东西,因为他们从未在两个平台上看到它。用户几乎总是在一个平台上同时体验应用程序。
就原生解决方案与HTML5的定位而言,我认为它是关于让决策者认识到它不仅仅是原生开发人员喜欢原生,也是喜欢原生解决方案的平台供应商,这意味着更好,更高质量的应用与OS改进同步进行。 反过来,这意味着拥有更好移动体验的快乐app用户。
答案 1 :(得分:3)
我想我能以某种方式理解你。我开发了原生Android应用程序已有一段时间了,我们在公司内部讨论了跨平台开发。
根据我的经验,如果您想构建一些严肃的应用程序,许多移动跨平台解决方案(如Phonegap,Appcelerator或Adobe Air)都会失败。也许这些解决方案将来会变得更好。
目前我推荐以下用于开发移动应用程序:
移动网站有点不同。在许多情况下,已经有一个“正常”的网站,只需要清理和优化移动设备。在这种情况下,您可以使用现有的代码/接口,这可以节省大量时间。
答案 2 :(得分:0)
这类似于“将来哪一种编程语言将取得胜利?”或者(sotto voce)vi vs emacs的问题。制作应用程序的方法不止一种。 Native有它的优点,HTML5也是如此,具体取决于问题和开发人员的技能。我建议您熟悉这两种工作流程,这样可以更好地使您在将来提出建议,并接受其他人的意见。
答案 3 :(得分:0)
其他一些重要问题。有没有一个伟大的元编程方式?像Titanium或Java背后的初步想法。此外,有些东西可以更好地实现,例如地图。此外,cpu,内存的增加使得一些支持原生的论据不太相关。