If you only heard one thing about Mac OS X in the past year, it
would be Aqua. But the second thing you would learn about is the
structure of Mac OS X and the new application environments that
come with it. I'm referring to Cocoa, Carbon, and Classic (although
there's nothing new in Classic). Each type of application programmer
interface (API) is designed for a specific purpose.
Classic
Classic is really just Mac OS 9.1 running within OS X. It
is good for using applications that are made for previous Mac OS
versions. The majority of companies that develop applications for the
Mac have committed to Mac OS X and will most likely not continue
to develop applications that will not run natively under OS X. The
most popular of these companies include Microsoft, Macromedia, Adobe,
and Corel.
Carbon
Most companies that are porting their existing programs to Mac
OS X are using Carbon, which allows programs to run under
OS X and the traditional Mac OS.
Carbon is efficient, because programmers only have to rewrite 10-20%
of their code to make an old program run natively in OS X. This
percentage varies depending on the application and how much of the
original code requires system interaction. For example, many
cross-platform programs and games are designed to run on both Mac OS
and Windows, and therefor do not utilize much OS-specific code. These
applications are easier to carbonize. Carbon is easier to learn than
Cocoa, because it is very similar to C and will likely be the more
popular way of developing applications for Mac OS X.
Cocoa
Cocoa is more powerful than Carbon and takes better advantage of
what Mac OS X has to offer. With Cocoa, developers can write
applications in both Java and Objective-C. At the moment, there are
more applications written in Carbon than Cocoa, but it is likely that
as OS X becomes the standard Mac operating system, more programs
will be created using this API. Applications that are currently written
in Cocoa include the majority of programs from the Omni Group, a popular instant messenger
called Fire, and the
recently announced QuicKeys X.
Cocoa gets the prize for the most versatile and powerful API. Carbon
comes in second as a quick and easy way for companies to port their
programs to Mac OS X. Classic comes in last and should only be
used by those that don't expect to sell any copies of their
application.
Apple has done a good job creating an easy way for companies to port
their existing software to Mac OS X using Carbon. Apple has also
created Cocoa for those who want to take full advantage of all that Mac
OS X has to offer. For developers who are too old-fashioned to
carbonize their applications, there is Classic - which is a nuisance to
run, but it works all the same.
I look at the transition from Classic to Cocoa (or Carbon) the same
way I looked at the transition from SCSI to USB a few years back: It's
something that has to be done, and we will all be thankful for it a few
months down the road.
If you're interested in learning more about Carbon or Cocoa, I
suggest the following two books, which will be available in May and are
written by insiders at Apple: Learning Carbon and
Learning
Cocoa.