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."
Perhaps CSharp will surpass Java in the hearts and minds of programmers in the years to come...? _Perhaps_!
Basically the only reasons this article gives for this supposed eventuality is: "Java" is "bulky, slow, and buggy." and "Now Java just plain feels old."
And then the author has the audacity to say, "Sun is giving up, descending to name-calling."
Just some more FUD. Nothing to see here. Move along.
As well many companies that are using Java are doing so primarly because it is portable. C# lacks that feature.
We all know that Microsoft make great marketing solutions. Sometimes, these are even really great products. But the key point here is, as Cringley said, microsoft will market C# better than Sun did Java. And because it is marketed better it will get mindshare. And once it gets mindshare, it will get marketshare. One step at a time...
However, C# is still windows centric. To a lot of people this means diddly squat. If it allows you to work more easily to your target platform, then people will use it. Witness the success of Visual Basic as proof. And that thing is a cow if you ever have to maintain the "code" that gets produced with it.
This is not all bad news however. Despite the success of VB, there is still a "niche" market for C programmers. Just as there will be for Java programmers. And the split will go roughly the same way I think. On non-microsoft and server platforms Java will continue to be used. On the "frontend" microsoft boxes then C# will become the new Visual Basic...
And sure, we "profressionals" will deride these "sellouts", and pretend that we are somehow superiour. But in reality, it is just people using the most appropiate tools for the job at hand.
Here's an email I sent to Bob. He used to do decent writing for InfoWorld - is that what happens when you get on the public dole?
:)
Hi Bob,
I've enjoyed reading many of your columns over the years, but you really seemed to have missed the mark in the Java/C# battle, if it can even be called that.
A few problems with C# world domination:
1. C# Apps are tied to Windows, Windows, Windows. While this is fine and wonderful for windows developers, there are thousands of UNIX/Mac/mainframe/PalmOS/etc developers out there that will be left high and dry. And let's not forget, Java runs on everything from mainframes to smart cards.
2. The "Java is slow" myth. More recent JVMs can actually perform as well as or BETTER than natively compiled code. This is because they do just-in-time compilation, making the Java code as fast as native machine code.
Also, there is only so much optimization the compiler can do when you compile a program, having no idea how it will actually be used when it is run. At runtime, there is a lot more information available to the system as to what parts of the code are the real bottlenecks. Recent Java implementations employ *dynamic* runtime optimizations, where parts of the program that run more frequently are actually recompiled in an optimized manner to improve performance.
These dynamic optimization schemes are a very exciting new field for compiler and virtual machine engineers - and they are totally lacking from poor old statically compiled C#. The very way that C# gets compiled ties you to Windows, so dynamic optimization of running C# code will be all but impossible to implement. In the long run, Java has the potential to seriously outperform all statically compiled languages.
3. Java is open. Sun develops Java APIs and technologies in conjunction with hundreds of other companies and individuals around the world. Anyone in the world can implement most Java APIs without paying Sun a dime (now if you want that little coffee logo on your product, that's a different story, the make you pay for interoperability test for that).
While Microsoft seems willing to "standardize" C#, they will probably open up the language itself while holding the runtime libraries close to the vest. Imagine: what good would C have been if the standard C runtime libraries were vendor-specific? What this means for developers is a single-vendor solution, just like Windows.
A large part of Java's success comes from the fact that you can put together applications by mixing and matching pieces from multiple vendors and be guaranteed easy interoperability. For example, you can build an ecommerce website by buying a Servlet engine from Allaire, an EJB app server from BEA, and Java database drivers from Oracle - and they will all work FINE together - AND you can pick any kind of hardware and operating system! Want your developers to work in Windows, but deploy the app on UNIX? No problem. Want to upgrade from your Intel-based Dell servers to Sun's new 64-CPU UltraSPARC machine? Your code requires NO changes! You don't even need to recompile it, because Java is not statically compiled!
What's Microsoft's answer to this? Run everything Microsoft: ASP, IIS, ADO, etc. Develop the app on Windows. Deploy the app on Windows. Stay with Windows forever, and hope Microsoft is good about fixing the plethora of bugs and security holes that will inevitably arise. With C#, who will supply the runtime libraries? The clustering and high availability support? The windowing toolkit? Microsoft, Microsoft, Microsoft.
Developers have learned long ago that single-vendor lock-in solutions are a recipe for disaster. If you can't swap out a buggy piece with a functionally correct one from a different vendor, you're tied to the poor-quality vendor (like Microsoft).
Do not discount Java simply because you don't see lots of consumer applications written in Java. Java has serious momentum on the server side, where interoperability, distributed computing, and high availability make Microsoft-centric solutions very problematic.
I could give more technical with reasons why C# applications will be inherently more unstable than theit Java counterparts (access to pointers and raw memory, unchecked exceptions are legal, Microsoft-grade security, etc.) but I think I might lose you
So the moral of the story is: do some better research before you write a hype-filled article like you just did - a column that is so misinformed belongs on ZDNet, not PBS.
Cheers,
- jonathan.
I agree. Microsoft has put a huge ammount of effort into developing a quality platform in .NET, and they are betting the farm (or at least appearing to do so) on .NET. Certainly if .NET flops MS will lose face, and lots of money, but I don't really see the success or failure of .NET affecting their core monopolies. Windows and Office. I see this as MS's attempt at condsolodating their stock in the server arena, which is where other vendors like Oracle and Sun have been traditionally strong. Server-side Java rocks, and that's where MS is attacking.
The biggest problem with this article is that it is making the assumption that java has a strong hold in the market. The fact of the matter is, java is not being used extensive in commerical software and is being used as mainly a GUI abstraction layer in properitery software.
Many people hear that this company is using java and that company is using java, but the fact of the matter is that while java is being used, most of the code in products still remains C and C++ or another such language.
Java is not something that is a silver bullet language. It is a niche language.
int func(int a);
func((b += 3, b));
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
Sun is excellent at computer plumbing, and has the track record to back it up.
Microsoft has dominiated the eye balls of the end-user and they too have the track record to back it up.
C# vs Java is a race for volume, just as IE and Netscape was a race for volume. This race won't turn out the same way though because game has changed
And that game is Open Source. Open Source is the wild card in this battle. Without Open Source, I believe Microsoft would win in short order.
qbalus
Honestly, I don't know this Cringley guy from Adam, but I don't see any reason to give him credibility. I mean, the link goes through PBS. Now, PBS is considered a good source for relatively unbiased information, but they are -not- exactly considered a major powerhouse when it comes to reporting on current events, technical or not.
my sig's at the bottom of the page.
Witness also the .Net
;-)
latest cracks in the friendship
between SAP and Microsoft wether or not, they'll
support
Big things are coming
Windows 2000 - from the guys who brought us edlin
SWING is not dead. The early versions were terrible and slow, but under Java 1.3 and later its a pretty reasonable GUI. Java on the client side has been slow on the uptake, but the apps are starting to appear.
J2EE
.NET can come up with.
C# has nothing that can compair to J2EE. The bonus' you get with J2EE in a large-scale system will easily destroy anything
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
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.
It seems that once again we have solid evidence of a M$ AstroTurfer. This time on the Java.Sun.Com Advanced Languages discussion board. Apparently the Author of a C# book, advocating the article, advocating the book, advocating the technology.
e .h tm
1
9 0/ ref=ase_genamics/102-2503511-3184958
http://genamics.com/developer/csharp_comparativ
http://forum.java.sun.com/profile.jsp?user=9855
http://www.amazon.com/exec/obidos/ASIN/05960007
For the future of Java look to mac OS X, seriously on OS X Java runs speedy with a native interface even for programs in SWING. Also cocoa can be programed in java and the programs are pretty good although I prefer Obj-C over java. Trust me it will mature and eventually for many simpler user apps it will be the correct thing to use as it is write once run anywhere.
Neither Java nor C# are Open standards. C, C++, Perl take your pick, are Open languages. Don't confuse runs anywhere with Open. OSI, ANSI or some other .ORG must own the standard for it to be considered open.
Microsoft will spend whatever it takes, take as many revs as the market requires, for C# to become the dominant programming language in the world. What other high tech company can be described as being willing to behave that way right now? Would Apple, Sun, Oracle, even IBM spend WHATEVER IT TAKES to accomplish ANYTHING?
IBM has commited to spending $1 Billion on Linux this year. That is not "WHATEVER IT TAKES", it's merely $1 Billion. Chump change.
When VPNs are outlawed, only outlaws have VPNs.
Uh, .net/COM employs a stateless model that can be scaled by slapping more servers onto the network. Need 512 CPUs? Go buy 64 8-ways from HPaq or Dell.
Dunno about you folks - but after working with C# for a few months now the C# environment on MS Platforms is everything I wished Java was and more (snappy UI's, super-easy access to the platform,, full support for services and the like, and a great deployment model). I've been _struggling_ for 5 years to get Java to do half as much and frankly gave up on the freggin' language 3 years ago.
BTW, has anyone actually programmed a large app in Swing? Talk about a bloated piece 'o memory hoggin' crap - the object happy leftovers from Taligent that they hired couldn't figure out how to create a memory efficient and snappy system if you gave them 20 years. Pure object API's are nice, but paying close attention to dataflow and bloat are better.
Now server side will be another issue, but the GUI/Client interactive App war is over.
Big thanks to Bill Joy and the boys in Scott's funny farm for getting the ball rolling. Sorry to see you pass the ball to Redmond.
Why use server side java when there are other cross-platform languages available. Isn't java still a bit slow? I'm honestly curious, I haven't used java in a while.
I do like java somewhat, and I hope it stays around for me to use it again someday.
AC - because I'm at the library and don't want to log in...
I have used Java extensively. I will be using .NET for a very large project. Here is my take:
There are several similarities between the JVM and the CLR 1) Both are bytecode oriented 2) Several languages compile into their respective bytecodes 3) They can be ported to various hardware platforms and OSes.
Java was developed in order to achieve hardware and OS independence.
I think that Microsoft developed the CLR in order to provide a uniform environment for the execution of programs written in various languages - FoxPro, C#, VB.NET. The software platform is probably going to remain Windows because Windows is one of Microsoft's cash cows.
In other words, Java is meant to be platform independent, and C# is meant to be Windows only.
This would mean that the CLR based languages will replace languages that have traditionally been used for application development on the Windows platforms - Visual Basic etc. I dont think Java figures in this list because most developers who write Windows-only apps prefer Visual Basic, Visual C++ etc.
Therefore, I believe Java and C# target different segments of the developer market. There is no reason to conclude that they cannot co-exist.
Nice theory, but there's never been anything to show it works.
And where are you going to vent the megawatts of heat produced? Where are you going to put the server rooms that you'll need to run just one lame "Hello, World?" And what are you going to do if your networking medium dies (as many BOFHs the world round are wont to make it do)? And, finally, what will you do when the next Nimda, Sircam, or Magistr makes its rounds, wipes 64 production servers, and necessitates days of downtime?
Thanks for the insight, but I'd rather put all my eggs in 2 *big* steel baskets rather than 64 small ones made of tissue paper.
Want Linux games? HERE.
there is no thing
what else could you want?
If C# is going to blow away JAVA why Micro$oft
invented J# ???
Mr. Cringely claims Java is slow and buggy. I think he's mistaking the Swing libraries for the whole of Java. I concede that this applies to Swing and to Java on the client-side, but server-side Java (J2EE) continues to grow strongly.
.NET route.
In the St. Louis area alone, I know of several large organizations that have bet the ranch on Java and J2EE; to name a few, Mastercard, AG Edwards & Sons, Enterprise Rent-A-Car. I could go on. I am not aware of a single large organization that is going the C# and
Nor do I know of a single developer who thinks that C# is anything other than a knock-off of Java. All choose to invest personal time and energy enhancing their Java skills.
I work as a consultant with Java based and MS based projects. I think C# is a good language as it allows developers to move between the two systems and take their knowledge with them. If you become proficient in one, you can work with the other in a very short time. It has to be good news for programmers.
Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated up.
For those of you that seem to think Java is on it's way out the door; have you tried to perform a job search lately? When I seached on monster.com, techies.com and several other local (MN) sites, the positions for Java developers outnumbered any other language at least 3 to 1 (VB being the closest). People seem to be limiting their thinking to shrink wrapped products where Java is rather scarce. However, Java is most definitely the standard for Enterprise applications, and that is where the money is. I have been involved in many deals where fortune 500 companies are willing to pay upwards of 1.5 million dollars for Java applications and almost always run them on Unix. Such companies have invested so much money in Java, that I don't see them adopting .NET anytime soon.
C# is Eiffel with Java Syntax.
--
Anonymous Coward
It may come from Microsoft, but much of the team behind it are Borland and just because MS is behind it isn't a kiss of death. Personally, I stopped getting religious about languages afer Algol was shoved down my throat at Uni. They all have their pluses and minuses. Java is under the thumb of Sun whereas MS want to get C# adopted by a standard's body. For me, that is a big plus.
A free C# compiler is in development now. It can't bootstrap itself yet, but it is getting there, however it is being built on Linux and should be out soonish. MS don't support the effort, of course but if they make a language public, it will get adopted. Miguel de Icaza, the lead developer of Mono doesn't seem to worry about MS.
See my journal, I write things there