Macintosh 的新的开发人员
有经验的 Macintosh 开发人员, Mac OS X 以前
使用非苹果集成开发环境的 Macintosh 开发人员
工具开发人员
插件开发人员
驱动和系统软件开发人员
纯 Java 开发人员
方案提供商
QuickTime 开发人员
如果您初识 Mac OS X 并且有一个图形用户界面的应用程序要移植到 Mac OS X ,从下面的部分开始:
如果您有一个 Java 应用程序并且您想要确保它在 Mac OS X 上运行效果最佳,请参考“纯 Java 开发人员”。
如果您一切从头开始,请先参考“没有现有应用程序”。
从头开始编写一个新的 Mac OS X 图形用户界面应用程序的最快的方法就是使用 Cocoa 应用程序环境。 Cocoa 框架已经为您完成了很多的工作,提供了许多用户界面还有很多底层的功能,例如 I/O 和应用程序间的通讯。如果您已经使用 Cocoa 开发了一个应用程序,维护工作就会很容易并且代码很容易重复使用,这样就保证了您的程序的升级要比原始的开发还要快。然而,如果您打算把您的程序移植到其它的平台,您可能想要全部或者部分使用面向进程的调用而不是使用 Cocoa 框架。在这种情况下,您应该使用 Carbon 应用程序环境。
用于开发 Cocoa 和 Carbon 的主要工具是 Xcode 应用程序和 Interface Builder ;要得到这些工具的介绍,请参考第三章,“苹果集成开发环境”。对于调试和优化您的应用程序,源代码控制等任务有许多其它非常有用的工具。要获得更多信息请参考第四章“开发过程”。
如果您想要编写一个纯 Java 应用程序,请参考“纯 Java 开发人员”。
对于那些没有图形用户界面的程序,请从以下的章节开始:
由于它与 BSD 的紧密的关系,绝大多数 UNIX 应用程序的后端(也就是无图形用户界面部分)能够在不修改或者很少改动的情况下运行在 Mac OS X 里。对于一个设计在命令行里运行的 UNIX 工具或者实用程序,您可能不需要多更多的开发工作。然而,这样的一个应用程序只是对其他 UNIX 开发人员和少数的高端用户有用;绝大多数 Mac OS X 用户更喜欢与 Finder 打交道而不知道怎么使用终端( Terminal )应用程序。
如果您已经使用 X Window 系统( X11R6 )界面开发了您的应用程序,您可能只要做少量的改动就可以在 Mac OS X 里编译您的应用程序。苹果提供了一个 X Window 系统的实现(http://www.apple.com.cn/macosx/x11/ )。这个解决方案对于那些习惯于 X Window 系统并且对应用程序没有其它期望的有经验的 UNIX 用户来说是够用了。
但是,如果您希望您的应用程序对 Mac OS X 大量的主流的用户有吸引力,您必须提供一个标准的 Mac OS X 用户界面。一个 Mac OS X 用户决不应该常常使用命令行在一个具有图形用户界面的应用程序里去执行任何任务。不仅如此, Mac OS X 用户期望他们的应用程序遵循用户体验文档里的“ Aqua 人机界面准则”里推行的标准。苹果和第三方开发商的表现良好的应用程序赋予 Mac OS X 世界上最好用的界面的荣誉,并且如果一个应用程序不遵循这些准则会被视为不友好和难以使用。
您可以使用 Cocoa 应用程序环境和 Interface Builder 应用程序快速完成一个标准的 Mac OS X 图形用户界面作为您的应用程序的前端(请参考“ Cocoa ”获得 Cocoa 的一个简要的介绍)。 Interface Builder 和所有其它您需要的用于 Cocoa 开发的工具都可以在 Xcode 里以及 ADC 网站上找到。要马上开始,请参考第三章,“苹果集成开发环境”。要了解更多关于把 UNIX 应用程序移植到 Mac OS X 的信息,请参考移植文档里的“ UNIX 移植指南”。
您还可以使用 AppleScript Studio 给一个 UNIX 命令行工具添加一个 Aqua 图形用户界面。例如,请参考 Developer/Examples/AppleScript Studio/Archive Maker/Application.applescript 。要获得更多关于 AppleScript Studio 的信息请参考“方案提供商”。
尽管 Microsoft Windows 和 Mac OS X 共享许多基本的图形用户界面范例-例如应用程序窗口,对话框,控件(按钮,进度条,还有其它类似),以及菜单条-但是在细节以及两个用户界面实现的方式上有着很大的区别。 Mac OS X 用户期望他们的应用程序之间尽量保持一致和连贯,如果一个应用程序没有遵循 Mac OS X 用户界面( Aqua )标准他们会认为这个应用程序质量低等而且难以使用。要了解更多关于 Microsoft Windows 和 Mac OS X 用户界面之间的区别请参考: http://developer.apple.com/ue/switch/windows.html 。
创建遵循 Aqua 标准的图形用户界面最容易的方法就是使用 Interface Builder 。要了解 Interface Builder 请参考第三章“苹果集成开发环境”。
如果您的 Microsoft Windows 应用程序具有一些特定的特征,把它转变成一个 Mac OS X 应用程序应该非常直接。这些特征有:
在这种情况下,您可以把 Windows API 的调用替换为 Carbon API 的调用。除此之外,如果您的图形用户界面代码与您的其它代码是分开的,您可以使用 Cocoa 来为您的应用程序创建一个标准的 Aqua 图形用户界面。您可以使用 Xcode 应用程序来编写您的面向进程的代码以及使用 Interface Builder 来创建您的图形用户界面。要了解 Xcode 应用程序和 Interface Builder 请参考第三章“苹果集成开发环境”。还有许多其它工具对您调试和优化您的应用程序,源代码控制等很有帮助。要获得更多信息请参考第四章“开发过程”。
要获得转换一个面向进程的视窗应用程序为一个 Carbon 应用程序的建议和参考,请参考“从视窗 Win32 API 移植到 Mac OS X ”( http://developer.apple.com/macosx/win32porting )。要得到 Mac OS X 标准图形用户界面的详细信息,请参考用户体验文档里的“ Aqua 人机界面指南”。
如果您有一个用 Mac OS 进程 API 编写的 Mac OS 9 或者更早的应用程序,您可以在必要时把不再支持的函数替换为 Carbon 函数然后使用 Xcode 编译和链接您的应用程序。如果您的图形用户界面与其它代码很好的分开,您可以使用 Interface Builder 创建您的用户界面。
所有您需要的用于 Carbon 开发的工具都可以在 Xcode 里和 ADC 网站上找到。要获得转换一个 Mac OS 8 或者 Mac OS 9 的应用程序到 Mac OS X 的信息,请参考“ Carbon 移植指南”以及 ADC 网站上移植文档里的其它文档。要了解更多有关 Xcode 应用程序和 Interface Builder 的信息,请参考第三章“苹果集成开发环境”。
请注意您不能使用 Xcode 应用程序去编译运行在 Mac OS 9 或者更早的系统里的应用程序。如果您需要编译和调试运行在 Mac OS 9 里的代码,您可以使用 MPW 和 MacsBug ,可以在这里找到:http://developer.apple.com/macos/macos9.html 。
如果您在使用 Code Warrior 或者其它非苹果集成开发环境为 Mac OS X 进行开发,您应该考虑转换到 Xcode 。 Xcode 是唯一的一套开发工具保证跟随 Mac OS 以及 Cocoa 和 Carbon API 变化的脚步。 Xcode 应用程序用户界面提供了 Code Warrior 中绝大多数的功能,而且还有一些是 Code Warrior 所没有的功能。 Xcode 应用程序的性能与 Code Warrior 不相上下。
要得到转换 Code Warrior 工程到 Xcode 的提示,请参考编程主题“把 CodeWarrior 工程迁移到 Xcode ”。
名词“工具” 用于表达许多不同的东西,但是在本篇文档中的用法,一个工具就是软件开发人员使用的任何可以帮助完成他们的工程的程序。一个工具可以是一个应用程序(也就是具有图形用户界面的程序),在这种情况下工具的开发就象任何其它应用程序一样,或者一个命令行工具。除了命令行工具不具有图形用户界面以外,它的开发方式与一个应用程序是相似的。
插件是开发人员和用户可以添加到一个应用程序来扩展它的能力的代码和数据模块。由于 Mac OS X 操作系统可以在需要的时候动态装载代码,在开发过程中把插件代码链接到主应用程序就不是必要的了;用户只有把插件放到正确的目录里,应用程序才能够找到插件并且在需要的时候加载它们。
如果您想要您的应用程序使用插件,您必须设计一个外部 API 提供给插件编写人员使用。如果您在使用一个面对对象编程语言,您可以定义一个抽象基础类或者一个方法的列表(在 Objective-C 里被称做是一个协议)。在一个面向进程的语言里,例如 C ,您可以定义一套插件编写人员必须完成的函数,加上一个对于不同类型消息注册回调函数的一个机制。在 Carbon 应用程序里,您可以使用核心基础 CFPlugIn 模糊类型来定义一个面对对象的架构使得它可以同时与 C 和 C++ 插件工作。要获得更多关于设计插件的信息,请参考“ Cocoa 资源管理文档”里的“动态装载代码”编程主题。
从开发工具角度来看,一个 Mac OS X 插件是一个可装载的包类型。要获得更多关于包的信息,请参考 Mac OS X 文档里的“系统概述”。
有几个标准的苹果应用程序您可以为它们编写插件。要了解为苹果的程序编写插件,请参考“标准苹果插件工程”。
Mac OS X 提供了一个机制允许动态装载代码到内核,在这个过程中不需要重新编译或者重新链接。由于任何其它修改内核的方法都需要您去创建,分发,和维护您自定义版本的 Mac OS X ,如果您想要把代码装载到内核里您需要使用一个 Mac OS X 内核扩展( KEXT )。
这里特别要指出添加代码到内核里是非常危险的。由于没有一个保护系统不受错误代码影响的机制(保护内存,抢占式多任务,虚拟内存管理)能够对内核里执行的代码起作用,您可能会由于错误内核代码引起内核混乱(也就是引起操作系统崩溃),还可能会导致硬件错误操作,数据丢失,以及损坏其它应用程序。绝大多数您需要实现的功能,包括许多设备驱动程序,可以在操作系统更高层里执行,而不是在内核里;请参考“设备驱动 & I/O 工具箱文档”里的《从应用程序访问硬件》。要了解更多有关内核架构和内核代码通常特性以及特别是 KEXT ,请参考“ Darwin & 核心操作系统文档”里的《内核编程》。
如果您想要编写一个设备驱动,您应该使用 I/O 工具箱。 I/O 工具箱是一个系统框架,库,工具,和其它用于在 Mac OS X 里创建设备驱动的资源的集合。它基于一个面对对象的编程模型,是 C++ 的一个限制模式实现。要了解更多关于 I/O 工具箱的信息,请参考“设备驱动 & I/O 工具箱文档”里的“ I/O 工具箱基础”。
要了解关于内核环境的一般信息和编写在内核里执行的代码,请访问 ADC 网站上的“ Darwin 开发人员文档”。
您可以使用 Xcode 开发 KEXT 和 I/O 工具箱驱动。尽管您可以使用 Xcode 应用程序编写源代码,并不是所有的用于调试和优化应用程序的工具可是用在在内核里执行的代码上。要了解 Xcode 应用程序请参考第三章“苹果集成开发环境”。对于用于内核级别代码的其它工具,请参考“内核扩展”和“ I/O 工具箱驱动”。
纯 Java 指那些编写运行在 Java 平台独立的环境里的程序,包括具有图形用户界面的应用程序和设计不使用用户界面的小程序。
绝大多数标准 Java 开发工具箱( JDK )命令行工具都做为标准组成部分包含在 Mac OS X 里了。除此之外, Xcode 还提供了很多其它 Java 特定工具和一般目的命令行工具。就象其它 Mac OS X 程序环境一样,您可以使用 Xcode 应用程序编写您的 Java 代码(请参考 Java 文档里的“ Project Builder for Java ”)。 Jar Bundler 是一个用于把已编译的 Java 应用程序包裹做为 Mac OS X 应用程序运行的一个工具。
如果您想要开发一个 web 服务器应用程序,您可以使用 WebObjects 加速这个过程。 WebObjects 5.2 包含了一个全套的工具和框架用于快速开发基于标准的 web 服务和 Java 服务器应用程序。在其它的工具里, WebObjects 包含了 EOModeler 应用程序-它可以反向工程现有的数据库或者被用来设计新数据库的略图-和创建企业级 web 服务, HTML ,和 Java 应用程序的助理程序。您使用 Xcode 应用程序编译您的 web 应用程序并且能够使用 Interface Builder 来添加一个 Aqua 界面。除了 Xcode 应用程序和 Interface Builder 以外, WebObjects 工具和框架是一个独立的产品,您可以从苹果购买它。请参考 http://www.apple.com.cn/webobjects和 ADC 网站上的 WebObjects 文档获得更多信息。
要了解 Xcode 应用程序和 Interface Builder 请参考第三章“苹果集成开发环境”。要了解其它 Java 工具,请参考“ Java ”。要察看完整的 Mac OS X Java 文档,请访问 ADC 网站的 Java 文档。
使用 AppleScript , Perl ,和 shell 脚本,您可以自动化涉及及格应用程序的工作流。 AppleScript 提供了直接控制许多 Mac OS X 应用程序和 Mac OS 本身组成部分的能力。要使得一个应用程序可脚本控制,应用程序的编写者一定要给应用程序 AppleScript 支持。好消息是,许多开发人员已经完成这个工作,这些应用程序包括绝大多数常用的商用软件。要了解更多关于 AppleScript 的信息,请问http://www.apple.com/applescript 和 ADC 网站的 AppleScript 文档 。
您可以使用 Script Editor (位于 /Application/AppleSctipt 目录里)编译和执行标准脚本,这些脚本具有有限的用户界面能力。您可以使用 AppleScript Studio 来创建具有复杂的支持 Aqua 人机界面准则的用户界面的 AppleScript 应用程序。 AppleScript Studio 是一个技术的结合,包括 AppleScript , Cocoa , Xcode 应用程序,和 Interface Builder 。要了解更多有关 AppleSctipt Studio 的信息,请访问http://www.apple.com/applescript/studio/ 。 AppleSctipt Studio 的文档在 ADC 网站上的 AppleScript 文档里。
Perl 是多个平台上的标准脚本语言。它是开放源代码工程并且是免费的。它可以用来执行程序或者取得一个程序的输出,处理数据,然后把处理的数据作为另外一个程序的输入。 Perl 可以被用于进程间通讯,用于阅读互联网上的信息,以及用于编写 CGI 脚本。 Perl 程序可以执行用 C 和其它语言编写的模块,把它们作为 Perl 的子函数来对待。 Perl 包含在 Mac OS X 的发布版本里。
除了 AppleScript 和 Perl ,您可以编写 Shell 脚本运行在终端应用程序里。一个 Shell 脚本就是一个 shell 命令的序列从一个文件里读入而不是手动输入。这样您就可以编写脚本完成您可以在终端里完成的任何事情;也就是说,几乎所有 Mac OS X 可以做到的事情,包括一些 Finder 里没有的功能。您可以在 AppleScript 里执行 shell 脚本,也可以在 shell 脚本里执行 AppleScript 脚本。您可以在一个 Carbon 或者 Cocoa 应用程序里执行 AppleScript 脚本和命令行工具。
您通过创建一个 Xcode 工程来编写一个 AppleScript Studio 应用程序。要了解 Xcode 应用程序请参考第三章“苹果集成开发环境”。还有一些用于 Perl , AppleScript ,和终端脚本的工具。要了解用于脚本的其它工具,请参考“脚本”。
QuickTime 是一项用于操作和存储很多不同的媒体资源包括视频,声音,动画,图像,文本,音乐,以及甚至操作,存储,和显示 360 度虚拟现实的技术。它还允许您流媒体播放时时数字视频或者存储的数据流。 QuickTime 支持 Mac OS X 和 Microsoft Windows 。
使用 Cocoa 或者 Carbon 和标准应用程序开发工具(主要是 Xcode 应用程序)在一个应用程序里增加 QuickTime 的支持相对比较容易。要了解更多信息,请参考苹果开发人员联盟网站上的 QuickTime 资料 http://developer.apple.com/quicktime/index.html 。您还可以编写 QuickTime 组件来扩展 QuickTime 的能力。由于 QuickTime API 是面向进程的,您应该使用 Carbon 来编写 QuickTime 组件。请参考 ADC 网站上的QuickTime 文档主题了解更多关于组件 API 的信息。
如果您对为 QuickTime 制作内容感兴趣,苹果和第三方的工具将会有助于您。由于这些工具操作数据,而不是源代码,它们已经超出了本篇文档的范围。要获得更多信息,请参考 QuickTime 工具网页http://developer.apple.com/quicktime/quicktimeintro/tools/index.html 。