AFAIK: As Far As I Know
 As Far as I Know: Facts, Factoids, and Opinion.

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. 
 
© 1998 by Brett Glass. All rights reserved.  About us  | Feedback Trademarks 
Go back to top of this page