C# To Crush Java?
Hector73 writes: "Cringely predicts that C# will blow away Java in the upcoming
years. He raises some good points, but fails to differentiate between
client-side Java vs server-side Java. I believe the bells have
tolled for SWING, but server-side Java is holding strong."
But I'll bite anyway :)
Java became popular in the first place because:
1) there was a genuine need for a truly cross-platform language that had built in graphics, networking, etc. (no matter how bloated or buggy)
2) SUN set up indoctrination camps for IT managers and marketed the heck out of Java
3) SUN bribed colleges into teaching Java
(My school had dropped C/C++ completely in 1997. All the computer labs are donated by Sun)
No matter how dominant Microsoft is, I just don't see them doing what SUN did with Java and getting the same mileage. At best, they will manage to replace Visual Basic. Why would a sane (non-MS)development shop switch to a Windows-only language from something that is cross-platform? What will C# buy me that Java/C++/Visual Basic does not?
Of course, if C# does (by some cruel twist of fate) become dominant, I would _hate_ to see what the average programmer looks like in 10 years. The _average_ "Java programmer" already acts like a brain-washed zombie posessing no problem-solving skills other than using existing Java APIs. Just imagine a world populated by the Microsoft Centric version of the same breed...
"Java is a peculiar mixture of hype and sound technology"
--overheard at a CS colloquium circa 1997
Since you're obviously one of the open source advocates who hang's out on /. (I'm not really complaining, often I am too), I just have to point out that Java and/or Sun is not open source. Sure, I can look at the source for the API, and I can file a request for enhancement, or if I'm a big company I can even have some input on the language itself. And many Java projects also happen to be Open Source. But Java is not open source. I think at least some of its appeal, however, is that it is also not Microsoft.
Java hasn't been that successful for writing the kinds of software that users think about (games, word processors, etc...)
But, it's been hugely successful in writing the kinds of software that businesses think about. (Servers, messaging, etc...) Java is excellent for writing middleware services, as a back-end to web pages, and the things that actually run a company day-to-day.
Java isn't perfect, but it's good on the server. You can develop on cheap windows workstations and deploy the code (without recompiling) on your Sun servers. It's got APIs to connect to all the important databases and other stuff that makes your business go.
Sure, it's not as fast as C. A decade ago people were still complaining that C was not as fast as assembly. In business, execution speed takes a back seat to development speed and ease of mainenance. If you're a project manager, you need to get whizbang feature X added as soon as possible, and anything that lets your developers get it up and running sooner is pure gold! Java meets this need. It's got API's for what you need, so what if they're only "good-enough". There is no time-sapping cross-platform modifications.
I'm not a java zealot. If I had my way, we'd be moving to more dynamic languages like Python. But the people who think that java is all about crusty Swing apps are dead wrong.
Let's keep a few things straight... Shall we? Oh, I think we shall.
First.. Cringely is a moron. In fact, he's not even the *first* Cringely! He's to tech journalism what the Dread Pirate Roberts in the Princess Bride is to that whole story line! He's a buffoon who took the name from the *previous* Robert X Cringely (and he's either the 4th or 5th RXC the last time I counted). He has no real background in computers and is *hardly* qualified to comment on anything tech related, forget about commenting on languages. Hell, I wouldn't be surprised if he won't the right to take over the name in a poker game over a few (dozen) beers.
Next.. Let's talk about the creator of C#, Anders.. aka the near killer of Borland Pascal. This guy doesn't have a CLUE about what makes object-oriented languages truly functional. And perfect examples *include* Delphi and C#. Delphi is finally becoming a 'real' OO language *since* his exit from Borland. And what does he do when he first get's to Microsoft? He makes ANOTHER Delphi - including all it's early shortcomings as a developing language, but changes the Pascal syntax for C syntax. The end result is a language (based on C) that is effectively castrated of it's most graceful and useful (C-specific) features. Ander's did you learn nothing from your years at Borland?
Also, how in the name of hell is C# (a Windows-only compiler at this time) going to EVER enter the Java (cross platform) space?? The answer is simply, it won't. No one is going to write a free C# compiler just for Linux and Solaris and with Java available in those platforms already C# is going to have an uphill battle (to say the very least).
Next - and you people who keep saying this either don't use Java or read the Microsoft websites too much - SWING IS NOT DEAD! Swing has more commercial applications written in it now than ever (JBuilder, AppGen, and basically everything from TogetherSoft is just the tip of the iceberg and are just to name a few). Now I'm *terribly sorry* if Java has pump a crimp in your plans to take over the world with Visual Basic, but now it's time to learn a REAL language and use REAL tools to develop REAL applications. Not a damn OLE automation controller with a half-ass scripting language.
Polymorphism -- It's what you make of it.