Welcome!

.NET Authors: Liz McMillan, Mark O'Neill, Peter Silva, Yakov Werde, Matthew Pollicove

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.

Conclusion
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) View Comments

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.


Most Recent Comments
Calvin Austin 08/22/05 03:49:29 PM EDT

@matt It still amazes me that everyone is hung up by the versioning I wrote. There is a real official C# 2.0 which is what I was writing about, it got approved by ECMA before I wrote the article. Just because Microsoft haven't completed shipping .NET 2.0, although you can deploy it live, doesn't mean I was trying to mis-lead anyone. Maybe the question should be why the final release of 2.0 is over a year late?

Matt B 08/20/05 03:26:52 PM EDT

An article that can't even get minor details right such as the differences in versions of the .NET framework and false claims that there are multiple versions of the compilers is such garbage that it shouldn't be taken seriously.

This article/opinion piece has about as much value as a Java vs C# article written by a C# fan with zero knowledge of Java.

Also, is this an opinion piece about how C# is failing to live up to it's promise or how awesome Java is? Most of this article about Java is about C#.

And finally, I don't know what version of MSDN the author is surfing, but claims that C# is ignored in the documentation are ludicrous (although I can't fault the author if he was simply unable to find the content, as MSDN is horribly organized).

Angsuman Chakraborty 08/20/05 01:15:53 AM EDT

@Mike

The "Java is slow" Myth has been debunked over and over and over. This is really really old news. Even you admit it with past-tense in your sentence "was" - " The slowness was not a myth bud". You know it as well as I do that this is a myth which is being perpetuated for FUD factor only.

Check http://www.idiom.com/~zilla/Computer/javaCbenchmark.html

This is a paper from January 2003 (updated in 2004 ) which shows Java has comparable performance with C (which is pretty much the fastest non-assembly language around). It was written by J.P.Lewis and Ulrich Neumann from Computer Graphics and Immersive Technology Lab, University of Southern California.

Recently Java has become even faster with Java SE 5.0 - http://java.sun.com/performance/reference/whitepapers/5.0_performance.html

The paper above discusses real benchmarks and not some micro benchmarks.

Talking of micro-benchmarks here is one - http://www.javaperformancetuning.com/news/qotm028.shtml which shows Java can do computations under 1 second which takes over a month on C, C#, Perl etc.

> As far as the Windows desktop client goes you have to admit in order to have Java be multi platform is loses some of its richness in native support for each platform.

That may theoritically appear to be true; in pratice show me one thing UI wise that you cannot do equally well if not better with Java that you can do with C# etc. Not to mention you have portability across platform, rich set of developer libraries, open access to source code and variety of compilers to choose from :)

BTW: Check SWT from Eclipse project. It may be more to your taste as a UI Library.

Please post further comments on this to my blog http://blog.taragana.com/ or email me: angsuman @ taragana . com as I am finding it hard to keep up with this discussion here, which accounts for my lateness in responding.

Mike Hunsberger 08/19/05 10:36:12 PM EDT

Angsuman... The slowness was not a myth bud. If anything it was something that couldn't really be helped at the time when the Java Virtual machine first appeared. In order to do everything it had to do it needed a whole lot of RAM and at that time RAM was not as cheap as it is now. (I remember Novell's first Java GUI for administering it's directory, it was ugly and so slow to be almost unusable even on server grade hardware)

As far as the Windows desktop client goes you have to admit in order to have Java be multi platform is loses some of its richness in native support for each platform. It has nothing to do with your programming ability...
Obviously things have improved with nice interfaces like the one for Eclipse. Swing apps though have suffered from slow performance and even Java proponents have admitted that over the years....

Calvin Austin 08/19/05 10:20:57 PM EDT

@jeff. I can only iterate what I wrote earlier. You are entitled to disagree with what I wrote, its an opinion after all. However I never put a slur on anyone at Microsoft in my article or otherwise.

The remaining fact is according to the newest Forrester research which prompted my viewpoint, C# has 15% marketshare in the enterprise. If I was at Microsoft I would be disappointed with that result after 5 years and possible hundreds of millions of dollars later. Nothing more, nothing less

Have a nice weekend everyone.

Angsuman Chakraborty 08/19/05 09:56:33 PM EDT

WOW! Lots of trolls in comments.

Java is slow is a myth (read: BIG FAT LIE) perpertrated by the most ignorant only.

> Ask anyone what their experience with Java apps are and they are almost always negative.

I knows literally thousands of people on a prsonal basis using Java on a daily basis and each of them are extremely happy with the language and platform.
I am one of the early adopters of Java (remember 0.5 beta version?) and I have to say I am a very satisfied customer. In fact I wouldn't have it any other way.

Stop spreading FUD.

> At the end of the day if I need a rich Windows client I cannot make one in Java that comes close to C#/.Net.

That shows your lack of capability, not otherwise :(

Best,
Angsuman

Rick 08/19/05 08:50:44 PM EDT

Why don't you have one enveloped yourself too? Its good to look at unfulfilled dreams later

Jeff 08/19/05 08:24:48 PM EDT

Wow, you're arrogant and ignorant! See any blog post showing how wrong you are about pretty much everything.

Calvin Austin 08/19/05 04:19:46 PM EDT

So here is my challenge to those who find this a difficult pill to swallow. Print this article out, put it in an envelope and write on it. "Do not open until 2010" or appropriate date.

Then send me an email ;*)

EdgarSanchez 08/19/05 04:18:13 PM EDT

I understand this is an opinion piece but I would have expected JDJ to check out basic facts on Mr. Austin article. Just a couple of the many un-facts I've spotted:

"There has been a 1.0, 1.1, and 2.0, each which could be counted as a significant version in their own right"

First 1.0 and 1.1 are not significant versions, they are so similar that, at least in our company, we were able to move all of our projects without any change to the source code. Second, 2.0 can't be in the "there has been" category as it is still in beta (solid as it may be, close at production release as it may be).

"The C#, C++, and C compilers are now free, although not obviously as optimized as the professional edition."

What do you mean with "are now free"? They have been free from day zero (along with the framework).

"although not obviously as optimized as the professional edition"? Mr. Austin: *all* the developer products and IDEs based on the .NET Framework use the same compiler, there are not different flavors of the C# compiler (or the C++ or VB.NET compilers, for that matter).

IM 08/19/05 06:41:42 AM EDT

Wow. Are you trolling? I've not seen an article so full of untruths and misrepresentations in a long while.

Biju 08/18/05 08:56:13 PM EDT

My Comment is on the applet.. Flash would do a better job... I was listening to Scott first he said '.net is .not' now he says.u have 2 options Java or .net' and tomorrow will he say 'now we have Janet?'

Mike Hunsberger 08/17/05 11:30:31 PM EDT

Not any more inane than the original article. Ask anyone what their experience with Java apps are and they are almost always negative. Even you have to admit that Java has always been perceived as slow unless you were under a rock. I agree performance has improved but the average machine now has 4 times the RAM. "Like oh that ran great until they converted it to a Java web app". Case in point with a version issue. Compaq (now HP) Insight Manager. It was originally a Windows only app and ran perfectly (used maybe 50meg of RAM). Then they decided to make it a Java/JSP web app. It then suddenly needed 200 M of ram to run, barely worked and only worked with a certain Java version like 1.31. Some Cisco software is the same. If you try using anything newer than a certain version it won't even start. So then you have to find some old version you saved somewhere and install it along side say version 1.5. I have tried to like Java since its inception. I have done both web and desktop programming in Java.(Not EJB I must admit!)Trying to choose between Swing and the other GUI's for desktop, now using JSF for web, there are maybe too many options and complexity(Struts,velocity,TomCat). You can also see I am familiar with the topic. At the end of the day if I need a rich Windows client I cannot make one in Java that comes close to C#/.Net. Admittedly it won't be cross platform but it won't be a vanilla app that doesn't use any strong points of the OS either. I wish cross platform was a real reality with Java with all the best technology and Interface options. I would be using it for everything cause it would save me a lot of time and energy. Unfortunatly thats not the case. OK I'll stop here cause I don't want to write a book... Believe me I wish Java all the luck in the world... :D

Angsuman Chakraborty 08/17/05 10:53:50 PM EDT

@Mike

Your inane comments on usability is probably attributable to your inexperience with Java. It is very much usable and has been so for many years.

> you need 10 different versions loaded at once one for every app

It make less and less sense of what you are speaking. Clarify if you can.

In my ten years with Java I haven't seen any such situations.

You are right. You are spreading lots of FUD without any logic to backup.

Speaking of FUD I thought it was invented in Redmond :)

Best,
Angsuman

Mike Hunsberger 08/17/05 05:20:53 PM EDT

Java... more than ten years old and almost usable, still slow with plain looking GUI's as a cross platform feature... compatability forget it you need 10 different versions loaded at once one for every app. FUD FUD more FUD

Calvin Austin 08/17/05 02:24:22 PM EDT

First thanks for reading JDJ, we appreciate it. You are of course entitled to disagree with my opinion, it is an opinion after all :*)

If you are using C# then good for you, I know some of the Microsoft Visual product team and they are smart guys.

However as Angsuman wrote C# was over-promised in 2000, maybe the headlines should have read, in 5 years time some users who use C/C++ will now be using C# in the real world. Fair?

Mike Schellenberger 08/17/05 01:10:31 PM EDT

Open your eyes man.....the party is just getting started in the real word.

Angsuman Chakraborty 08/17/05 09:47:54 AM EDT

I blogged about this article and the issues it raises in details - http://blog.taragana.com/index.php/archive/is-c-microsoft-developed-prop...

Jane Doe 08/17/05 09:35:46 AM EDT

Well Calvin works for SpikeSource now, which is one of the new open source churches, so he got brain washed with the "I hate Microsoft" religion. He can't see things from an objective angle anymore. It's now a religious war.

Arthur Gerav 08/17/05 09:24:02 AM EDT

Mr. Austin, we JDJ readers deserve a fair competitive yet less subjective article. Try harder next time.

John Doe 08/16/05 11:29:30 PM EDT

I guess if I write a biased-somewhat-unaccurate article about [choose any Java language competitor] it would be also published on JDJ.

Richard Brantley 08/16/05 04:22:25 PM EDT

C# is doing very well in the environments you would expect: MS shops.

I am the IT Veep for a marketing company; a friend of mine works for a consultancy. What we're seeing is a working environment divided into two camps: J2EE and .NET.

If C# is a failure, why are so many job descriptions asking for it?

Hate to break it to ya, but to those MS shops, being cross-platform doesn't matter to them.

With the exception of some Python used for batch scripting, C# works for us just fine.

At the end of the day, the .NET framework is the value proposition, not the language. I'd write in Python if I could use the framework libraries, but that just isn't there yet.

Calvin Austin 08/16/05 12:57:47 PM EDT

If I had to name my #1 reason why C# has failed to live up to the expectations for it back in 2000 is it was created for all the wrong reasons.

Ruby, PHP, python in my opinion were all designed to solve a developers problem and not a companies problem. C# came out of time when there were concerns with Visual Basic migration, C++ defections and the growth of open source frameworks.

For developers we are are consistently reminded that C# and .NET are to be treated as one and the same, even Dino can't fail to mention .NET when commenting on C# (just out of habit I guess, and I'm sure I mentioned .NET just once or twice). Why can't C# stand on its own merits for once, or is it a language that is only useful with .NET?

.NET News Desk 08/16/05 06:07:59 AM EDT

Dino Chiesa Responds To Calvin Austin On "C#: Is the Party Over?"

Mike Hunsberger 08/15/05 05:30:43 PM EDT

If there is one thing that makes me laugh its some Java zealot predicting the end of C#. What a hoot.
Anyway, C# is alive and well out here bud. Next you'll say Windows XP is dead and Sun Java desktop will be on 90% of desktops. I'll be laughing then too...

Yakov Fain 08/12/05 10:32:15 AM EDT

Hey Joshua,

I don't care if C# is good or bad, but that applet rocks!

Joshua Smith 08/12/05 09:43:18 AM EDT

In the area my company serves -- 3D visualization -- the other client technologies you mention don't come close to providing the richness required. Have a look at this: http://www.kaon.com/3DCatalog.html

That is a Java 1.1 applet. It works on all browsers, all operating systems.

As for the question "who cares about cross-platform", the answer is pretty much every software architect, CTO, and CIO. The issue isn't being able to run your app on multiple platforms (which is nice to have, but often not a requirement). Rather, it is having the freedom to change platform when you need to. You might start out deployed on Windows Servers and then, for cost reasons, decide to switch to Linux. (Or vice-versa, depending on who's TCO numbers you believe.) Being able to do that without having to re-code your applications is crucial.

Mark Stewart 08/12/05 09:01:19 AM EDT

Who cares about cross-platform, it has nothing to do with how great C# really is. Much better than Java, hands down.

I wouldn't refer to applets as "rich". They were cool back in the 90's, but are useless today. Why would MS duplicate an old technology like applets? DHTML, Flash and even AJAX is more than enough "richness", and all you need.

C# is absolutely a replacement for Java, and a good one at that. The adoption rate of C# is steadily increasing as developers discover the better features and syntax of C#. And don't forget that VB is still a hugely popular language and developers don't switch languages over night.

Joshua Smith 08/12/05 08:34:29 AM EDT

I attribute the luke-warm success of C# to two major factors:

1) It is not a cross-platform solution. (Mono notwithstanding; to be really cross-platform, MS would have to be producing versions of the runtime for both Linux and Mac, and keeping those up-to-date.)

2) There is no easy way to use it to create rich clients. This is just stupidity on MS's part, since the CLR has a security sandbox similar to Java's. In fact, the very first version of .NET would run applets (they called them "Windows Forms" applications) without difficulty. But then they locked down the security settings, making it next to impossible to deploy rich clients in heterogeneous networks.

The result is that .NET is just a substitute for C++, not a substitue for Java. And given the huge C++ code base people working on Windows software are starting with, it makes no sense for them to switch.