1. 背景
目前市场上主流的移动操作系统,包括iOS,Android,webOS,Symbian,BlackBerry等。如果没有统一的操作系统,开发程序就是一件异常麻烦的事情。
因为每一种手机平台都有自己的SDK,它们需要使用不同语言来进行开发,你可能不得不需要5、6个代码仓库来管理不同设备上的代码,而且需要不同设备的开发人员来开发维护这些仓库,你还不得不装上各个设备的SDK,设置好路径和各种配置信息,来编译不同设备上的应用包。
因此,在移动操作系统已成诸侯割据之势的今天,迫切需要一种真正的跨平台技术。
目前,开发移动程序框架选择很多,从Web App,到PhoneGap,Titanium,MonoTouch,再到Native App。我们认为,可以从以下几方面对这些技术进行比较:
A. 兼容性。能否真正written once, run everywhere。是真正跨平台,还是伪跨平台。
B. 标准化。是否采用国际通用技术实现,是否被不同操作系统完美支持,是否具有较低的开发成本。
C. 性能。能否适应当前主流手机配置。
2. 主流技术简介
2.1 PhoneGap
兼容性:★★★★★ 标准化:★★★★★ 性能:★★☆☆☆
Phonegap采用W3C标准,以HTML5 +CSS3 + JAVASCRIPT作为开发工具。通过JAVASCRIPT封装接口访问移动OS底层API,比如GPS定位、重力感应、短信等,以web app的形式开发业务逻辑,并通过WebView control作为运行时环境,使其作为native app部署到不同移动OS上。
目前phonegap完美支持iOS,Android,webOS,Symbian,BlackBerry,windowsmobile等六种操作系统。同时,Phonegap是免费开源的。
利用phonegap进行跨平台开发,可以有如下几种方式:
A. 编写纯粹的web app,利用phonegap build云端工具转换成各同OS的安装包。这种方式可以完美实现written once, run everywhere。但是,在纯粹的web app中,难以获得OS的底层支持,比如GPS定位、重力感应、短信等。如果不需要这些服务,这种开发方式可谓快捷方便。
B. 将phonegap作为插件支持。如phonegap的get started所述,仍然是利用Xcode开发iOS程序,利用Eclipse开发Android程序,phonegap只是作为开发project的第三方插件,因为这些project本身也是支持一些HTML和JAVASCRIPT的。开发时,利用HTML5+ CSS3 + JAVASCRIPT编写业务逻辑,并通过phonegap封装过的系统JS接口,调用GPS定位、重力感应等服务。个人估计,在不同移动OS间迁移这些project,可以省去90%的代码量。
C. 高端应用,比如3D游戏、多媒体、动画应用。不建议使用phonegap,实际上,所有的跨平台技术都会带来这样那样的问题,虽然理论上也可以开发一些高端应用,但其表现力跟native app是完全无法相提并论的。
Phonegap的最大缺点,运行速度慢,UI反应延时。在HTC G3 528MHz cpu下测试,一个简单的Form提交,速度让人无法接受。
2.2 MonoTouch
兼容性:★★☆☆☆ 标准化:★★★★☆ 性能:★★★★☆
Mono项目由Novell公司主持,致力于创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具,包括C #编译器和CL执行平台。与微软的.Net不同,Mono项目不仅可以运行于Windows系统内,还可以运行于Linux,FreeBSD,Unix,Mac OS X和Solaris。
MonoTouch是mono的第一个商业版本,是收费软件。MonoTouch最初设计时并没有考虑到跨平台,而是仅仅为iPhone设计的,目前MonoTouch已经更新到4.0版本,而后推出的MonoTouch for Android刚刚发布1.0版本。
包含在MonoTouch中的主要组件是:
l MonoTouch.dll,访问iPhone原生API的C#互操作程序集(基础类、Quartz、CoreAnimation、CoreLocation、MapKit、Addressbook、AudioToolbox、AVFoundation、StoreKit和OpenGL/OpenAL)。
l 命令行SDK,用来编译C#代码和其他CIL语言代码,让它们可运行于iPhone模拟器或iPhone/iPodTouch设备中。
l Mono运行时的商业许可(让你的代码可以使用Mono运行时的静态连接引擎)。
l MonoDevelop插件,让iPhone开发更加简单,并集成了Interface Builder以方便创建GUI应用程序。
从上我们可以看出:
A. MonoTouch采用C#作为主要编程语言,通过运行时SDK保证其运行在不同平台上。类似JAVA JRE。
B. MonoTouch提供一个适配器层,使得开发人员能在程序中使用所有的标准iPhone控件。另外还提供一些原生iPhone API的包装函数库,如访问位置(Location,GPS)、加速计、地址簿等的函数。
C. 开发方式:大部分非UI方面的.NET 3.5功能依旧可用;而UI则需要使用苹果的Interface Builder(界面创建器,IB)应用程序来创建。程序员还是必须使用Mac来进行开发。
D. MonoTouch开发的程序会体积稍大,因为集成了运行时SDK,大约大5M,压缩后3M。
MonoTouch for Android暂未研究,原理应该类似。
2.3 Titanium
兼容性:★★★★☆ 标准化:★★★★★ 性能:★★★☆☆
Titanium的原理和phonegap类似,都是利用JAVASCRIPT封装接口访问移动OS底层API,比如GPS定位、重力感应、短信等,以web app的形式开发业务逻辑,并通过WebView control作为运行时环境,使其作为native app部署到不同移动OS上。
Titanium和phonegap的不同之处主要有以下几点:
A. UI控件。Phonegap没有提供丰富的UI控件,如果要开发效果华丽的组件及特效,需要额外的web框架支持,比如sencha touch、jQuery mobile等。而Titanium本身就提供了一些UI API,使得直接用Titanium编写的程序也具有一定美化效果。
B. 跨平台。上文提到,Phonegap支持六种主流移动OS,而Titanium目前只支持iOS和Android。
C. 性能。暂未测试,但是Phonegap + sencha touch效果实在太差,Titanium应该会好一点。
2.4 Rhodes
to be continued...
相关推荐
混合移动APP跨平台混合开发综述 混合移动APP跨平台混合开发综述.pdf文章总结了当前混合移动APP跨平台混合开发的概况,介绍了传统移动APP开发的缺陷,以及混合开发技术的原理和模式。该文研究了Cordova框架下的APP...
另外,Unity 3D引擎是一个强大的跨平台开发工具,尤其适合创建复杂的3D AR场景。 尽管目前AR技术在Android上的应用比例相对较低,主要是因为其计算需求高,实现复杂。但随着硬件性能的持续提升和软件优化,这一状况...
### 云计算综述与移动云计算的应用研究 #### 一、云计算概述 云计算作为一种新兴的信息通信技术(ICT)模式,自2008年以来受到了广泛关注。本文通过对云计算发展概况的介绍,探讨了其基本概念和“端”—“管”—...
Android的最大特点是开放性和免费性,这使得开发者能够更容易地参与到应用开发中来。此外,Android对3G网络的良好支持也使其在网络应用方面具有明显优势。 #### 三、Android应用系统分类 目前市场上的Android应用...
### BlackBerry MDS Studio技术综述 #### 一、概述 BlackBerry MDS Studio是一款由Research In Motion(RIM)公司研发的专业开发工具,主要用于构建基于BlackBerry平台的企业级应用程序。该版本为V4.1,提供了更为...
随着云计算、移动计算的兴起以及大数据的广泛运用,传统开发方式的不足也日益显现,如无法跨平台使用、开发难度大、性能较低、难以利用云计算资源等问题。 在新的技术背景下,ArcGIS的二次开发方向正逐步转向具有...
例如,OpenCL作为一种跨平台的并行计算标准,被广泛应用于移动设备,使得开发者能够利用GPU进行高性能计算,无论是服务端、桌面系统还是手机设备,都能实现代码的高效编写。 OpenCL提供了统一的编程环境,允许软件...
虽然随着技术的进步,其他编程语言和技术框架也在不断涌现,但Java凭借其成熟的技术体系、丰富的社区资源以及强大的跨平台能力,仍然在移动游戏开发中占据一席之地。未来,随着技术的不断发展,Java在移动游戏开发...
### 云虚拟化平台可信证明技术研究综述 #### 一、引言 近年来,随着互联网的迅猛发展和数据量的急剧增加,云计算以其高效、低成本的特点在全球范围内迅速普及。各大科技巨头,如Amazon、Google、阿里巴巴、华为等...
然而,本文选择使用WebApp技术,它能够在各种移动设备的浏览器上运行,只需要一次开发,就能通过HTML、JavaScript和Python等技术实现跨平台兼容,降低了整体的开发成本,并提高了运行效率。 本文的研究内容主要包括...
HTML5技术的发展为跨平台移动应用开发提供了一条更加高效的实现路径。随着HTML5技术的成熟,业界对于跨平台移动开发框架的关注度也日益增加。国内外学者提出了多种不同的开发框架,这些框架极大地提高了开发效率。 ...
在开发平台上,移动GIS通常需要跨平台支持,例如苹果的iOS、谷歌的Android和微软的Windows Phone。开发者使用Xcode、Eclipse、VS2012等工具,结合ObjectC、Java、SilverLight等语言进行开发。这些平台都提供了类似的...
### 计算机取证技术综述 #### 一、计算机取证背景与概念 随着信息技术的飞速发展,计算机与互联网已经深深地融入到了社会生活的各个方面,包括政治、经济、文化和日常生活中。这一变化不仅极大地促进了信息的传播...
3. **Firebase Performance Monitoring**:Google提供的跨平台解决方案,监测App性能并提供数据分析。 4. **Systrace**:用于分析Android系统的系统级性能,揭示App与操作系统交互的细节。 5. **Battery Historian**...
4.2 协同治理:物联网技术将促进跨部门、跨地域的环境数据共享,推动协同环保治理。 4.3 绿色低碳:环保物联网将助力绿色能源的开发和利用,促进社会的低碳转型。 4.4 公众参与:通过移动应用等渠道,公众可以实时...
最后,这部分可能涵盖跨平台开发、混合应用(如React Native或Flutter)、移动支付集成、游戏开发等更广泛的Android应用开发实践。 通过深入阅读和理解这些文献,开发者可以全面掌握Android开发的核心概念和技术,...
1. **H5微信开发**:HTML5是新一代的网页标准,提供了许多增强用户体验的新特性,如离线存储、多媒体支持、地理定位等,使其成为微信小程序和轻应用开发的首选技术。微信开发通常涉及到微信开发者工具的使用,通过...
9. Unity3D:Unity3D是一个跨平台的游戏引擎,支持2D和3D游戏的开发,广泛应用于独立游戏开发和一些商业游戏的开发中。 10. 3D和2D:3D指三维空间,用于描述具有宽度、高度和深度的对象和环境;2D指二维空间,通常...
【空天通信网络关键技术综述】 随着信息化社会的飞速发展,无线通信体系正在经历深刻的变革,以适应不断提高的“4A”(Anytime、Anywhere、Anyone、Anything)通信需求。这种需求导致业务数据量呈指数级增长,要求...