Recently, I've been airing Java's dirty laundry. Some folks took my position that Java was trailing .Net technically to mean that I thought .Net was winning. Nothing of the kind -- in a number of important ways, .Net is a failure.
Think back a decade or so ago. As you may recall, .Net was supposed to be much more than just the next version of Windows DNA or COM+ or COM. It was supposed to destroy Java, extend the Windows platform, and secure the Microsoft monopoly for another decade or two.
[ Also on InfoWorld: Java faces tough climb to catch up to .Net. | For the tips and trends programmers need to know, download InfoWorld's Developers' Survival Guide. | Get a quick, smart take on the news you'll be talking about in InfoWorld TechBrief -- subscribe today. ]
Microsoft did many things right. It hired the smartest experts on language design, compilers, and virtual machines. But it also did some things terribly wrong.
Let's start with marketing. Microsoft overextended the .Net brand and stamped it on everything. At one point Windows Server was going to have .Net emblazoned on it, which led many people to wonder what the heck .Net was supposed to mean anyway.
At first, Microsoft made .Net an optional download. People were as excited to download the fat .Net VM full of delicious, possibly conflicting DLLs as they were to download a gigantic Java virtual machine.
Embrace, extend, flop
Like many Microsoft "innovations," .Net was a copy (embrace) and improvement (extend) of someone else's technology -- in this case, Java. Microsoft sought to extinguish Java by being a better Java; in a number of ways, it succeeded. C# cleaned up some Java mistakes, such as checked exceptions, the need to create an accessor, and mutator methods. The .Net VM had a cleaner bytecode setup.
Plus, .Net solved Microsoft's problems. At the time, Microsoft developers were dealing with more than one flavor of Windows and multiple versions, but .Net gave them a common way to code and less to worry about.
Unfortunately, .Net also cannibalized Microsoft's most successful corporate IT development environment, Visual Basic. Look at Indeed's Job Trends, Tiobe, and so on, and you'll notice that .Net's rise is all about Visual Basic's decline. There isn't a lot of correlation between .Net trends and Java's bumps and bends.
Visual Basic .Net didn't have much to recommend it. There wasn't enough documentation, so you had to learn C# anyhow. The API was the same between them, so why not just stick with C#? The corollary was that once you figured out C#, you also knew Java.