February 24, 1998
From February 16-20, 1998 I attended a Rhapsody Kitchen sponsored by Apple Computer. The kitchen was held in Cupertino, California. The primary purposes of this kitchen was:
I found Apple personnel much more responsive to listening to what we had to say than in the recent past. Apple personnel included the lead technical engineers, as well as the developer relations folks. With the new management, I see Apple definitely being more of a company which provides both solutions for todayís problems and innovations for the future. This is in contrast to promising that everything is coming in the next version, and often failing to deliver.
For the kitchen, we worked with the first developer release of Rhapsody using Power Mac 9500/132 machines. All Power Macs (about 32 total) were linked to a NextStation server (yes, that is a 68040 processor machine--and it kept up with us well ) using NetInfo server software (created by NeXT, and adapted by Sun Microsystems for some of their network software). The primary programming language was Objective-C. Consideration and demonstrations of Java were also shown, and issues regarding usage of C++ code were considered.
Attendees included representatives from Fannie Mae, Walt Disney, Industrial Light and Magic, Strata, Batelle (Richland, WA), Sandia, and other small development companies.
Day 1: Welcome --Dave Rost (Apple Value Added Reseller Relations) --Jordan Dea-Mattson (Apple Developer Relations) Overview of Rhapsody --Ernie Prabhakar (Rhapsody Technical Product Marketing) Beginning of Instruction --George Ruzek (Blacksmith, Inc.) --Intro to objects --Objects and graphical interfaces --Creation and destruction of classes --Object editing and manipulation with Interface Builder --Programming paradigms with objects Day 2: Continue instruction --George Ruzek (Blacksmith, Inc.) --Notification and delegation --Inheritance and archiving --Frameworks (Foundation and Application Kits) --Distributed Objects Java and the Yellow Box --Scott Forrestal (Apple Computer) --100% Pure Java --Java Access to Yellow Box and cross-platform deployment Day 3: Continue instruction --George Ruzek (Blacksmith, Inc.) --NIB (NeXT Interface Builder) files --multiple documents, tables, panels (dialogs) Day 4: Continue instruction --George Ruzek (Blacksmith, Inc.) --events and responders to objects --Working with NSTextView (handling text, graphics, fonts, PostScript) --Internationalization issues Day 5: Continue instruction --George Ruzek (Blacksmith, Inc.) --Enterprise Object Frameworks (EOF) for database access --Linkage of EOF with WebObjects for access of data via browsers Briefing on additions and changes to the Yellow Box since Developer Release One (Apple Computer engineering staff) Developer feedback and wrap-up --Dave Rost (Apple Value Added Reseller Relations) --Jordan Dea-Mattson (Apple Developer Relations) --Apple Computer engineering staff
In the following sections, I discuss in more detail some of the more interesting
things that may be of immediate interest.
II. YELLOW BOX CONSTRUCTION
In the schematic is shown the major Yellow Box frameworks involved. Note that the diagram does NOT show every framework, just some of the major ones of interest.
Users will not have to worry about what kit interacts with what kit, since all they need is the Yellow Box run-time. Developers will need to be more aware of these issues.
III. DEVELOPMENT TOOLS
The two primary development tools in Rhapsody are Interface Builder and Project Builder. By far, Interface Builder is the key.
INTERFACE BUILDER :
By consensus, it is well agreed that Interface Builder is key to Rhapsody development. The name is somewhat misleading, as it is far more than just a tool to construct an interface. In reality it is better thought of as an Object editor or Connection Builder between objects. Using Interface Builder you can dynamically subclass any class within the Yellow Box, and interactively test your object model. All your objects are stored in NeXT Interface Builder (NIB) files, which are automatically loaded and instantiated when opened by Interface Builder or your distributed application
In addition, even with DR1, you can manipulate 100% Pure Java Objects within Interface Builder, and mix that in with your other Yellow Box objects. Ultimately the goal is to be able to treat Java Bean objects in the same way (see the Java section below). If and when Microsoft ever settles down on what Common Object Model (COM) objects will be, then there is room for integrating COM objects into Interface Builder as well.
This is a boon to developers since it provides a unified tool for directly dealing with dynamic objects (potentially regardless of the source), and works on multiple platforms. Interface Builder itself, is constructed using Yellow Box routines!
With the integration, developers can mix Objective-C and Java code. Though right now it is not possible to call the frameworks (in particular the Foundation kit) directly via C++, C++ code that does not involve interface and low-level issues can be used. It is not clear as to whether the Yellow Box frameworks will be directly accessible via C++; this has mostly to do with the fact that C++ is a static language, and not well-suited to dynamic frameworks.
PROJECT BUILDER :
Project Builderís is the Integrated Development Environment (IDE) shell for organizing Rhapsody projects. However the Rhapsody design does not preclude third-parties from using their own compilers as plug-ins, or their own IDE front-ends. This will likely be left to third parties--e.g., MetroWorks, Inc. The IDE just has to be able to deal with NIB files created by Interface Builder. Even as it stands, Project Builder is a very useful tool.
The level of Java integration for developers, even in Developer Release One, is truly amazing. Full support for 100% Pure Java, and all major Java frameworks is in place (although some in alpha form as of DR1). Support for Java Beans development is well underway.
Even more exciting is the way that Yellow Box has been made accessible to Java for developers. At WWDC 1997, Apple had indicated that it had made the entire Yellow Box available to Java calls, thus making all the functionality of the Yellow Box accessible to Java. This was considered potentially huge since Javaís capabilities are still rather limited.
One very obvious example of the differences between the Java frameworks and Yellow Box is in the handling of text classes, and drag-and-drop capabilities. The NSText class of Yellow Box is tremendously advanced compared to Java. Using the Yellow Box you automatically have multimedia features, advanced text manipulation abilities, and software localization to name a few items. In class we created both very simple English and Japanese Kanji word processors in a matter of minutes (including the ability to mix English with Japanese). With upcoming additions to the Yellow Box, the equivalent of MacWrite Pro could be done in a few days. Apple showed another demo of TextEdit--the Rhapsody equivalent to SimpleText (Mac) and WordPad (Windows) which had full PostScript text editing (and colors, and fonts, and rulers, etc) done completely in Java in 5 minutes. In Rhapsody DR1, this same TextEdit program was done using Objective-C. There was no difference between the two versions as far as a user is concerned.
Below is a schematic of how Java is dealt with regard to the Yellow Box.
There are a few points to be amplified:
ENTERPRISE OBJECT FRAMEWORK/WEB OBJECTS :
A schematic of how relational and flat-file database access is done using the Rhapsody environment is shown below. Again, the schematic does not show every framework within Yellow Box, just the major ones involved.
There are a few points to be amplified:
- The list of databases (Orace, Sybase, etc) is just what is available now. Support for other databases can easily be constructed.
- Retrieved data can be given to the user via independent applications, or by the Web (incorporating Java if desired).
- The EO Access Framework is the component that communicates with a given database. If we change databases, this is the component that would be modified.
- The EO Control and EO Interface Frameworks are the principal frameworks called on by developers. EO Control deals with the business logic, and EO Interface deals with how an application presents the data to the user. The design encourages the true separation of business logic from interface issues from database engines. Thus future modifications are much simpler to do.
- If you prefer to use the Web, then the Web Objects Framework is called to translate EOF data into HTML data. Again, because of the separation of business logic, interface, and database; modifications to specific components are much easier to do.
I found attending the Rhapsody Kitchen to be very worthwhile. I was able to learn quite a few things that I did not previously know, or was uncertain about. From a developer standpoint, this was an excellent introduction to the nuances of the Yellow Box and Rhapsody in general. However, this was not a course for the average joe user.
I think it is now clear that Apple is opening up big time. A significant number of Rhapsody technologies are not ìnewî in the sense of being untested. In a sense, one of the great appeals of the Rhapsody architecture (in addition to great new technologies) is that it tries to integrate many proven technologies into one very useful package which can span a variety of hardware and software.
From a developer standpoint, I think that if we are serious about maximizing our use of Java and Web technologies, it is imperative that we give Rhapsody (at the absolute minimum) a very, very serious look as a development platform. We have to remember that Rhapsody Yellow Box, in its OpenStep incarnation, was regarded as one of the most powerful and elegant development environments for Mach, Solaris and Windows NT, and found widespread use in database and enterprise application development/deployment at companies like Fannie Mae and Merrill-Lynch. Having Apple opening the Yellow Box further to Macintosh users, and updating the Yellow Box with the capabilities demanded by todayís users (e.g. Java, multimedia, etc.) makes it that much more compelling. Additionally if we believe that operating systems and platforms are becoming less of an issue, then something like Yellow Box is one way we can keep our software and hardware options open without automatically being cornered into one vendorís software and hardware.
Apple has absolutely no plans to restrict Rhapsody as a purely server environment. Apple (and others) expect that the early adopters of Rhapsody will be the server folks, power users, and people who must have the latest and greatest. Mac OS will continue as the volume seller for the immediate future. In concept, this is similar to that of Windows 95/NT where people first said that 95 would be the volume consumer system, and NT would be for servers. However, given the different design approaches, I forsee any future transition to the Rhapsody OS being considerably more transparent compared to Windows.
Apple, like other companies, has made some truly questionable decisions in the past. However, after attending this Kitchen and working with the Rhapsody preview releases, I do NOT believe that the merging of Apple/NeXT was one of them. This may be one of the most pragmatic moves Apple has ever made.
I will be available to keep people updated on any major new developments and releases, and whatever results I come up with as I am beta-testing the software.