从Windows的角度看Mac OS X上的软件开发

从Windows的角度看Mac OS X上的软件开发,第1张

Windows及Mac OS X在 *** 作系统架构、开发环境、API、图形环境等环节上的相近处与不同的地方,也简单提出了跨平台应用程序开发的两种策略。事实上在两种平台上开发所需要了解的概念跟技能没有太大的不同,两种平台在性能上的差异也不大。大体说来,Windows和Mac OS X都是为桌面应用环境、图形用户接口(GUI)而设计的 *** 作系统。虽然不同平台细节各有特色,但两者相近的抽象概念,其实远远多于相左之处。本文试图指出方向上明显的异同所在,而非详细列举各种细项差别。最后,我也将简短分享自己在开发跨平台软件时的一些技巧和心得。

系统架构与开发环境的差异

用最简单的话来说,Mac OS X与Windows在架构与开发环境上最大的不同点在于:OS X是UNIX也不是UNIX;OS X主要开发工具Xcode使用GCC作为编译程序,与其他种类的UNIX相同;不过OS X也有独树一格的"bundle"软件包装格式这样的东西,成为它与其他 *** 作系统不同之处。

Windows和OS X都属于现代的 *** 作系统,所以Windows在 *** 作系统层级所提供的功能──执行文件与链接库加载、多任务与多线程、内存管理──在OS X上都找得到对等的API和作法。不过,相较于Windows在微软独力开发下,架构和API都维持着相对的一贯性(另一方面,也背负着各种历史遗迹和向下相容的包袱),Mac OS X则是底层源自NeXTSTEP的Mach微核心(现在称为XNU),而应用层饥镇(用准确的UNIX术语来说叫userland)来自FreeBSD 4。这件事情相当重要:OS X透过这样的`架构,才拥有和一般Linux/FreeBSD相似的UNIX应用环境。有相当多Mac软件开发者喜欢在UNIX shell下工作,使用各种UNIX工具。在Windows上,必须加装Cygwin之类的环境才能办到。

Apple几年前有则广告是「把其他牌子的UNIX送进/dev/null里」(用过UNIX的朋友应该不难体会其中的吹嘘意涵)。平心而论,OS X受益自UNIX环境之处不少。尤其,Apple使用了大量的open source工具。举例来说,Apple不像微软,没有自己的C语言编译工具,Apple用的是UNIX业界的标准──open source的GCC(其中当然有不少OS X的扩展功能就是)。虽然Apple有自己的开发环境Xcode,但是底层采用GCC这件事对开发者来说是相当重要的。同时,Apple的C/C++链接库用的也是GCC标准的stdc/stdc++。了解这个差异,在遇到与Microsoft C/C++ compiler不同的地方时,就更容易能找到解答的资源(这类型问题往往不限于OS X,其他UNIX平台也会发现)。

但是Mac OS X并不完全是UNIX。贺前它的GUI环境(Aqua)就完全不是一般Linux/FreeBSD所使用的X11。而在UNIX层之下的微核心也和其他UNIX不同。接下来这一点很重要:OS X虽然有和Windows .EXE和.DLL相对应的文件(OS X跟其他UNIX一样,可执行文件一般不加扩展名,UNIX系的动态加载链接库则冠以.dylib),但更重要的架构差异是bundle。

Bundle概念承袭自NeXTSTEP。简单来说,就是由 *** 作系统提供一种类似对象封装的文件包裹。OS X上最常见的bundle要属.app结尾的应用程序了。虽然.app外观上是个文件,在UNIX shell下看就能发现它其实是个目录,内含各种metadata(通常至少会有一个名为Info.plist的数据文件)、可执行文件、动态链接模块、各种资源等。除了.app外,OS X的各种框架档(以.framework结尾,是一种同时包含头文件及链接库的包装)、应用程序的外挂模块(通常以.bundle结尾)等等,都是以bundle形式呈现的。了解这个差异,才能了解为什么OS X上很少有程序需烂拍粗要额外的安装程序,也鲜少听说有所谓的"DLL hell"(因共享链接库版本不兼容造成的困扰)。

多的IT经理停滞了他们对系统的更新的需求,他们希望在自己的PC升级上配合他们的Windows 7部署。"

一旦Windows 7开始了面向公众的发布,使IT店铺部署Windows XP的比率毫无疑问将出现下降。在其发布的18个月中,或者说在第一个Windows 7版本服务包的发布之后,"OEM许可证与每台PC的绑定将不再进行面向Windows XP的降级。"这就是说,基本上,在企业或SMB(中小型企业)内部署的XP将需要在未使用任何属于Windows XP的批量许可证或购买XP的批量许可证复制从而使用XP。这增加了一个额外的步骤,面向采购过程的IT管理人员可能不愿意参加。

对于Windows XP的支持也将结束,这对那些想继续使用旧版 *** 作系统的IT部门来说增加了不小的复杂性。对Windows XP SP 2、SP 3进行扩展支持的服务将于2014年4月结束,在该日期之后将不再有任何面向XP的更新或补丁。

mac自带apache,在控制台中(Terminal)输入apachectl start,然后在浏览器中输仔竖入127.0.0.1,如果出现It Works!则说厅好明成功啦!

前端开发建议使用Dreamweaver / Webstorm,然后apache网页服务工具的根目录是在/Library/WebServer/扮戚铅Documents下的,纯手打,求采纳o(^▽^)o

C或C++语言,因为mac系统是基于unix的内核构建的,而unix基本用c语言

在拍谈mac系统下比较好的c/c++的IDE是Xcode(行贺早使用gcc、g++编译器),在你的苹果系统盘里可以找到,在苹Mac OS包括iPhone OS使用的是Objective C,可以看作是C和Smalltalk的结晶,Smalltalk是面向对象语言的鼻祖,档雀OC语言非常灵活而且强大,配合苹果提供的Cocoa框架可以大大简化开发成本,降低开发难度。

也支持C/C++,如果你不是C程序员,或者一点基础都没有,Objective C更适合你,苹果官方编程语言,但可参考的中文资料不多果官网也能下载


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8258757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存