应用程序环境
一个应用程序环境是由框架、库和服务(和相关的API)来组成的。它为使用这些相关API所开发的程序在运行时的执行,提供了必要的环境支持。应用程序环境依赖于系统软件的所有基础层。
Mac OS X目前有五个应用程序环境:Classic、BSD命令、Carbon、Cocoa和Java。本节将对Carbon、Cocoa和Java进行概述。
Carbon
Carbon是一套源于早期的Mac OS API的编程接口,并已被修改以获得对Mac OS X的支持,尤其是支持Mac OS X的内核环境。Carbon继承了大部分Mac OS已有的管理器和API,特别是继承了全部函数的70%,及典型应用程序所经常使用函数的95%。
由于Carbon API非常庞大和复杂,所以我们无法在这里对它进行充分详尽的描述。但尽管如此,Carbon和它的Mac OS祖辈之间的一些区别还是值得注意的。
内存 为了适应内核环境的某些特性,例如高级虚拟内存和内存保护,许多API,尤其是内存管理器(Memory Manager),都经过了一些改进,限制和取消了API对系统内存或临时内存等区域的使用。举例来说,在Mac OS X中分配的临时内存也被分配在应用程序地址空间中。尽管不再有访问系统堆栈的功能,但新提供的规则被允许分配共享内存和永久内存。另外,Mac OS X中的虚拟内存系统还引入了许多寻址模式方面的变化。
硬件接口 常用于硬件低级访问的Mac OS 9管理器,例如,ADB管理器、设备管理器和以太网驱动程序,没有在Mac OS X中实现。由I/O Kit提供的不同的设备驱动程序架构来协调所有对硬件设备的低级访问。
资源 因为在Mac OS X中没有ROM,所以访问在ROM中的资源的相关功能在Carbon中是不被支持的。资源管理器也对资源映射访问设置了更严格的约束。
必需替换的管理器 表3-1所列的Carbon技术现在已取代了先前的技术,使用新的库是必需的。
必需替换的管理器
以前
现在的对比:
AppleTalk Manager (AppleTalk 管理器)
Open Transport(开放传输)
PPC Toolbox(PPC 工具箱)
Apple events(Apple 事件)
Standard File Package(标准文件包)
Navigation Services(浏览服务)
QuickDraw 3D
OpenGL
Help Manager(帮助管理器)
Carbon Help Manager(Carbon 帮助管理器)
Apple Guide(Apple 手册)
Apple Help(苹果帮助)
Printing Manager(打印管理器)
Carbon Printing Manager(Carbon 打印管理器)
各种驱动管理器
I/O Kit (输入/输出工具箱)
QuickDraw GX
Quartz 和 Apple Type Services for Unicode Imaging
(针对Unicode的Apple字体打印服务)
Vertical Retrace Manager(垂直回描管理器)
Time Manager(时间管理器)
推荐替换的管理器 表2所列的Carbon技术比先前的技术提供了更多的强大功能。推荐使用新的Carbon库,但也可继续使用先前的技术。
推荐替换的管理器
以前
现在的对比
TextEdit
Multilingual Text Engine (多语言文本引擎)
QuickDraw
Quartz
Event Manager(事件管理器)
Carbon Event Manager
(Carbon 事件管理器)
Font Manager(字体管理器)
Apple Type Services for Fonts(Apple字体打印服务)
QuickDraw Text(QuickDraw 文本)
Multilingual Text Engine (多语言文本引擎) 或 Apple Type Services for Unicode Imaging(针对Unicode的Apple字体打印服务)
Resource Manager(资源管理器)
Interface Builder Services(Interface Builder 服务)
Script Manager(语系管理器)
Unicode Utilities(Unicode 工具)
普通变化 Carbon中,多种管理器中的许多功能已经被改变或删除。
·数据结构 为了确保系统数据的完整性以及支持通过抢占线程来访问所有系统服务的功能,Carbon限制了直接对数据结构进行访问。取代了以往通过函数来返回指向那些可被解除引用的数据结构的指针和句柄,现在的Carbon提供了可用于获取和设置字段数据的accessor函数,也包括了能用于创建和解除数据结构的一些函数。
·预定义过程 (Definition procedures) 在Carbon中,视窗管理器、菜单管理器、控制管理器和列表管理器仍然允许用户创建和使用标准的和自定义的预定义过程(WDEF、MDEF、CDEF和LDEF),但您必须确保把它们编译为PowerPC代码。另外,这些管理器为预定义过程的创建与打包提供了新的规则。
·68K代码 Mac OS X不支持68K代码(除了在Classic环境下)。由于这个原因,陷阱管理器(和trap table)、混合模式管理器和Patch管理器在Carbon中都不能使用,或者在很大程度上限制了对它们的使用。基于同样的原因,许多其它功能也从Cabon中被去除了。
Carbon管理器或者由Carbon API所创建的各种守护进程、应用程序和框架都是MacOS X的常用部件。举例来说,在Mac OS X中,控制事件和管理应用程序进程的系统进程是由Carbon管理器来实现的,核心服务层的许多管理器也是基于Carbon的,而且Finder也是一个Carbon应用程序。