您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > WindowsPhone7与Android和iPhone的比较
女包、名牌包、背包:|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.netWindowsPhone7与Android和iPhone的比较来自iOS或者是Android平台的应用程序开发者们应该会对WP7、iOS以及Android之间的相似点和不同点比较感兴趣。因此我们在接下来的小节中将会从它们的体系结构角度来展示三个主要的移动操作系统之间的异同点。操作系统在撰写本书时,iPhone主要经历了4代操作系统[1]。早期iPhone的模块使用了三星公司的处理器,直到iPhone4才使用了苹果公司自己的处理器A4。前四代所有的iPhone都使用的是3.5寸的显示屏。iPhone4拥有512MB内存和16GB/32GB的存储容量。所有的iPhone都装备了GPS、Wi-Fi以及蓝牙连接模块。苹果公司的iOS系统实际上是从MacOSX操作系统中派生出来的。MacOSX是苹果公司为其Mac机(Macintosh)所开发的桌面操作系统。它实际上是一个以UNIX为基础,联合了Mach微内核以及众多来自FreeBSD[2]和NetBSD组件的操作系统。iOS使用了与MacOSX相同的操作系统核心组件,并且苹果公司针对各种移动设备如iPhone、iPodtouch和iPad做了一些特殊的优化,以改进其性能、稳定性和电池使用寿命。iOS的架构包括4层(自下而上):核心操作系统层(coreOSlayer)、核心服务层(coreservicelayer)、媒体层(medialayer)和可轻触层(CocoaTouchlayer)。iOS的应用程序是使用iOS软件开发工具包和Xcode开发环境,并使用扩展C的面向对象编程语言(Objective-C)编写的原生应用程序。Android设备的硬件选择可以更加多样,因为Google并没有定义相应的硬件标准(而微软的WP7定义了一组所需的硬件标准)。总体而言,Android的手机,就像其他手机一样,包括了语音通话、数据通信、相机、GPS(全球定位系统)、Wi-Fi、蓝牙以及一些传感器(如加速度传感器和距离传感器)。在不同的设备上,其屏幕大小也是多种多样的,虽然大部分的情况下都使用的是3.5英寸和4英寸的屏幕。Android设备软件的核心实际上是Linux内核。驱动以及硬件抽象层模块全都是基于Linux的。在Linux内核之上是Dalvik虚拟机以及它的运行环境,此外还包括一些原生库和服务。Dalvik是一种特殊的Java虚拟机,它针对Java应用程序在移动设备上的运行做了特殊的优化。Android操作系统最主要的一个部分是其应用程序框架,它由Java服务、应用程序编程接口、公共运行库、原生库和原生服务组成。图1-3展示了其中的具体细节(来源:)。女包、名牌包、背包:|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net图1-3Android体系结构在Android上开发应用程序有两种选择:(1)完全运行在Dalvik虚拟机上的Java应用程序;(2)使用JNI(Java本地调用)调用原生库的Java应用程序。你也许会好奇为何Android开发者能够直接调用原生库?其实这主要是从性能上进行考虑的。因为通常原生代码能够提供比Java字节码(或者由Dalvik虚拟机产生的16进制代码)更好的性能。而这对于CPU密集型(CPUIntensive)的代码以及媒体处理代码而言是相当重要的。此外,当开发者打算从别的平台上移植C/C++代码的时候,如果能够将现有代码包装成原生库进行调用,要远比将其移植成Java代码要方便许多。在WP7上,开发者是不允许编写原生代码的,他们只能编写托管代码。此外,WP7上只支持Silverlight和XNA编程接口的一个子集。然而,手机制造商们实际上是有途径可以将一部分的原生代码嵌入WP7的系统中的,并且在他们的应用程序中使用COM(组件对象模型)的互操作。微软提供给手机制造商们的软件开发工具包(SDK)与提供给一般开发者们的软件开发工具包是不同的,所以手机制造商们可以利用一些有限的WindowsCEAPI来开发原生的COMDLL,并且在他们自己的应用程序中使用这些COMDLL。而这些COMDLL实际上可以看做是整个操作系统的一部分。不幸的是,一般的手机开发者们是无法访问到这个特殊的提供给手机制造商们的软件开发工具包的。表1-1列出了这三个主要手机操作系统之间在系统级别的比较。表1-1系统级别女包、名牌包、背包:|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net比较项目iOSAndroidWP7内核MacOSX的Mach内核Linux内核WindowsCE6支持的CPU架构ARMARM、X86ARM内存模型分页,没有基于磁盘的备份存储分页,可选的SD卡交换区分页,没有交换区操作系统底层内存管理有有有管理运行时无DalvikJava运行时.NET框架公共语言运行时(CLR)应用程序沙盒有有有跨应用程序通信有限的,使用自定义的URLIntent、广播接收器、内容提供器和服务启动器和选择器应用程序框架深入理解这三个主要的手机操作系统之间在应用程序框架上的不同,对于开发跨平台的应用程序是至关重要的。iOS的应用程序是构建在可轻触层(CocoaTouchlayer)之上的,该层包含了一组扩展C的面向对象编程框架,如UIKit(用户界面工具包)、GameKit(游戏工具包)、MapKit(地图工具包)和iAd等。可轻触层为应用程序和窗口提供了一组丰富的用户界面对象和事件处理机制,此外,媒体层和核心服务层也提供了一些媒体服务及核心系统服务。虽然开发者们能够直接调用媒体层和核心层所提供的一些服务,以便为他们的特定服务提供更加细粒度的控制,但是通常情况下,开发者们只须使用由可轻触层所提供的各项功能和方法即可。类似的,Android的Java应用程序是构建在Android框架上的,这个框架由一组Java程序包(Javapackages)组成,包括ActivityManager(活动管理器)、ViewSystem(视图系统)、WindowsManager(窗口管理器)、TelephonyManager(电话管理器)、ContentProvider(内容提供器)、NotificationManager(通知管理器)等。Android的用户界面是在一个布局组合里,由一组视图组件构成。这个框架下的Java程序包是访问那些基本系统功能的接口,它们本身又是依赖于更加底层的原生库来执行这些最基本的任务。开发者们也能够直接将一些原生库嵌入到他们自己的Java程序中。不过,在Java代码和这些原生代码之间的交互,需要在JNI框架内完成。Android系统还介绍了一些独特的编程概念,如Activity(活动)和Intents(意图),这使得扩展系统程序和服务更加容易。WP7的应用程序框架是基于.NET的,并且你无法使用原生代码(在本章的“局限性和发展路线图”小节中已经讨论过)。Silverlight和XNA都提供了一组.NET框架下的接口来访问那些基本的操作系统功能。此外,应用程序还可以通过标准的WindowsPhone应用程序编程接口与媒体、本地和远程数据、传感器、位置信息以及手机相关信息进行交互。每个程序都会在一个独立的.NET沙盒中独立运行。这个沙盒的使用意味着在WP7上不允许在各个程序之间进行通信,也意味着如果开发者只能通过WebService(web服务)作为程序之间通信的桥梁。表1-2展示了这三个平台在应用程序框架上的一些异同点。表1-2应用程序框架比较女包、名牌包、背包:|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net项目iOSAndroidWP7可用的应用程序框架CocoaTouchAndroid框架Silverlight和XNA编程语言Objective-C(扩展C的面向对象编程语言)Java.NET语言(C#和VisualBasic.NET)原生API访问允许允许,通过JNI使用NDK不允许SDK(软件开发工具包)MacOSX上的iOSSDKWindows、Linux和MacOSX上的AndroidSDKWindows7上的WindowsPhoneSDK集成开发环境XcodeEclipse(使用ADT插件)VisualStudio2010或VisualStudio2010Express用户界面定义NIB资源文件Widgets(小工具)和布局XAML用户事件机制Delegate(委托)在View(视图)类事件里的事件监听器在CLR(公共语言运行时)里的事件处理函数一些开发者们也许希望能够使用C#和VisualStudio等工具来开发Android和iOS上的移动应用程序。这样能使跨平台的设计更加容易,并且能在这些平台上重复使用已有的代码。为此,已经有一些相关的工具能够达到这个目的,如Mono-Android()和Monotouch()。应用程序上架过程苹果公司的在线软件商店AppStore是第一个移动应用程序商店,并且在本书撰写之时拥有的软件数量最多。然而,许多移动应用程序开发者质疑苹果公司的应用程序审核流程,因为苹果公司强加了许许多多的限制条件,并且因常常莫名其妙地拒绝一些应用程序而闻名。开发者们提交的每一个iOS的应用程序都需要通过一组政策验证,包括功能性政策、内容政策和法律政策。通常,这一过程需要数天甚至几个星期的时间。Android的应用程序商店的成长也非常迅速,这是由于在2009年至2010年期间,Android设备出货量急剧增长。例如,在2010年10月,Google宣布每天有多达30万台的Android设备激活()。Android的应用程序商店有一些强制性的内容政策,例如,不允许攻击性语言、裸体、性相关资源以及侵权行为。与苹果公司的应用程序商店相比,Android的应用程序商店显得更加开放——它不会对开发者所提交的应用程序进行任何验证。基本上来说,开发者只须简单地注册一个账户,上传一个应用程序,并且简单地对其做一些描述,就能使这个应用程序出现在Android的应用程序商店中了。Google会有一个专门的团队来处理那些关于某些程序违反内容政策的报告,并且如果需要的话,这个团队会将相应的应用程序从Android应用程序商店中移除。苹果公司iOS的内容管理政策相关页面:developer.apple.com/appstore/guidelines.htmlGoogleAndroid平台的内容管理政策相关页面:微软公司最早是从WindowsMobile6.5开始提供移动应用程序商店的。但是这样的努力并没有太多的成效,一个主要原因是WindowsMobile操作系统开始逐步丧失市场份额。而作为新的WindowsPhone项目发布的一个组成部分,微软重新设计了WindowsPhone应用程序商店,以期望能够与另外两个竞争对手一决高下。而且,微软似乎也从苹果公司的应用程序商店以及Android的应用程序商店里汲取了不少经验,因而制定了一整套相当全面的应用程序验证流程,以检测每一个提交的应用程序是否违反了政策上和技术上的一些要求,以保证女包、名牌包、背包:|冬装新款、流行冬装、今年流行秋冬装:dongzhuang.qqxk.net每个应用程序的稳
本文标题:WindowsPhone7与Android和iPhone的比较
链接地址:https://www.777doc.com/doc-2858984 .html