Recent top five:
Java.next -- Four languages that represent the future of Java
Blogger Stuart Halloway has begun a series of posts on trends that point to the future of the Java platform. In his first
post, he compares Clojure, Groovy, JRuby, and Scala -- four wildly different languages that nonetheless all play together
in the JRE. Find out what unites these languages and what they can tell us about the future of Java-based development ...
| Enterprise AJAX - Transcend the Hype |
| Memory Analysis in Eclipse |
| Oracle Compatibility Developer's Guide |
| Memory Analysis in Eclipse |
October 7, 1997 -- Sun has responded to Microsoft's release of Internet Explorer (IE) 4.0, and its 2.0 release of the SDK for Java (SDKJ) with a lawsuit in U.S. District Court. According to Sun's press release, "the complaint charges Microsoft with trademark infringement, false advertising, breach of contract, unfair competition, interference with prospective economic advantage, and inducing breach of contract." Specifically, Microsoft made the choice last week to ship products it claims are fully Java 1.1 compliant, but which failed to pass the Java 1.1 compatibility tests the company received from Sun in February. "Microsoft embarked on a deliberate course of conduct to fragment Java," said Alan Baratz, president of JavaSoft, during a Sun teleconference today at 10:30 a.m. PST.
From a developer's perspective, what does this mean? Well, first, if you create something with Sun's 1.1 JDK (or with the Java 1.1-certified environment from another company, such as IBM, Borland, and Symantec), it may not run under IE 4.0. Also, if you create something with Microsoft's development environment, it may not run under a non-Microsoft Java 1.1 environment. Specifically, Microsoft does not support the Java Native Interfaces (JNI) or the Remote Method Invocation (RMI), and it has altered the Core Java class libraries with about 50 methods and 50 fields that are not part of the public Java Application Programming Interfaces (APIs) published by Sun.
JNI is the native code interface used to access platform-specific capabilities like a serial port or a microphone -- for things that aren't available yet through the core API. The goal of JNI is to permit developers to provide a single set of native libraries for every Java implementation on a specific platform.
Microsoft has decided to support its own interface, called RNI, which provides the same capabilities as JNI. By not supporting JNI, Microsoft is forcing developers to provide different libraries for Microsoft and non-Microsoft Java virtual machine (JVM) users. There is nothing wrong with Microsoft's support of RNI if the company thinks its technology is better. However, by not supporting JNI, Microsoft cannot claim IE 4.0 is fully Java 1.1 compliant.
RMI provides a means of executing Java code on foreign Java virtual machines. It is frequently compared to Remote Procedure Calls (RPC), Common Object Request Broker Architecture (CORBA), and Distributed Component Object Model (DCOM), depending on the background of the person speaking. Microsoft claims it supports DCOM instead of RMI because RMI doesn't support Java-to-non-Java communications. The specific purpose for using RMI is for Java-to-Java system communications. For example, with RMI, you can invoke methods of objects existing in other Java virtual machines, without knowing the class type, while preserving Java's runtime safety.
If you need to move outside Java-to-Java communications, CORBA actually is the portable solution, not DCOM. Why? DCOM is geared toward the Microsoft world, only recently becoming available for the Unix world with products like EntireX from Software AG. If you need to use RMI, obviously Internet Explorer is not an available option. If you need Java-to-non-Java system communications, to interface with legacy (non-Java) systems that rely on CORBA, Netscape Communicator 4.0 ships with Visigenic's VisiBroker ORB. (For RMI support with Netscape Communicator, you need to use a beta release of a browser patch, since Communicator does not claim to be a Java 1.1 browser.)