micro/scope
November 5, 1997
Todd Nielsen
Guest Columnist
General Manager, Developer Relations Group
MSDN Online received several responses to its recent article about why Microsoft doesn't support JNI or Remote Method Invocation (RMI) in Internet Explorer 4.0, and they asked me to answer the mail.
As I read the mail, I realized that most of it could be boiled down to three questions. So, I wrote down the answers to those questions, and then began responding to each mail individually by cutting and pasting the answers. (As a result of that exercise, I can now proclaim that I am the world's fastest "cutter and paster." I hereby challenge any of you to a cut-and-paste-off at our next Microsoft Developer Geekfest! But I digress . . . .) After working my ctrl-c and ctrl-v fingers for a while, I figured there must to be a more efficient way to address these three questions.
Therefore, my hope is that this column will answer the questions and provide some additional clarification.
By not supporting JNI, you are preventing my applets from running on every operating system. Why are you doing this dastardly thing to me?
JNI isn't used for portability or cross-platform compatibility. By definition, JNI is about writing native code for a specific operating system. When a developer makes an explicit decision to write native code, we want to provide the most efficient way to do this. We provide Raw Native Interface (RNI) and J/Direct, which offer better performance and more functionality than JNI. Furthermore, JNI is incompatible with previous versions of the Java Development Kit (JDK). Microsoft's RNI was based on the native method interface of JDK 1.02 and was already installed on millions of desktops before JNI was ever introduced. Sun may not care about breaking code that customers have already written, but we do.
By not bundling RMI, you make me download the technology from your Web site in order to run RMI code with IE4. Why make me go through this pain?
We understand this is an extra step. However, the pain of downloading RMI from our Web site is nothing like the pain you'll feel when you have to rewrite all of your applications that depend on RMI code. Will you have to? It looks that way. Sun has been highly inconsistent in its statements about the future of RMI. In June, a Sun official said it would be merged with IIOP and phased out. When users complained, Sun backed off and said it wasn't killing RMI. But Sun still hasn't provided details of how it will accomplish the merger without breaking developers' code. For those programmers who want to use RMI, we do make it available from our Web site, but we don't support it, and we don't recommend it.
Regardless of Microsoft's opinions of these two technologies, you are required to ship whatever Sun says. You do not have the right to determine how you support Java. So, what do you think about that?!
Actually, our contract with Sun does give us the right to do this. Our agreement with Sun gives Microsoft the sole discretion to decide whether to distribute some of, derivative works of, or a substitute for the technology we licensed from Sun. Microsoft refused to agree to restrictions that would allow Sun (or any other vendor) to dictate the future development of Microsoft products. Sun is well aware that we had no obligation to ship any of their technologies after Internet Explorer 3.0 and is now asking the courts to reinterpret the deal.
What do you think? Please send mail.