我认为原生 APP 和 HTML5 的不同在于表达界面方式的不同,原生 APP 使用绘图表达,HTML5 使用 HTML(超文本标记语言)表达。
原生 APP 的宿主是操作系统,HTML 5 的宿主是浏览器,浏览器就是系统的一个原生 APP。这样就使得原生 APP 可以获得更多的系统权限,更灵活的编程方式,用绘图可以实现的效果无论如何都会比 HTML 要多。HTML5 有了浏览器这个隔离层次之后,与操作系统是无关的,代码可以同时运行在 Android 与 IOS 中。
从商业上考量,互联网公司都会希望用户装上自己的 APP,所以现在的互联网产品的 Web 页面,都会用较大的篇幅去引导用户下载 APP。在这个 APP 中,可以用绘图去画界面,原生控件本质上也是对绘图的封装,也可以用 HTML 来编写,然后由内嵌的浏览器去画界面。这种区别才是“原生”与“非原生”的本质。这种“原生”与“非原生”的区分在编程里面是普遍存在的,比如 java 与 C/C++,前者运行在虚拟机中,后者运行在操作系统中,它们的区别是宿主的不同。
很多人会觉得“底层”编码的程序员很厉害,比如写汇编和 C 的程序员,这么理解其实也没有错,用低级语言编程的难度的确较高。这也可以解释为什么写低级语言的程序员工资较高。但是编程难度高并不代表写出来的程序好用,很多情况下恰恰是相反的。在有同样的可行性的情况下,使用高级语言写出来的程序更可靠,更好用。HTML5 相对于原生 APP,同样有这样的优点,浏览器对于 HTML 的解释是有容错性的,这就使得程序员很少会写出令整个应用崩溃的代码。
至于原生 APP 和 HTML5 的前景,其实可以参照桌面应用的发展历史。在 Web 大行其道以前,我们需要在操作系统安装很多的软件,比如各种播放器等。现在人们的视听基本上都在浏览器上完成,插入一个光盘,或者下载一个多媒体文件,然后用播放器打开的行为越来越少了。概括地说,很多的桌面软件迁移到 Web 上,留下来的软件有两种,一是安装率超高的软件,比如 QQ 和 360,二是专业生产内容的软件,比如 Office 和 PhotoShop。今天还安装在桌面系统的软件,都有着复杂的功能,几乎不可能在 Web 上实现。
我觉得移动端的原生 APP 和 HTML5 会重演桌面应用的历史,最终手机上会留下几个巨无霸 APP,微信、支付宝等,其他 APP 可能会被 Web 应用取代。其实这种情况现在已经开始出现了,很多 APP 的运营者纷纷感叹,现在获取装机量的成本越来越高。的确,现在手机用户安装 APP 的热情正在减退,而且手机内存的发展跟不上 APP 体积的膨胀,用户面临手机内存容量不足的尴尬。
从人才需求上,HTML5 的需求量肯定会越来越高,就像 Web 程序员的招聘比较多一样。而原生 APP 的薪酬可能会比较高,就业面也会比较窄。