基于Html5的移动应用开发经验总结:第一篇--架构选型篇(上)
近几年移动应用日益广泛,尤其是近两年瞬间爆发,对于从事技术研发的公司或开发人员来说既是一个机遇又是一个挑战。
移动应用开发是一个相对较新的领域,对于很多公司和开发人员都是一个很好的机遇,尽早融入这个领域就很有可能在未来与其他公司或开发者缩小差距。但目前移动设备以及移动应用开发相对还不足够成熟,无论是硬件还是软件,大家都想分一杯羹,所以都在极力推崇自己的想法。这就给开发者带来很大的难度,如果你之前参与过Web应用前端的设计与开发话,一定经受过各种版本浏览器兼容性调试的噩梦,移动应用开发目前也存在这个问题。
移动终端目前主流操作系统有iOS、Android、Windows Phone、Symbian、BlackBerry等几种,在程序底层内核上存在不小的差异。终端硬件设备目前主要是平板电脑和手机,由于这些设备的屏幕大小、浏览器内核及操作方式的不同也给移动应用开发带来了不小的困难。如何能够尽可能的一劳永逸,在将一个应用从一个平台移植到另外一个平台上时尽可能的重用代码或功能是应用架构设计和技术选型的重要课题。
在正式开始书写我的开发经验之前,先说明一下本文章仅代表我个人的一些经验和见解,如有不正确或不足的地方,欢迎随时与我交流或拍砖,我的微博是(http://weibo.com/songhaipeng)。
1.1 终端操作系统选型
由于移动应用必须要有一个硬件和终端操作作为载体,不同的终端操作系统在针对程序的要求以及底层解释方法不同,所以在正式开始开发之前,你需要确定一个主要针对的终端操作系统,完成其中以后再进行移植完善。
现行主流的终端操作系统有iOS、Android、Windows Phone、Symbian、BlackBerry,对于他们的差异这个课题太大了,我只是在这里说明一下我的理解以及我选择的原因供大家参考。
1.1.1. iOS
iOS的智能手机操作系统的原名为iPhoneOS,其核心与Mac OS X的核心同样都源自于Apple Darwin。它主要是给iPhone、iPad、iPodtouch、AppleTV等苹果公司的硬件设备使用。就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。
1.1.2. Android
Android一词的本义指“机器人”, Android也是Google于07年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
1.1.3. iOS与Android对比
苹果的品牌营销以及用户体验做得很好,所以在国内的用户数量很多,也是时尚的一个代名词,所以如果你的应用是商用的话iOS是需要加分的(不考虑硬件成本的话)。苹果公司为iOS的开发提供了开发工具XCode及丰富的SDK以及教学视频供开发者使用。需要特别说明的是针对iOS的应用开发调试和发布的时候需要苹果公司的开发者授权,如果没有授权的话,调试的时候需要对移动设备进行越狱。
Android由于其比较好的开放性获取了很多开发者以及手机厂商的亲睐,所以在除苹果产品外的终端设备中很多采用的都是Android或基于Android进行的深度二次开发。如果你的应用是针对全面大众,Android的市场占有率你不得不考虑。另外Android在开发和调试上Android要比iOS方便很多。
本文章主要是围绕目前比较流行的iOS和Android来进行讲解。其他的几种操作系统就不在这里多说了,如果各位想要进一步了解,可以到Baidu上Google一下。
1.2 应用开发语言选型
目前主流的移动应用开发语言是Java或Html5+JavaScript框架,这个问题对于新手往往很难回答,我建议根据你自己的所长来选择,这样可以很快上手,先给自己树立开发的信心这点非常重要。不要听信那些什么Java比其他开发语言好的评论,那些都是不懂程序开发的评论。说到这里我忍不住多说几句废话,每一种程序语言的存在都有他存在的意义,都有各自的优势,取其所长就好,每种语言不都有伟大的应用吗?所以我一直认为,开发语言没有好坏,重要的是看写程序的人,人才是最重要的关键点。最典型的例子就是Web应用开发中的SQL注入攻击,有哪一种开发语言可以说不存在SQL注入,避免注入攻击是由开发者的有效处理才能避免。
使用Java开发,首先有很多开源的资源可以借用,如果你的应用设计很多底层的开发那么Java是你的不二选择,如果你的应用只是一个信息展示和交互,使用Java有些大材小用。Java入门门槛较高,开发及测试难度较高,另外由于各种移动操作系统针对Java的解释不同,可移植性相对较差。
使用Html5开发,由于Html5是由Html衍生而来,加入了新的标签集以及视频、音频、绘图、Storage、Socket等多种功能,使得Html5配合JavaScript完成桌面、Web及移动应用开发变为可能。Html5首先是部署及开发难度较低,入门门槛较低,在不同移动系统之间的通用性较高,开发调试相对简单。
有关Html5的基础教程可以参考如下网址:
《Html5 教程》http://www.w3school.com.cn/html5/
《Html5中文手册》http://www.html5china.com/manual/html5/
两者开发出来的程序在性能方面,Html5占用内存较少,Java在内存释放方面对程序员要求较高。但Html5在处理并发事件或频繁点击的时候可能会出现假死的情况,但还是可以使用一定的技术手段解决的,简单总结,想要快速开发部署并保证移植性,使用Html5事半功倍,如果对底层控制以及性能要求较高,则还是要使用Java。有关详细的性能对比可以到Baidu上Google一下有很多。