API | Description | Preferred Programming Language | Pros | Cons |
Carbon | Interfaces used for Mac OS 8/9 applications. OO interfaces/classes for Mac OS X | C, with C++ supported | Familiar APIs, allows reuse of Mac application code or program code written on other procedural systems | Not every API call available, older Carbon apps must be converted to Mach-O format |
Cocoa | Traces its roots to the NeXTSTEP framework | Objective-C, Objective-C++, although C and C++ can be integrated into code | NeXTSTEP framework field-tested for over a decade offers a rich set of services | You're starting from scratch adapting code to this API |
Java | Uses J2SE 1.4.2 | Java | Can reuse Java programs written on other platforms with little modification | Won't have full access to all of the OS features as do the other APIs, performance may be an issue |
BSD UNIX | Based on the System V IA-32 Application Binary Interface (ABI) | C | Good for writing CLI tools or low-level services such as daemons or root processes | Mac version of IA-32 ABI still in preliminary form, and there are some minor differences in it from the Intel version |
Table 1: Summary of Mac OS X APIs.