A Better Java
by Zef Hemel- Published:September 3rd, 2004
- Comments:9 Comments
- Category:General
Imagine you’re Sun “the network is the computer” Microsystems. You’ve build your Java empire for quite a while without real comparable competition. And best of all: Microsoft has been more or less on your side (by launching J++ and including the fastest JVM in Windows, the Microsoft JVM). But then what happens? Microsoft wants to add proprietary, OS-dependent features into Java. That’s not going to happen! So you throw them out and disallow them to use a JVM at all. Ha! You don’t need Microsoft, you’re Sun Microsystems!
Guess what? Microsoft now launches its own Java-like project, called .NET. It has a JVM-like engine (called the CLR) and a Java-like language called C#. The bad thing is that the people from Microsoft could draw from years of experience with what did and what did not work in Java, C++ and other platforms, so they enter the market with a better product. C# has some nice new features, which indeed seem quite useful, and that developers seem to like. Also some new features, like generics, are planned for future releases.
What do you do?
First you have to check if people will switch to the competition. If not, you don’t have to do anything. Luckily, you find this excellent JDJ article entitled Java is Back!. The message appears to be positive, but there’s one worrying aspect. In the article the JDJ people have used an ingenious way to see which one’s more popular, Java or .NET. They did this using the website Googlefight which checks of two keywords which returns the most matches in Google. JDJ did this with Java and .NET and the results were surprising: .NET won! Oh no, what now?
Good business practice is to listen to customers. The customers by now are asking for the C# features. So what should you do? – You implement them in Java, only better! But wait, we have backwards compatibility to think about. If we implement generics, programmes written using them should also work on older JVM versions. That’s why you choose to implement them using a wipe-method that has been around as a third-party Java extention for years. It’s not nearly as nice as it could’ve been, but it’s something. But there are other features aswell: metadata, boxing, enhanced for-loop, loads of API changes and more. Wait, you can’t implement those without breaking backwards compatibilty! Hmm, alright, we’ll do them anyway, and therefore will break backwards compatibility. Life is all about compromises.
That didn’t work out as pretty as you would have planned. You ended up with a quite-sad implementation of generics that doesn’t break backwards compatibility, and a load of changes that do. So, technically you’re not going to be superiour. What options do you have left? Ehm, marketing. You haven’t done much on marketing yet. Now, what would be catchy? Oh oh oh! You know. Because the new Java version is so much better, you’re going to rename it, not to Java 2, because, confusingly, you already have that. Not Java 3, or Java 4. No, you’ll rename it to…
Oh wow, that would be so cool! But on the other hand, it’s also a bit confusing with all the old versioning stuff. OK, the short name will be Java 5, and the long version will be: version 1.5.0 of the Java 2 Platform Standard Edition 5.
And you know life will be great.


9 Commenti
They just won’t admit they’ve lost. With a lot more money, and less backwards compatibility to think about, microsoft will defenitely win this one :p.
Ah well I never liked Java that much anyway :P. Long live C++, damn where did that reference pointer point at, hmmm…
I haven’t done a lot yet in .NET, it does seem like a nice platform to be developing in. Best of all most people will have it on their PC’s soon. If you hand them a Java program, you might have to hand them a JVM with it. I guess it’s just waiting for the Mono project now then and everybody will be happy except for Sun.
I wouldn’t be suprised if microsoft would make his own CLR for linux and the mac :p.
The microsoft CLR is about 50% faster than mono on windows :p, however, I guess the Microsoft CLR has a little more money put into it.. only a little…
oh, btw.. C++.net rox :p. It is even more confusing, more assertation errors, and unexpected uncatched exceptions.. But that just adds to the experience (and a lot more speed).
g this is nice to read after having started a 4 year study which has java programming as one of the starting courses.

Many do, including the one at our university. Well, it’s not the starting course, it’s actually worse. Students here learn to do imperative programming in Java… That’s right: imperative programming in a fully object oriented language. We learned it in Modula-3, which at least allowed you to do imperative (or linear programming).
It is doubtfull at least to quote the googlefight in the JDJ article. The method is rightly burned to the ground in the comments.
Microsoft buys any succesfull technology, its a monopolist, and that is bad. Many companies use Java, because its platform independent, and the companies together evolve the Java platform. Java is much, MUCH more mature, old java code works always on new versions of java, and its design is really good.
C# Is nothing more than a copy of the java language and is owned by microsoft. If you code in C# then Microsoft dictates you how to use it, and microsoft can in that way maintain its monopoly.
C# is not owned by Microsoft. It’s an ECMA standard (and by now maybe even an ISO standard).