Slashdot Mirror


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."

3 of 93 comments (clear)

  1. My letter to Bob by hardcorejon · · Score: 5, Informative

    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.

  2. mod original article downto 'troll' by cowtamer · · Score: 4, Interesting

    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

  3. Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 4, Interesting

    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.