7-02-03 Java vs. .NET
- Which platform i.e. .NET or Java is going to dominate in next 3-4 years?
There are two factors here: Java has a large, passionate following of people who
have spent enough time with the language to know it well. It has generally
served them well -- at least for server-side programming and for some desktop
application programming. And Java is cross-platform, something which continues
to grow in importance as Linux becomes more popular and since Apple has gone to
OSX (and now, finally, supports Java -- quite well, as it turns out).
The second factor is that Microsoft still dominates the desktop. Lots of
people who used to adore Microsoft now don't, but they still use it. If you were
trying to create a product that you wanted to sell a lot of, you'd be crazy not
to at least make it work under Windows. Yes, Java will work under Windows, but
it looks different enough that it might scare some people off.
And C# is nothing to sneeze at (precisely what I did when I first saw it,
primarily based on Microsoft's past performance implementing the C++ standard,
which was nothing short of abominable). C# is the best thing Microsoft has done
in the language arena -- very well thought-out and architected. I'd have to say,
strictly from a business standpoint, if I were creating a product that I was
basing the company on, I would seriously consider writing it in C# (at least,
when the next MS Windows looks more imminent, since in theory it will have the
.NET runtime built in).
There's no question that C# is the first real competition Java has seen, and
already Sun has started to respond to this. JDK 1.5 will have features that are
clearly inspired directly from C#. At Java One they announced some kind of new
desktop development system where they want to make the creation of GUI desktop
apps easier than VB. Based on this response, I can say that C# will do nothing
but good for Java. In addition, IBM's Eclipse
development environment provides a
competetive alternative for Visual Studio and their SWT provides a more native
GUI look-and-feel than does Swing, so you have the option to create something
that won't look so unfamiliar to users.
All that I've said here just indicates that there will be no clear winner
right away. There's going to be a battle (or a war), but in the best sense of
the word: both companies will be fighting to do things to attract programmers,
and that means trying to make your life as easy as possible. The best possible
outcome will be that both languages/platforms stay in the game and that this
battle continues. You may wonder how Java/Sun can win against Microsoft, but
keep this in mind: IBM puts roughly 10 times the money into Java per year that
Sun does. Even if Sun can't come up with a new, insightful business plan (see Robert Cringely's
discussion of this) and goes under, IBM will take the helm and continue to
support and promote Java. So the battle will continue, to our benefit, and in
the end I think you'll be able to choose the language you want depending on what
you need.