Steve Jobs and the History of Cocoa, Part Oneby Simson Garfinkel and Michael Mahoney, authors of Building Cocoa Applications: A Step-by-Step Guide.
Editor's note: In this first part of a two-part series, Simson Garfinkel and Michael Mahoney explain why Cocoa and Mac OS X aren't nearly as revolutionary as they are evolutionary -- and still in the process of refinement. The story begins with Apple's genesis in the 1970s and takes you through key events up through 1993, when NeXTSTEP began to flounder. In Part Two (Friday, May 10), Simson and Michael pick up the story with the Star Trek project and bring you to the current iteration of Mac OS X.
If you are a Macintosh user, you've almost certainly heard of Mac OS X, Apple's "revolutionary" new operating system that now ships standard on all Macintosh computers. And if you know anything about OS X, then you know that to call the operating system "revolutionary" is a huge misnomer -- while Mac OS X brings a whole range of exciting new capabilities to Macintosh users, it's really much more an exercise in evolution than revolution.
If "X" stands for that which is unknown, then Apple's next-generation operating system is fundamentally misnamed. Unlike that other "X" operation system, Microsoft's Windows XP, very little about Mac OS X is unknown or unpredictable. Indeed, some of the most innovative goodies in OS X are actually mature, stable technologies that have been painstakingly developed over the past 15 years by Apple, NeXT Computer (which Apple acquired in December 1996), and the open source community as a whole. The real pleasure that is Mac OS X comes from the seamless integration of these technologies in a single desktop.
To be sure, Apple has taken great pains not to annoy the Macintosh faithful. The Mac OS X "Aqua" interface looks a lot like the Macintosh interface that tens of millions of people have come to know and love. Along the top of the monitor is the ever-present menu bar with the Apple in the top-left corner. There are pull-down menus, pop-up buttons, scroll bars, and even Apple's Finder.
But instead of sitting atop the Macintosh Toolbox, OS X is built upon a Unix kernel. Indeed, Mac OS X ships with an entire BSD-based Unix operating system called Darwin. There is a "Terminal" application, a copy of the GNU C Compiler, emacs, make, awk, lex, yacc, and even perl (version 5.6.0), all of which combine to make it a proficient open source development platform. But for many programmers, the real excitement of Mac OS X will be programming with “Cocoa.”
Writing programs for Cocoa is both similar to and yet significantly different from writing programs for other programming environments. Like other modern application-development environments, one writes Cocoa programs by building systems of related but distinct parts, or objects, and connecting them together to form an integrated whole. Confining different aspects of a program to different pieces makes those pieces easier to design, implement, debug, and reuse. This is what is known as object-oriented programming (OOP).
But unlike development systems based on the C++ programming language, such as Microsoft’s Application Foundation Classes and CodeWarrior’s PowerPlant, Cocoa is built on top of the Objective-C programming language -- a language that’s simultaneously simpler than C++ and yet better suited to creating graphical user interfaces. Whereas most people find programming in C++ a chore, most Objective-C programmers find the language to be a joy.
Cocoa embodies the principles of object-oriented programming from its user interface down to its very core. This greatly simplifies the task of building applications for Mac OS X. The downside is that it makes the Cocoa environment very different from the environments to which most programmers are accustomed. As a result, there’s something of a learning curve -- a curve that can be pretty steep if you don’t have competent instruction.
While Cocoa is a relatively new offering from Apple, the underlying operating system on which Cocoa is based is more than a decade old. Although today Cocoa is an integral part of the Macintosh operating system, much of what is now called Cocoa dates back to the NeXTSTEP OS developed by NeXT Computer, Inc., from the late 1980s through the mid-1990s.
This is very important: Cocoa is not some new fad technology Apple is trying out today but might soon discard: it is a mature, time-tested development environment that has been used and improved by many thousands of programmers over more than a decade.
Mac OS X can actually run at least four different kinds of programs right out-of-the-box. In addition to Cocoa applications, OS X can run an incredibly wide range of legacy Macintosh applications in its so-called "Classic" mode. These applications have exactly the look-and-feel of applications running on Mac OS 9 -- in fact, Mac OS X actually runs them inside a virtual Mac OS 9 operating system.
Mac OS X can also run new "carbonized" applications based on a limited set of the Macintosh Toolbox API that is native under the new operating system. And finally, like any modern operating system, OS X can also run programs written in the Java programming language.
To understand how all of these different technologies fit together, and to understand the grand unification that is Mac OS X today, you really need to know the history of Apple, the Apple II and III, Lisa, Star Trek, Steve Jobs, John Sculley, the Macintosh, and a company called NeXT.
Pages: 1, 2