Mac OS X is a Unix-based operating system that offers advanced features such as protected memory, preemptive multitasking, dynamic RAM allocation, full multithreading, symmetrical multiprocessing, and a microkernel architecture. These are features not found in Mac OS 9 (which is why OS X is the "new and improved" Mac OS). If these terms don't make a lot of sense to you, that's OK; what's important is to understand that because of its Unix base, Mac OS X is a completely different operating system than the "Classic" Mac OS.
Although these features are all dramatic steps forward in terms of performance and stability, one consequence is that applications written specifically for Mac OS 9 and earlier (Classic applications) are not compatible with Mac OS X, and those written specifically for OS X (Cocoa applications) do not run in OS 9.
I talked about the various types of Mac OS applications—Classic, Carbon, and Cocoa—in Chapter 7, "Apple-ication Aptitude."
This incompatibility presented a problem for Apple: When Mac OS X was first released, existing Mac users had a lot of Classic software that wouldn't run under OS X. Realizing that that people would be extremely reluctant to switch to Mac OS X if it meant having to dump all their existing software and start over (not to mention that such a dramatic change wouldn't have been much different than switching to Windows!), Apple came up with two solutions. The first was Carbon applications; as I explained in Chapter 7, Classic applications can be Carbonized, which means they can be partially rewritten to work in both OS X and OS 9. The major drawbacks to Carbonizing applications are that (1) they tend to be quite inconsistent in the extent to which they take advantage of Mac OS X features; and (2) for an application to be Carbonized, the developer has to undertake the effort (or hand the code over to a third party). For many (if not most) Classic software packages, developers are unwilling to do so, will not do so immediately, or are no longer even around.
The second solution is the Classic Environment. What the Classic Environment is is a bit difficult to explain (but I'll give it a try in a moment). What the Classic Environment does, quite simply, is allow you to run Classic applications from within Mac OS X. When the Classic Environment is running, you can launch most Classic applications and they'll run just as if they were launched in Mac OS 9. In addition, these applications will appear in the Dock just as Mac OS X applications do. If you're interested in the nitty-gritty behind Classic, the next section will give you a better idea of what's going on.
I'll be using a few terms in this chapter that can get confusing, so I want to lay them out here. When I talk about the Classic Mac OS, I'm referring to versions of the Mac OS prior to OS X (usually, OS 9). Classic Environment and Classic refer to the Classic Environment in OS X. Classic applications are those applications that are/were written specifically for OS 9 or earlier. Finally, if I mention the Classic System Folder, I'm talking about the copy of Mac OS 9 that is currently being used by the Classic Environment.
From Mac OS X's point of view, Classic is simply an application (located at /System/Library/CoreServices/Classic Startup), just like Mail, Internet Explorer, and iPhoto. However, instead of being a visible application that shows up in the Dock and has its own menus, Classic runs in the background and provides a hardware abstraction layer, on top of which a full copy of Mac OS 9, located in a Mac OS 9 System Folder on your hard drive, is loaded. Classic applications then run within this copy of Mac OS 9, just as if the computer had booted into OS 9. Almost any application that is compatible with Mac OS 9.1 or later is compatible with Classic (Classic requires a System Folder with Mac OS 9.1 or later in OS X 10.1, and OS 9.2 or later in OS X 10.2).
A hardware abstraction layer is software that provides, and controls, access to a hardware device or system. Since you can't boot into two operating systems at the same time, the Classic application in Mac OS X provides a hardware abstraction layer, on top of which Mac OS 9 can run. As an example of how this works, when a Classic application accesses the Ethernet port on your Mac, what's really happening is that the Classic application is accessing the "Ethernet port" of Classic, which is then tunneled through Mac OS X to the actual Ethernet port.
Of course, this means that in order for Classic to function, a copy of Mac OS 9 must be installed on your Mac. If you install Mac OS X on a Mac that was previously running OS 9, that copy of OS 9 can be used for Classic; if your Mac came with Mac OS X pre-installed, you also have a copy of OS 9 pre-installed for use by Classic. (You can actually have more than one copy of OS 9 installed and decide yourself which one to use; I'll talk a bit about that when I discuss Classic preferences.)
Because the Classic Environment loads a full version of Mac OS 9, it supports most of the same hardware, protocols, and input/output devices that would be supported if you actually booted into OS 9 on the same computer. However, since all communication between Classic and your computer's hardware has to go through Mac OS X, there are some limitations. For example, if Mac OS X does not support a port or a type of hardware, neither will Classic, and thus Classic applications running in Classic will not be able to access that port or hardware. In addition, some types of hardware that are supported by OS X are not available to Classic applications at all (e.g., internal modems). Below is a list of things that Classic does and does not support.
PCI or PC expansion cards supported by Mac OS X
Built-in ADB ports, but only for the primary keyboard and mouse—and an application crash may require you to restart Classic to regain the use of ADB.
Interestingly enough, the Classic Environment can sometimes support hardware that isn't officially supported by Mac OS X. For example, if a printer has drivers for OS 9, but not for OS X, you can often print to it from within Classic. I talk about how to use this capability to your advantage in Chapter 12.
Built-in serial ports
Internal floppy drives (however, external USB floppy are supported)
PCI or PC expansion cards that are not supported by Mac OS X
Modem-based applications (AOL, Z-term, and most fax software) cannot access your Mac's internal modem from within Classic. All network connections, including PPP connections, must be initiated under OS X and then funneled to Classic applications.
Overall the Classic Environment is fairly seamless; you simply launch your Classic applications and use them like any OS X application. You'll notice a few cosmetic differences in things like menus and Open/Save dialogs—which I'll talk about shortly—but other than that a Classic application runs just as it would under OS 9.
However, there are a few caveats to using Classic applications. First, Classic applications will run more slowly in Classic than if they were running on a computer booted into Mac OS 9. The reason for this should be clear: in OS X, a Classic application runs on top of OS 9, which runs inside Classic, which in turn runs on top OS X. These extra layers inevitably slow down the application's performance. The degree of this performance degradation varies, and seems to be reduced with each new update to Mac OS X, but it's there. Second, the fact that these extra layers exist means more chances for things to go wrong. You'll probably find that Classic applications are a bit less stable in Classic than they are when booted into Mac OS 9.
Finally, the advanced features provided by Mac OS X—the ones I mentioned at the beginning of this chapter—aren't available to Classic applications. The Classic Environment, as a Mac OS X application, benefits from protected memory and preemptive multitasking, but Classic applications running within the Classic Environment do not. They behave just like applications running in Mac OS 9. For example, if a Mac OS X application crashes, you can generally go right on working in other applications; however, if a Classic application crashes, it will often crash the entire Classic Environment (just as a Mac OS 9 application crash would often force you to restart your Mac).
Just as Apple releases updates to Mac OS X, updates to Mac OS 9 are periodically available. In Mac OS X 10.1, you could use the OS 9 Software Update control panel from within Classic to download an install the latest OS 9 updates. However, as of OS X 10.2, Apple has removed this functionality—running the Software Update control panel in Classic tells you that your OS 9 software is up to date regardless of whether it actually is or is not.
Under OS X 10.2 and later, at the time of this writing, you have to reboot into Mac OS 9 and use the OS 9 Software Update control panel to download and install any updates to OS 9. The problem with this approach is that Apple has recently begun releasing Macs that can no longer boot into OS 9. As a result, I suspect that you'll soon be able to update the copy of OS 9 used by the Classic Environment via OS X's Software Update.