This week we're going to be looking at the
newest release of Swing,
as well as the upcoming release of Apple's Rhapsody.
Why Swing? Because each new release of the proposed Java 1.2 interface
specification brings new revelations about the organization and composition
of the AWT that we'll all have to live with very soon, and Sun has just released (pre-released?) version
0.4 of the Swing set.
The Swing documentation itself is plastered with warnings about massive
changes to the Swing naming scheme since the last pre-release--a healthy
indication that Sun is continuing to work the kinks out of the specification
as much as it feels it needs to. The list of actual functional improvements is mercifully short. There
are a few more recognizable bits of user interface esoterica thrown in,
but by and large it consists of, as Sun puts it, "Many tweaks, bug fixes,
and enhancements."
That's just fine with us. When choosing between investments in robustness
or investments in marketable features, companies inevitably choose the
latter too often, even though it's reliability that keeps us up late at
night. Speaking of marketability, one of the particularly
amusing documents released with the new version of Swing was related to
Swing Packaging. It explains a bit more of the thinking behind the morass
that is the Swing naming scheme, as well as a bit of the larger Java naming
hierarchy. This is a very good read if you've been wondering how Sun plans
to integrate this "separate" set of AWT classes with the existing AWT.
And why turn our attention to the coming of Apple's newest MacOS? Because
it's a very interesting historical event--the first (major) operating
system to be developed in the full light of Java.
If you've heard any of the buzz surrounding Apple's ridiculously delayed
attempt at revitalizing their operating system software, you probably know
it plans on including a built-in Java virtual machine. This is an encouraging
practice, and one that's being adopted by Microsoft and Be as well. But
most likely you haven't heard the extent to which Java is interwoven
into the fabric of the operating system, practically or conceptually.
The relationship--in fact, the resemblance--between Java and Rhapsody's
Yellow Box is absolutely striking. Although Rhapsody isn't the first attempt
at an object-oriented operating system by any means, if it inherits any
significant part of Apple's current installed base of millions of users,
it will be the first to be widely used.
While it's base language (Objective C) is only a distant cousin to Java at
best, there are a number of quickly noticeable parallels between the two
systems. From the fact that Rhapsody is another Model-View-Controller
adoptee to the organization of the Rhapsody API itself, the two systems
definitely appear to have come from similar organizational schools.
This is very interesting considering the fact that the engineers working on
Rhapsody had a remarkable amount of freedom to choose what kind of system
they wanted to make (relative to other personal computer operating system
design decisions in years past). It's striking that they should end up
making choices that converged with those of the Java design team.
Is it because both systems are adopting something close to ideal for
treatment of object oriented environments? Is Rhapsody evolving to resemble
Java because of its success? Or has Java simply capitalized on good ideas
that already existed in Rhapsody back when it was called NextStep?