现在,针对移动设备像智能手机和平板电脑的应用开发很流行。Apple公司的AppStore(针对iPhone、iPod和iPad)拥有超过350,000种应用,而Android的marketplace也快速追赶上来,现在已经拥有超过200,000种应用。然而,Android和iOS并非是仅有的两种移动平台。BlackBerry也是有力的竞争者,此外还有Nokia。最近Microsoft发布了Windows Phone 7,HP也发布了新的WebOS设备。这样,对于用户来说有了多种选择,但对我们这些开发者来说却是个噩梦。我们应该针对哪种平台来开发应用程序呢?
在移动平台之间共享代码极度困难。每种平台都选择了自己的开发框架,还有自己的语言和API。对于iOS开发,你需要使用Objective-C和CocoaTouch API;对于Android开发,你要使用Java和Android API;对于Windows Phone 7,你需要使用.NET和Silverlight API。
然而,我们还是拥有一种解决方案:Web开发,特别是:Webkit。我们会看到,所有主要的移动平台供应商(除了Microsoft之外)都在Webkit之上构建了他们的移动浏览器,而Webkit是当前最新的、速度最快的开源浏览器引擎。Webkit支持多种移动应用所需要的HTML5 特性,包括侦测触摸手势(轻击、强击和缩放)、定位API(确定用户的位置),并且支持本地数据库(浏览器中的SQLite数据库,用于在本地缓存数据)。
当前,在Android、iOS、WebOS以及BlackBerry OS的六款浏览器中,都对这些特性提供了本地支持。对于不包含基于Webkit的浏览器的设备,我们还可以使用PhoneGap。PhoneGap让我们可以使用web技术(包括HTML5)开发本地应用程序,并把应用程序包装成为本地应用程序,那样就可以分发给用户了(例如,通过平台的应用程序市场)。如果平台还没有内建的WebKit浏览器,那么PhoneGap就会为其提供。PhoneGap应用程序可以在六种不同的移动平台上运行。
JavaScript框架厂商注意到了这是个机会,于是就构建了多种能够在移动Web上运行的框架。jQuery Mobile和Sencha Touch都是比较典型的例子。这些框架很容易给人留下深刻的印象,因为对于当前的开发者来说,使用它们来为移动网络开发应用程序是一种不错的方式。然而,它们还都是基于JavaScript、HTML和CSS的,它们的目的都不是要开发应用程序,而是要开发包含超链接文档的网络应用。各种框架试图对这些语言进行调整,从而适合他们的新角色,但是这会引起你的思考,专门为开发移动应用程序 而设计的语言应该是什么样子的呢?
如果我们想要设计这样的一种语言,需要解决什么样的问题呢?
- 首先要解决的就是工具的支持。从事企业级开发的开发者(比方说Java和.NET的开发者)习惯使用像Eclipse之类的IDE特性,像在键入的时候就能够突出显示错误、代码自动完成、引用解析、代码大纲以及重构等等。JavaScript和HTML在本质上就是动态的,这让它们很强大,但是也让工具厂商很难为其创建出Eclipse和InteliJ那种级别的IDE。对于当前所有语言来说,良好的IDE支持都是前提条件。
- 第二个要解决的问题是简洁。例如,用户界面框架经常会包含大量类似的代码,它们的作用就是把数据从数据库中复制到用户界面,或者把界面上的数据复制回数据库。我们的新语言应该减少开发者所需要编写的样板化代码。
- 第三个问题是JavaScript的异步编程模型。在浏览器中,JavaScript是单线程的,开发者需要使用回调机制来执行数据库查询之类耗费资源的 *** 作,比方说,我们不会编写像下面这样的同步代码:
var results = tx.executeQuery("SELECT * FROM User");
for(var i = 0; i < results.length; i++) {
...
}欢迎分享,转载请注明来源:内存溢出
评论列表(0条)