从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向

从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向

ID:32544605

大小:417.80 KB

页数:8页

时间:2019-02-11

从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向_第1页
从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向_第2页
从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向_第3页
从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向_第4页
从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向_第5页
资源描述:

《从windows的角度看macosx上的软件开发兼谈跨平台开发的一些可行方向》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向如果原来从事Windows软件开发,想跨足或转换至MacOSX环境,需要知道那些东西?有什么知识技能可以快速运用在MacOSX环境上的?这两个问题应该是Windows开发者进入MacOSX环境最关心的问题。本文假设读者以往采用微软的开发工具,并以C/C++/C#的任一种组合作为开发语言。大体说来,Windows和MacOSX都是为桌面应用环境、图形用户接口(GUI)而设计的操作系统。虽然不同平台细节各有特色,但两者相近的抽象概念,其实远远多于相左之处。本文试图指出方向

2、上明显的异同所在,而非详细列举各种细项差别。最后,我也将简短分享自己在开发跨平台软件时的一些技巧和心得。系统架构与开发环境的差异用最简单的话来说,MacOSX与Windows在架构与开发环境上最大的不同点在于:OSX是UNIX也不是UNIX;OSX主要开发工具Xcode使用GCC作为编译程序,与其他种类的UNIX相同;不过OSX也有独树一格的"bundle"软件包装格式这样的东西,成为它与其他操作系统不同之处。Windows和OSX都属于现代的操作系统,所以Windows在操作系统层级所提供的功能──执行文件与链接库加载、多任务与多线程、内存

3、管理──在OSX上都找得到对等的API和作法。不过,相较于Windows在微软独力开发下,架构和API都维持着相对的一贯性(另一方面,也背负着各种历史遗迹和向下相容的包袱),MacOSX则是底层源自NeXTSTEP的Mach微核心(现在称为XNU),而应用层(用准确的UNIX术语来说叫userland)来自FreeBSD4。这件事情相当重要:OSX透过这样的架构,才拥有和一般Linux/FreeBSD相似的UNIX应用环境。有相当多Mac软件开发者喜欢在UNIXshell下工作,使用各种UNIX工具。在Windows上,必须加装Cygwin之

4、类的环境才能办到。Apple几年前有则广告是「把其他牌子的UNIX送进/dev/null里」(用过UNIX的朋友应该不难体会其中的吹嘘意涵)。平心而论,OSX受益自UNIX环境之处不少。尤其,Apple使用了大量的opensource工具。举例来说,Apple不像微软,没有自己的C语言编译工具,Apple用的是UNIX业界的标准──opensource的GCC(其中当然有不少OSX的扩展功能就是)。虽然Apple有自己的开发环境Xcode,但是底层采用GCC这件事对开发者来说是相当重要的。同时,Apple的C/C++链接库用的也是GCC标准的

5、stdc/stdc++。了解这个差异,在遇到与MicrosoftC/C++compiler不同的地方时,就更容易能找到解答的资源(这类型问题往往不限于OSX,其他UNIX平台也会发现)。但是MacOSX并不完全是UNIX。它的GUI环境(Aqua)就完全不是一般Linux/FreeBSD所使用的X11。而在UNIX层之下的微核心也和其他UNIX不同。接下来这一点很重要:OSX虽然有和Windows.EXE和.DLL相对应的文件(OSX跟其他UNIX一样,可执行文件一般不加扩展名,UNIX系的动态加载链接库则冠以.dylib),但更重要的架构差

6、异是bundle。Bundle概念承袭自NeXTSTEP。简单来说,就是由操作系统提供一种类似对象封装的文件包裹。OSX上最常见的bundle要属.app结尾的应用程序了。虽然.app外观上是个文件,在UNIXshell下看就能发现它其实是个目录,内含各种metadata(通常至少会有一个名为Info.plist的数据文件)、可执行文件、动态链接模块、各种资源等。除了.app外,OSX的各种框架档(以.framework结尾,是一种同时包含头文件及链接库的包装)、应用程序的外挂模块(通常以.bundle结尾)等等,都是以bundle形式呈现的

7、。了解这个差异,才能了解为什么OSX上很少有程序需要额外的安装程序,也鲜少听说有所谓的"DLLhell"(因共享链接库版本不兼容造成的困扰)。表一:Windows与MacOSX在架构上的对照开发语言与API;Objecitve-C,CoreAPI,Carbon,Cocoa如果使用微软工具来开发Windows软件,就一定会碰到PlatformSDK,MFC或者.Net平台,同时,也相对应到C、C++、C#和其他.Net平台所提供的语言(这种区分并不是绝对的,仅仅是为了方便接下来的模拟所做的简化)。在OSX上,Apple则是鼓励大家尽量采用Obj

8、ective-C作为开发语言,并且熟悉Cocoa。接下来的问题既尴尬又麻烦。很多人会问:我们是否非学Objective-C不可?另外一个常见的问题是:Apple不是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。