Java Authors: Elizabeth White, Pat Romanski, Liz McMillan, Adrian Bridgwater, Kevin Benedict

Related Topics: Java

Java: Article

C#: Is the Party Over?

Five years later what do we see? The .NET platform has been under constant development

(March 13, 2006) - One of my tasks at Sun was to keep abreast of the technologies in the marketplace that competed with Java. At certain points in the release we would summarize where we were compared to other technologies and, if necessary, focus on areas where we could improve.

The biggest unknown at the start of my last project was C# and .NET. I heard through the grapevine that a project from Microsoft, known as "Cool," was on its way, a project that was the forerunner to C#. However, it was less than a year before the Java 5 project started that both those technologies were publicly announced.

Five years later what do we see? The .NET platform has been under constant development, often too fast for many corporate users to adopt. There has been a 1.0, 1.1, and 2.0, each which could be counted as a significant version in their own right. Following the churn of the .NET SDK, the Visual Studio product has required its own aggressive update schedule, although when comparing feature lists, C# is not singled out for any special attention on Visual Studio's Web pages. Looking at the forums, Visual C++ and Visual Basic and not C# attract the lion's share of the forum attention. In addition, the underground community site, gotdotnet.org, has undergone significant site and management changes. Given that C# hasn't necessarily been the instant success that many thought it would have been, it hasn't been for lack of trying. The MSDN site has adopted many of the best practices used on other developer Web sites. You can now read and vote on C# bugs and submit suggestions among other community-building initiatives. The C#, C++, and C compilers are now free, although not obviously as optimized as the professional edition. While C# has gained some traction in those years, why didn't it make the grade?

Java Didn't Stand Still
The first reason I can attribute to C#'s struggle is that the Java platform did not stand still. Many of the benefits that the Java platform delivered were not solved by moving to C#, the most significant difference being OS independence. While C# was in rapid release mode, the Java platform was able to fine-tune the language and at the same time invest heavily in stability and scalability. At an application level, the differences are even more marked. Deploying a .NET service leaves a company a small choice of application servers and OS versions. The reverse is true of Java and J2EE, where there were almost too many J2EE application servers to choose from. The market has now moved to an open source J2EE application server model, which brings me to my next point: the open source movement.

Open Source Changes Everything
The momentum of the open source movement has often been documented as being a threat to the proprietary software market, yet at the same time analysts have questioned the validity of a never-ending supply of free labor. The truth is somewhere in between. While developers had to get budget approval for MSDN licenses, their Java colleagues were able to deploy a system for free. Now with the advent of a new crop of open source J2EE application servers to follow JBoss, the justification for a team to spend thousands of dollars on basic development tools becomes harder, especially if it means a choice between deciding on a new laptop and a renewal of your existing desktop tools.

The growth of open source Java hasn't stopped there. You only have to look at Hibernate, the Spring Framework, and Struts/Shale to see that developers can work together to solve their own problems. Being open source doesn't necessarily mean those developers have to work for free; however; it does provide a way for individuals and companies to work together without being restricted by working group policies or internal company politics.

The Mono project, which aims to provide an open source implementation of C# and .NET, has also been around for four years now and is now part of Novell. Providing the compiler is only part of the challenge. The .NET platform uses many Windows services that until Mono started didn't even exist on Linux. Microsoft has awoken to the open source movement; how much they will help Mono is yet to be seen. Mono today is still a development project much as .NET is still looking for full traction.

Is the C# party over? If the plan of C# was to slow the defection of Visual C++ developers to Java, then it was certainly better than nothing. The long-term savings for Microsoft in sharing a CLR between projects was more than worth the initial effort. However, C# is still not the de facto choice for Web site or enterprise development and other languages such as Python and PHP, which are bringing in a new generation of developers who don't have a need to migrate Visual C++ applications. C# isn't going anywhere soon but its best days may be behind it.

More Stories By Calvin Austin

A section editor of JDJ since June 2004, Calvin Austin is an engineer at SpikeSource.com. He previously led the J2SE 5.0 release at Sun Microsystems and also led Sun's Java on Linux port.

Comments (79)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.