Technology Overview

Carbon is a procedural C interface for Mac OS X. Whether you are writing a new application or porting one from another platform, Carbon is an excellent framework for developing on Mac OS X. If you're developing new applications and prefer an object-oriented interface, be sure to consider Cocoa.

If you are familiar with C programming but not with Carbon or Mac OS X, you want to learn how to design and implement a basic user interface and then learn how to build a Carbon application using Mac OS X development tools. After that, you’ll want to explore the various Carbon "managers" and "services" for APIs specific to your needs.

Start Here

Before you begin development, you should familiarize yourself with the system architecture and user interface of Mac OS X. You should read:

Choose a Learning Path

If you’re just beginning to develop Carbon applications, you may want to know how developing for Mac OS X differs from developing for other platforms. If you’re ready to develop for Mac OS X, you’ll want to learn how to use the Xcode development environment. If you’re familiar with Xcode, you’ll want to begin creating a simple user interface for Mac OS X.

Migrating from Another Platform

Before you begin development for Mac OS X, you may need to move your existing code from another platform.

Developing with Xcode

To develop Carbon applications, Apple recommends using Xcode, which is included in the Developer Tools package included with Mac OS X v10.3 (Panther) and later. You should read:

Once you’re familiar with Xcode, you’re ready to build a user interface for a Carbon application.

Building a User Interface

To build a user interface for your Carbon application, you should read:

Note that the Carbon user interface APIs are often referred to as the Human Interface Toolbox, High Level Toolbox, or, if you are using object-oriented HIViews, the HIToolbox.

Next Steps

The Carbon Reference Library includes the following high-level Carbon resource pages, which you can bookmark for easy access:

These additional resource pages may also be helpful: