一段鲜为人知的故事 - NEXT是OSX的前身? - 2
COCOA 简介
COCOA是OS X上使用的Software Framework. 用Cocoa编写的软件如果要利用系统中已经提供的服务(例如GUI, Networking等等)需要尊循和使用这个框架。
MAC OS X构架于一个层次型的结构,底部是BSD Kernel (Darwin)主要负责System Device, Process, Threading, Networking 和 Memory management, 在这之上是Quartz, OpenGL 和Quicktime负责图形和媒体处理, 而整个GUI 就构建在这个层次之上。为了方便软件的开发,Apple为开发人员提供了四种不同的开发框架(Software Framework)分别是:
Carbon
Carbon 是基于C/C++的开发环境,提供了对旧版Mac OS开发的兼容性。早期MAC OSX 10.0 中的Find就是基于Carbon编写的。大多数商业软件也都是基于Carbon, 可以说直到今天Carbon是OSX上用的最广泛的编程环境
Cocoa
Cocoa 是用Objective C编写的开发环境,它基于NextStep的开发环境。事实上很多Cocoa提供的服务能够被不同的编程语言调用,甚至是。Cocoa本身也使用了部分 Carbon提供的功能。在某种程度上Carbon和Cocoa的关系类似于以前在windows 平台上 Win 32 API和MFC之间的关系。
J2SE
Mac 上也提供了标准的Java 2 标准版的所有功能,事实上苹果上的Java虚拟机的AWT/JFC部分也是基于Carbon的,这也是为什么COCOA Java和标准JAVA之间相互调用会有问题产生的根本原因。两者之间的Even model有很大的差异。不过据说OS X 上新版的jdk1.4采用了COCOA作为AWT和JFC的基础。
POSIX
Posix 是一种基于C语言的编程接口。它UNIX网络编程的标准API。 很多服务器系统包括Apache就是基于Posix. 当然如果要享用Aqua提供的GUI 服务你就不能用它了。J2SE/Caron/Cocoa是Mac OS X上用于GUI的基本选择。
Cocoa 的演变
各位七十年代出生的开发人员可能还对NeXT还有隐隐约约的印象,当时Steven Jobs离开了Apple开创了Next系统公司并立志要创建完美的Unix 工作站。
Next Cube曾经是桌面上最酷的工作站,除了出色的硬件性能,Next还开发了全新的面向对象的编程环境叫做 NextStep. 这可谓是当时最好的桌面开发环境了。当然代价就是高昂的价格,六千美元的起始价让许多商业用户转向了SUN 和HP. 不过由于NeXT 在学术界的声望,不少当时最优秀的计算机人才或多或少地受到了NextStep的影响,包括后来的Java ,在设计上受到了NeXT step很大的影响。世界上第一台web server就是运行在NeXT的工作站上。
由于硬件上的失败,NeXT在九十年代中期转 型为专业的软件公司,专门授权他们独一无二的技术 – NeXT OS 和 NeXT Step. 并和Sun合作推广基于NeXT Step的编程环境并演化为Unix上通用的Framework叫做OpenStep. 说到这里,各位可能对Linux GNOME上那个OpenStep Desktop Theme的来源有了个大致的理解了吧
NeXT Step在当时最大的卖点有两条。一是基于最纯正的面向对象的系统,二是因为NeXT Step的跨平台特性,Objective C是动态的编程语言所以它是基于Runtime来提供Meta Data (列如 selector, class information等等)。听起来是不是很熟耳(Java?), 可以说NeXTStep 是java出现前最出色的开发环境。至今还有很多基于NeXTStep的项目还在开发中。
到了1996年世界发生了转折, Internet的盛起,Java的流行,Apple的衰败,Microsoft的独裁。整个业界不得不面临一个全 新的格局。Apple当时已经有了一个用来对付windows 95的全新操作系统CopLand, 它因为没能及时赶上技术的需求不得不面对流产的危险。Apple需要一个能够跟的上时代的操作系统, NeXT和Apple的合并挽救了这个即将破产的公司。Apple获得了两贴回春药-Steven Jobs 和 NeXT Step.
NeXT 的到来改写了Apple的整个软件策略,一种基于NeXT Step的操作系统成为了Apple下一个二十年的基础。与此同时硬件方面的iMac和软件方面的OS8为Apple争取了三年时间直到Rhapsody (Mac OS X)的诞生。
COCOA 就是NextStep. 它是用Objective-C编写的一种开发环境,它包含了Application Kit和Foundation两个部分。Foundation包括了基本的数据类型的定义,数据集合框架(Data Collection Framework),辅助类(Utility Classes) 和网络及IO框架。Application Kit主要用于开发GUI。如果你是Unix的开发人员,你可以用标准的POSIX API或Cocoa Foundation来开发。

0 Comments:
Post a Comment
<< Home