Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesA First Look at Rhapsody


January 1998 / Core Technologies / A First Look at Rhapsody

Apple's next-generation OS is stable, but it relies too much on Unix to get certain features to work.

Tom Thompson

No banners flew or bands played when Apple released the Developer version of Rhapsody, its next-generation operating system, last year. That's because it was a limited release to 10,000 developers, and not to the public. As one of those 10,000, I received a copy. It comes on a single bootable CD, while a second CD contains third-party sample applications and some object-based frameworks for database development. Before giving my impressions, let's review what Rhapsody is .

Quick Tour

Rhapsody provides modern OS features such as preemptive multitasking, threading, and memory protection. Apple positions Rhapsody as an OS for servers, work-flow applications, and high-end desktop work. It's basically a port of OpenStep. OpenStep itself is a port of the original object-oriented NextStep OS to both Unix and Windows. The name change was made because NextStep class libraries employed the Mach kernel to supply low-level services, while the OpenStep libraries are an application framework that rely on the host OS for low-level services. While Rhapsody uses the OpenStep libraries, it is an OS that uses the Mach 2.5 kernel for system services. Doing the many code ports confers two important advantages to Rhapsody. First, it reduces time to market because the ports eliminated most of OpenStep's hardware- and OS-specific dependencies. Second, it means Rhapsody is built with field-tested, time-proven code (NextStep was introduced in 1988), w hich improves its reliability. The OpenStep class libraries themselves got a new moniker: the Yellow Box. This distinguishes their threaded, object-based nature from the nonreentrant Mac OS compatibility environment, called the Blue Box. These libraries also sport some new features not found in OpenStep, such as Java support, and Mac-like UI elements. However, it is still an application framework.

Enhancements have been made to Rhapsody's Mach 2.5 kernel so that it supports NFS. It also supports SCSI disks, and removable devices such as CD-ROM and Jaz drives. While the kernel has multiprocessing capabilities, the feature uses processor-specific code. Therefore, this release doesn't offer support for symmetric multiprocessing (SMP). Later Rhapsody releases will offer SMP, and they'll use the Mach 3.0 kernel.

Running on top of the kernel are the Yellow Box libraries and BSD4.4 Unix. Java support comes through a virtual machine (VM) based on Sun's JDK1.1.3. The interfaces are revised so that Yellow B ox APIs can be called from Java. Theoretically, you could write a Java program using the Yellow Box APIs once and it would execute anywhere: on a Power Mac or a PC running Rhapsody, on several flavors of Unix, and on any x86-based machine running Windows. Java code would execute on the Java VM, while the Yellow Box API calls would execute in native code. Since applications make extensive use of GUI API calls, this makes it possible to write a Java application whose image could execute virtually anywhere, and with reasonable performance.

Tricks and Traps

For the PowerPC-based version of Rhapsody, you need 32 MB of RAM minimum (64 MB recommended), and a 1-GB hard drive. To meet the delivery date, Apple wrote a subset of Mac hardware drivers, so only Power Mac models 9500, 9600, 8500, and 8600 are supported. (For the brave, this release happens to work with Power Mac models 7200, 7300, 7500, and 7600, but they aren't officially supported.) Rhapsody works only with ATI and IXMicro video boards, and only TCP/IP on Ethernet is available for networking -- no AppleTalk or PPP. Rhapsody uses the Unix File System (UFS) on the hard drive, while it uses NFS for remote drives. The Blue Box is absent, as are Mac OS technologies such as QuickTime, QuickTime VR, and AppleScript. This is definitely a release only for those interested in writing to the Yellow Box APIs. The Blue Box will make its debut in the Premier release of Rhapsody, scheduled to ship the first quarter of this year.

On a large hard drive, you can create two partitions, one for the Mac OS and another for Rhapsody, to make a dual-boot configuration. You toggle between the two OSes by holding down the Caps Lock key during the boot process. (See "Dual-Boot Mechanism" for how this is done.) On the Mac OS side, a Rhapsody control panel lets you set the hard drive's SCSI ID and certain boot parameters. To enter Rhapsody, you hold down the Caps Lock key until the Rhapsody control panel loads. The Mac restarts, and Rh apsody boots. Under Rhapsody, you log out with the Caps Lock key down to flip back to the Mac OS.

On developer releases, you expect a few rough edges, and Rhapsody has some with the system configuration. Setting up the boot drive in the Rhapsody control panel requires you to enter the Unix name of the root device (e.g., rootdev=sd0 ). The documentation is vague on how to do this, particularly for an external SCSI chain with several devices. The best bet: Leave the boot process in the verbose mode (put -v in the kernel arguments [args] pane in the Rhapsody control panel). This lets you watch Unix commands execute in a console window during the boot process. Jot down the Unix device name Mach assigns to the SCSI drive in question. Press the Command and Power keys to interrupt the boot, and type r when Unix prompts you. Enter this name in the kernel args pane when you flip back into the Mac OS. When you've got everything set right, remove the verbose command, and Rhapsody boots, displaying a sliding progress bar just like the Mac OS.

The Workspace Manager process acts like the Mac OS Finder and hides Rhapsody's Unix entrails, to a degree. The lone menu bar, the sample application windows, and the Desktop look amazingly Mac-like. However, when you run HostManager and SimpleNetworkStarter to configure the computer's network settings, NextStep rears its head. The appearance of the menus and windows in these programs is quite different, as the screenshot shows. These applications do let you point and click to assign your computer an IP address and set router information. Establishing domain name services or printer services, unfortunately, requires resorting to a text editor and Unix scripts for setup, so Rhapsody's network services aren't quite ready for prime time. With the correct network settings, I was able to use Unix telnet and ftp programs to grab files from Web sites. As of yet, there's no drag-and-dropping of remote files as in AppleTalk.

Tip: If you munge a network setting and experience problems booting, use the magic Command-Power key sequence to interrupt the system, restart, and hold down the S key during the boot (or add -s to the kernel args pane in the Rhapsody control panel). This gets you into the single-user mode, where you can try to correct things -- providing you know your way around Unix.

Future Platform

Rhapsody comes with a bunch of development tools: GNUC; a linker; a make utility; and Interface Builder, the OpenStep point-and-click software for rapidly laying out an application's interface. There's also Project Builder, which manages the source, object, and header files for programming projects and resembles the Metrowerks CodeWarrior integrated development environment. About 25 sample applications -- with source code -- can help jump-start your coding efforts. Sun's Java compiler and class libraries are also included. The code for a sample text editor, written entirely in Java w ith calls to the Yellow Box APIs, is provided for Java aficionados.

From a Mac user's perspective, Rhapsody still relies too much on Unix to set up fundamental services. The Jekyll-and-Hyde mixture of NextStep applications and non-HFS file system creates confusion as well. In its favor, Rhapsody did not crash once during my testing. If the engineers can implement user-friendly system configuration tools, and get the Blue Box, QuickTime, and AppleScript working, then Rhapsody stands to deliver a powerful server-class OS that everyone can use. Stay tuned.


Dual-Boot Mechanism

illustration_link (27 Kbytes)

Rhapsody adds a Forth command to the Open Firmware boot process that lets you select which OS to use.


A Rhapsodic Mix of Elements

screen_link (32 Kbytes)

The Rhapsody Developer release is a mixture of Mac and NextStep elements.


Tom Thompson ( tom_thompson@byte.com ) is a BYTE senior technical editor at large.

Up to the Core Technologies section contentsGo to previous article: Go to next article: IIOP: The Next HTTP?SearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network