Links
Back to the
AFAIK Home Page
Back to the
YMMV Home Page
|
Visual J++ 6.0: Java It
Ain't
by Brett Glass
3/11/1998
Rumors flew through the computing world this week, sparked by an
article penned by Jodi Mardesich, a writer for the San Jose Mercury
News. "Microsoft Seeks to Window-ize Java!" cried the headlines, while
analysts at major research forms made statements calculated to get into
print rather than to shed light on the situation.
Here's what's going on, in a nutshell. (Note: The following explanation
is fairly technical. I plan to write a "non-techie" version, for consumption
by the general public, in the near future.)
Microsoft has just announced a new version of its Visual J++ development
product. (The version number has jumped from 1.1 all the way up to 6.0
in a single release, creating the misleading impression that the product
is more mature than it may actually be.) The language implemented in this
product is both a subset and a superset of Sun's Java. It omits the Java
Native Interface -- Java's standard mechanism for creating programs that
can access the unique features of specific operating environments but are
nonetheless portable.
The product also adds a Windows-specific application framework (called
the Windows Foundation Classes, or WFC), new keywords, new data structures,
new language semantics, and conditional compilation directives unsupported
by Sun's compilers. The application framework does not allow standard Java
"components," or JavaBeans, to be used unless they are converted into Microsoft-proprietary
components known as "ActiveX Controls." It encourages the use of Windows
functions that are not available on other operating systems and hence the
creation of Windows-only programs. (It is not clear, at this juncture,
whether it is even possible to write a program that will run on a non-Windows
platform with the product.)
The new keywords, delegate and multicast, are used to
create new data structures, known as delegates, that act in a way
similar to "function pointers" in the C language. A delegate is a strongly
typed reference to both an object and one of its methods (or a class and
one of its static methods) that can be used either to invoke the method
on the object or to execute the method. A multicast delegate is
similar, but contains a list of objects and methods to be invoked on them.
In Microsoft's new Windows-specific application framework, delegates are
"fired" -- that is, caused to execute their methods -- in response to Windows
events.
The application framework also provides for the creation of accessors
and mutators, which serve as read and write access functions for
abstract data structures within an object. These abstract data structures
are called properties, as they are in Microsoft's Visual Basic and
Borland's Delphi, and provisions are made to specify visual editors for
them for use at development time. The mechanism is reminiscent of the extensions
that were added to Borland Pascal to create the component model used
in Borland's Delphi. (This is not surprising, since a key developer of
the product is former Borland software engineer Anders Hejlsberg, who is
rumored to have been lured away by Microsoft for a 6 figure bonus
and a long paid sabbatical at a high salary.)
The result of these mutations is a language that is, unfortunately,
no longer Java. Sun, which created and defined the technology, defines
Java at
http://java.sun.com/docs/overviews/java/java-overview-1.html
as follows:
Java [is] A simple, object-oriented, network-savvy, interpreted,
robust, secure, architecture neutral, portable, high-performance,
multithreaded, dynamic language.
The document goes on to explain what "architecture-neutral" and "portable"
mean -- and rules out, explicitly, the notion of a platform-specific version
of the language. Also, because no compiler other than Microsoft's will
compile code written to the new application framework, and Microsoft does
not even make a good faith effort to pass Sun's Java compatibility tests,
the product cannot be considered to be an implementation of Java.
Sun is widely expected to claim -- with ample justification -- that
Microsoft's product is not an implementation of the Java language, and
that using the name Java in conjunction with it is both in violation of
the licensing agreement between the two companies and a damaging act of
trademark dilution. We may see a request for an injunction, as well as
an escalation of the current courtroom battle.
|