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

93 comments

  1. What a crock of crap! by manyoso · · Score: 2, Insightful

    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.

    1. Re:What a crock of crap! by Anonymous Coward · · Score: 1, Insightful

      I'm a software developer. I worked with Java for a few months. I know that this is not a lot, and I don't claim to be an expert in Java.

      Frankly, I strongly dislike Java. Why?

      Java is a simplified C++. This is a very good thing.

      Unfortunately, they have removed way too many useful features of C++. Features which may seem useless to academics and idealists, but which are useful in the real world.

      C# designers did not make the same mistake. They did not remove as many C++ features as the Java designers did. They also ADDED some useful features like properties, etc.

      I have worked very little with C# (mainly due to being busy with other projects), and I instantly liked it.

      Compared to Java, C# is a more feature-rich language.

      I like C# a lot more than Java.

      I almost like it as much as Python, which is my favorite language.

  2. Not Likely. by fava · · Score: 3, Insightful
    One thing you must remember before writing Java off compleatly is that Java is the language being taught to most University CS students, I cannot see all these recent graduates deciding to abandon Java in favor of C#.

    As well many companies that are using Java are doing so primarly because it is portable. C# lacks that feature.

    1. Re:Not Likely. by Anonymous Coward · · Score: 0

      C# is portable to 90% of all desktop systems. Java offers no advantage there.

    2. Re:Not Likely. by Hector73 · · Score: 3, Insightful

      One thing you must remember before writing Java off compleatly is that Java is the language being taught to most University CS students

      So was PASCAL ...

    3. Re:Not Likely. by Anonymous Coward · · Score: 0

      It's still C++ that's most widely taught.

    4. Re:Not Likely. by ayjay29 · · Score: 1

      No, C# requires the .NET runtime to be installed on top of Windows. So I think C# will not run on 99.99% of desktops at the moment...

      --
      Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated up.
    5. Re:Not Likely. by SylvesterTheCat · · Score: 1

      > I cannot see all these recent graduates deciding to abandon Java in favor of C#.

      Since when do 'recent graduates' control what language they use on their first/second jobs?

      They will program in whatever language they are told to use, period.

  3. At the risk of stating the obvious.... by pwagland · · Score: 3, Insightful

    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.

    1. Re:At the risk of stating the obvious.... by big_hairy_mama · · Score: 2, Insightful

      Visual Basic is ugly, and always has been. But there are already millions of Java programmers, most of whom took up Java because a) it's an easy language and they wanted to move away from VB, b) they like its cross platform capabilities, or c) they like its cross platform capabilities because they don't like Microsoft (see (a)).

      I remember reading another /. article saying that Java was poised to become even more dominant than C/C++. Many of these Java developers probably took it up so that they could program web-based applets and such. And the reason why Java is a great web/applet platform is because of its cross platform nature. Are these people going to switch to C# all of a sudden? It defeats the original purpose of applets and Java.
      So how is Microsoft going to switch all of these people? Mostly, I think it will be people who say "I like Microsoft, I like Java, and I like VB (ant want to re-use my old code); let's combine them all." But the number of people who want this, is, from my viewpoint, much less than the number of people who want to stay away from old buggy VB code and proprietary solutions.

      So in summary, I think C# is the one that will have a "niche" market, and Java will be (and already is) far more mainstream.

    2. Re:At the risk of stating the obvious.... by Anonymous Coward · · Score: 0

      i think youre wrong. why ? because C# IS Java. Yep. there are minimal differences. but can i take a piece of java code, run it thru a simply search and replace in a text editor and compile it as a C# program ? yup. its so close its scary.

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

    1. Re:My letter to Bob by mooneyd · · Score: 3, Informative

      Regarding Point 2: C# compiles to something like byte codes and can be either run interpretted, compiled just-in-time, compiled at install-time OR compiled at build-time. In fact, all .NET languages have these features. So not just C#, but all .NET languages (VB, C++, and for goodness sake Eiffel and everything else) will have the opportunity for the same dynamic compilation hoo-hah that Java is now enjoying.

    2. Re:My letter to Bob by mooneyd · · Score: 2, Insightful

      Oh and regarding point 3: All .NET programs will run on all platforms which have a CLR (Command Language Runtime) available - kind of like... err.. exactly like a JVM. When .NET is released, CLRs will be available for Windows 98, ME, NT4, 2K, and XP which covers what percentage of computers in the world? Probably something close to the number of platforms available when JAVA was first released.

      Once .NET is understood it is easy to see that the architecture is extremely similar to JAVA while learning from some of JAVA's mistakes.

    3. Re:My letter to Bob by Anonymous Coward · · Score: 1, Insightful
      Providing a CLR for most common versions of Windows still doesn't come close to being enough. .NET won't run on the platforms that run most of the interet. There is no version of Windows running on 512 CPU servers.


      Of course it's not often you need to run on the big servers, but for two comparable platforms (Java/.NET) you pick the one that can scale the best. The NET platform don't offer anything that Java doesn't already provide.


      Oh and Apple has something like 5% of the PC's out there and that is still a huge number of computers.

    4. Re:My letter to Bob by OmegaDan · · Score: 2

      Its widely known that JIT compilers can only reach about 30% of the host-native speed due to the branch perdiction problem ...

      In no case will it be"as fast" then native code

    5. Re:My letter to Bob by luttapi · · Score: 2, Informative

      Take a look at this http://www.go-mono.com

      quoting from that site: "...A rough estimate is that we might be able to run our C# compiler on Linux by the end of the year. That means running the Windows Executable generated by a Microsoft .NET compiler on the Linux platform."

    6. Re:My letter to Bob by ban · · Score: 3, Insightful

      I may be completely stupid but I happen to work at a company that is developing a server side VM for Java and I really don't understand what you mean with "the branch prediction problem".

      Are you assuming that static compilers do some kind of interprocedural or whole program analysis? This is normally not the case.

      Do you think that you can't do inlining or method specialization where you take runtime information into account in a JIT? You definitely can.

      Our VM does advanced optimizations at runtime that amongst other things take single implementations of methods into account. These optimizations can be undone at runtime when new classes are loaded that invalidate the assumptions that the optimizations are based upon.

      This means that you won't do virtual dispatches to methods that only have a single implementation.

      Try to do that with a static compiler for a dynamic language.

    7. Re:My letter to Bob by big_hairy_mama · · Score: 1

      All my Windows programs run on 98, ME, NT4, 2K, and XP. Why is this a big deal? You make it sound as though that is "cross platform".

      Also, your argument that just because WinXXX runs some huge percentage of all computers is exactly what keeps it that way. As a user/consumer, I prefer Windows. But as a developer, I believe that I should be able to use whatever platform/language/architecture that is best for the job. Windows is *not* always the best for the job (although often it is, but often it also isn't). If Windows had 100% domination, would we all be happy?

    8. Re:My letter to Bob by Anonymous Coward · · Score: 0

      As of Java 1.2, Java is not just a JIT compiler, it also has a 'Hotspot' code analyser and profiler that optimises even the native code produced by the JIT. Java 1.3 routinely matches C in numerical work because of this.

    9. Re:My letter to Bob by Anonymous Coward · · Score: 0

      Code that rungs on 98, ME, NT4, 2K and XP *is* effectively cross platform, as there are so many changes and bug differences between these platforms!

    10. Re:My letter to Bob by slaytanic+killer · · Score: 1

      Scalability vs. development speed. Who wins?

      Plus, I imagine .net can become scalable far easier than Java can host languages with pointers.

    11. Re:My letter to Bob by Anonymous Coward · · Score: 0
      All my Windows programs run on 98, ME, NT4, 2K, and XP. Why is this a big deal? You make it sound as though that is "cross platform".

      If you're going to make that argument, then there is a whole host of software written for *nix that isn't "cross-platform". Sure, it may run under different flavors of *nix, but how is that different from different flavors of Windows? There are a lot fewer differences between BSD, Linux, and Solaris than there are between Windows 98 and Windows 2000.

    12. Re:My letter to Bob by big_hairy_mama · · Score: 1

      If you're going to make that argument, then there is a whole host of software written for *nix that isn't "cross-platform". Sure, it may run under different flavors of *nix, but how is that different from different flavors of Windows? There are a lot fewer differences between BSD, Linux, and Solaris than there are between Windows 98 and Windows 2000.

      Still, Windowx2000 was designed to run Win98 programs, without even recompiling! I guess system-level stuff might be a little more difficult, but still, on Unix you at least have to recompile programs to get them to run on different flavors. And many don't. But I've yet to see a user-level WinXXX program that won't run on any of those.

    13. Re:My letter to Bob by Anonymous Coward · · Score: 0

      I am not a compiler designer, nor do I agonize over things like branch prediction. However, I do write Java every day and its performance is of professional concern to me. I make a strong effort to write comparative programs in other langages C++,Python,Perl to make sure I am getting all of the performance I need. I always let the numbers speak for themselves rather than assuming one implementation will be better than another.

      My personal, practical conclusion, (which is validated almost daily in my own job), is that Java is at least as fast as "native" languages for most applications. Even in cases where it is slower, a little hand optimization can bring a Java app up to the same performance as the other implementations.

      That said, I think there is enormous potential for Java to be slow due to the knowledge gap between it and C++. I have often seen programmers with a C++ background write the most horrendously slow Java code. Many of the optimization techniques learned for statically compiled language are ineffective or have negative effect in the JVM.

      So what I have found is that the slowest thing about Java is C++ programmers.

    14. Re:My letter to Bob by i_speak_4_myself · · Score: 1

      I will be very happy if you can show me a JVM that "can actually perform as well as or BETTER than natively compiled code". I have been waiting to this to happen for years now. Where can I find this JVM, Jon?

    15. Re:My letter to Bob by Anonymous Coward · · Score: 0

      So what I have found is that the slowest thing about Java is C++ programmers.

      MUAHAHAHAHAHA! What is this ? The kettle calling the pot what again ? So I assume all those browser, office package, programming IDEs and whatever projects started in Java a few years ago all failed because of those stupid C++ programmers huh ? In my experience 95% of Java programmers dont even know how to measure performance properly. Tsss...

    16. Re:My letter to Bob by selectspec · · Score: 3, Informative

      While I agree with your points in your letter to Bob, I think you missed the most important point:

      Licensing Fee.

      Enterprize C# Licensing comes with a nifty $1500 per CPU application royalty.

      --

      Someone you trust is one of us.

    17. Re:My letter to Bob by AndersDahlberg · · Score: 1

      http://java.sun.com/j2se/1.4 there you go! try not to be blinded by the highspeed hacking though ;)

    18. Re:My letter to Bob by Anonymous Coward · · Score: 0
      I don't see how .NET would have development speed any faster than Java. It seems at best NET will be equal with Java on development speed and not close on scalability.


      I've never seen a need for pointers with Java. There are a pretty good number of languages which have been ported to run directly under Java. I can't see telling by manager we need to go with NET instead of Java because I need to use a language with pointers...


      It's still way too early to compare Java and NET. NET has potential only, it's still not a product. Java's been out and collecting tools for 5/6 years. For something like C# to come out 5 years after Java and offer nothing new seems pretty pointless, IMHO.

    19. Re:My letter to Bob by Drazi100 · · Score: 1

      , CLRs will be available for Windows 98, ME, NT4, 2K, and XP which covers what percentage of computers in the world

      what does java have to do with the desktop?
      the highest transaction servers run on Unices.

    20. Re:My letter to Bob by Anonymous Coward · · Score: 0

      What? Do you have a reference for this license cost? As I understand it, you will certainly have to pay for Visual Studio.Net if you choose this to be your IDE, but the CLI will just be part of Windows (or your open-source Linux). Certainly no "license" cost for C#...

    21. Re:My letter to Bob by Hector73 · · Score: 1

      Not to troll (or even take sides), but Bob has replied to your open letter in this weeks column.
      Indeed, he seems to quote you.

      The link for those who still care.

  5. I agree...but I don't by MrBlack · · Score: 3, Insightful

    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.

  6. Assuming that Java has that firm of a market... by lkaos · · Score: 1, Troll

    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));
    1. Re:Assuming that Java has that firm of a market... by Anonymous Coward · · Score: 0

      GUI abstraction layer?

      There is some Java-based GUI stuff out there, but as far as I've seen, most Java development is server-side -- it's well on its way to dominating the other side of the HTTP connection.

    2. Re:Assuming that Java has that firm of a market... by Anonymous Coward · · Score: 0

      Another false statement ineptly said by someone who doesn't know what's going on in the real world.

    3. Re:Assuming that Java has that firm of a market... by Anonymous Coward · · Score: 1, Interesting

      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.

    4. Re:Assuming that Java has that firm of a market... by RFC959 · · Score: 1
      You can develop on cheap windows workstations and deploy the code (without recompiling) on your Sun servers.

      Ha! Pull the other one, it's got bells on it. I can tell you from personal experience, having worked on a couple large projects in which Java was developed on Windows and deployed on Solaris, that it don't work like that for much beyond HelloWorld.class.

      Sure, it's not as fast as C. A decade ago people were still complaining that C was not as fast as assembly.

      Hmm...well, I have to admit that Java compilers will undoubtedly get better as time goes on. Nonetheless, I don't think the analogy is quite perfect; C and assembly both get turned into machine code, so the issue becomes one of how good your compiler is at compile-time, while Java still has another step to go before running, and I doubt that will ever be entirely overcome.

      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!

      Spoken like a true developer. From the customer's point of view, a project written in Java requires more hardware and more careful tuning to run at a speed equivalent to C, and usually hasn't been tested adequately (if at all) on the target platform ('cause it just runs everywhere, right?)

    5. Re:Assuming that Java has that firm of a market... by kellan1 · · Score: 1
      Ha! Pull the other one, it's got bells on it.
      What a great line! I think I'll use it from now on :)
      I can tell you from personal experience, having worked on a couple large projects in which Java was developed on Windows and deployed on Solaris, that it don't work like that for much beyond HelloWorld.class.
      Then you were doing it wrong. I'm sure you feel better now. Having worked on several large project that were developed on windows, and deployed both to Solaris, and Linux. It worked quitely nicely thanks.
    6. Re:Assuming that Java has that firm of a market... by lkaos · · Score: 1

      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.


      These applications aren't the high-visibility ones though. It's not like Java is replacing C++, it's just that Java is replace a mix between shell scripts, perl, python, and various other scripting languages.

      You can develop on cheap windows workstations and deploy the code (without recompiling) on your
      Sun servers.


      While this sounds neat, it's not very pratical. Everyone large application has something in it that needs to be done in native code. This is not necessarily Java's fault, it's just the difference between underlying operating systems. There are so many areas that Java just can't cover (file perm, ipcs, sockets*, etc.).

      Java works great as a niche language. That niche is small web-apps and GUI interfaces. Programs that do heavy processing or perform any kind of critical task just can't do it in Java.

      I don't hate java. I hate Python, but that's a whole other thread ;-)

      Note: Windows barely supports a subset of standard berkley sockets and therefore Java barely touchs on having all the functionality of sockets in Unix (i.e. domain sockets).

      --
      int func(int a);
      func((b += 3, b));
    7. Re:Assuming that Java has that firm of a market... by easter1916 · · Score: 0
      You can develop on cheap windows workstations and deploy the code (without recompiling) on your Sun servers.
      Ha! Pull the other one, it's got bells on it. I can tell you from personal experience, having worked on a couple large projects in which Java was developed on Windows and deployed on Solaris, that it don't work like that for much beyond HelloWorld.class.


      That's exactly what I'm doing right now and it works.
  7. 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

    1. Re:mod original article downto 'troll' by big_hairy_mama · · Score: 1

      The _average_ "Java programmer" already acts like a brain-washed zombie posessing no problem-solving skills other than using existing Java APIs.

      That's why we all need Perl.

      Just kidding (I don't even code Perl usually). And I love Java, but only because it is clean and simple. If you want, you can ignore the rest of this post because I'm aware that you were only talking about the _average_ Java developer. But anyways...

      I don't love Java for most of its existing API's. Swing sucks. The Collections API sucks. In fact, most of java.util is bloated and wasteful. But that's why I code my own collections. But these are not faults of the language. Java itself is simple enough that I can write out my thoughts without pollution, worrying about pointers (although sometimes pointers are useful), or anything else.

      Say I come up with some new custom tree traversal algorithm. I write it down on paper. I code a simple object-oriented design (but I also don't waste objects - that's why many Java programs are slow). And I can even use reflection and write test cases like nobody's business. Don't even get me started on how cool it is to get my app working on the server-side.

      But mostly I'm just pointing out my own preferences here. In the long run, *every* language has its niche. Java is easy, and maybe it is a great entry point for many developers who either are tired of VB or don't want to deal with the complexity of Perl. But Perl also is incredibly useful in many cases (although I can't say the same about VB), C/C++ is also useful, and C# is probably the merging point for all of these. That's where it is attractive: integrating old modules written in different languages. But as a tool for developing an application from scratch, I can't see many people who would write something entirely in C#.

    2. Re:mod original article downto 'troll' by Anonymous Coward · · Score: 0

      Why do is there so much importance to being "cross-platform"?

      Cross-platform is only important when you want to move onto a higher-capacity platform - in otherwords, scalability.

    3. Re:mod original article downto 'troll' by cowtamer · · Score: 1


      Cross-platform is only important when you want to move onto a higher-capacity platform - in otherwords, scalability.

      Not so. I, for example, develop an application that runs on both UNIX and Windows NT. The installed customer base does not live on a single platform. Or you might simply want/need to change hardware vendors and go with the implied OS change (migration from IRIX to Solaris, for example.). There are too many reasons for being cross-platform to list here.

      Of course, this is what you get for replying to AC's :(

  8. C# vs Java by qbalus · · Score: 2, Insightful

    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

    1. Re:C# vs Java by big_hairy_mama · · Score: 2, Interesting

      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.

    2. Re:C# vs Java by Martin+S. · · Score: 2

      > I just have to point out that Java and/or Sun is not open source.

      Actually Wrong. Java is 'open source' in a literal sense (sign the agreement and get a copy, easy as pie). It not Open Source in philosophical sense, it's not covered by a GPL compatible licence.

      >And many Java projects also happen to be Open Source.

      I think this is closer to the point actually being made.

    3. Re:C# vs Java by Anonymous Coward · · Score: 0

      Hmmm, Java is not even 'open source' in a literal sense. Since when does Sun give away the source code to their reference JVM?

    4. Re:C# vs Java by Martin+S. · · Score: 2


      Since whenever you sign this licence.

      http://www.sun.com/software/communitysource/inde x. html

  9. who is this guy? by ameoba · · Score: 2

    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.
    1. Re:who is this guy? by Anonymous Coward · · Score: 1, Informative

      Actually, Cringley's been a computer pundit since the 80s. I remember reading his articles in Infoworld when I was younger.

      For the most part, Cringley has always been on top of current events. His predictions, however, range from almost psychic to out there in left field. He's been in the business for quite awhile, though, and I don't think you can really cast aspersions on his credibility.

    2. Re:who is this guy? by Anonymous Coward · · Score: 0

      "Cringely" (a pseudonym) has been writing for 15+ years and has a pretty accurate (60%? 70%) track record. His column used to be on the last page of InfoWorld magazine (an industry heavyweight) and was +the+ source for insider information for many years. He moved to PBS after he and InfoWorld squabbled over who owned by rights the Cringley character. Bobby remains influential because of tips he still receives from insiders. His book "Accidental Empires" was also very good.

  10. Not likely. At least not on the server by rainer_d · · Score: 1

    Witness also the
    latest cracks in the friendship
    between SAP and Microsoft wether or not, they'll
    support .Net

    Big things are coming ;-)

    --
    Windows 2000 - from the guys who brought us edlin
  11. Swing dead? by Anonymous Coward · · Score: 0

    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.

  12. Bogus, all cause of one analogy... by FortKnox · · Score: 3, Insightful

    J2EE

    C# has nothing that can compair to J2EE. The bonus' you get with J2EE in a large-scale system will easily destroy anything .NET can come up with.

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    1. Re:Bogus, all cause of one analogy... by Anonymous Coward · · Score: 0

      Ok, not a flame, just some info. COM/COM+ the MS equivalent to J2EE and was around for years before J2EE.

      - MS had a transaction server years before J2EE

      - MS had a message queue (COMyears before J2EE

      - MS had integrated security years before J2EE

      - stateful J2EE objects have scalability problems

      - stateful J2EE objets won't work with legacy systems

      - generally J2EE systems costs 2x as much and runs 2x slower than a COM+ system

      - COM+ is the crushing J2EE in the latest TCP benchmarks (raw performance and cost/performance)

      - the .net version of the petshop from the J2EE blueprints runs 8x - 24x (with caching) faster than any published J2EE vendor

  13. 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.
    1. Re:Why are /.'ers even READING Cringely?!?! by Hector73 · · Score: 1

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

      Yes, 10 is greater than 0.

      The few commercial SWING apps that do exist are used primarily by Java developers (JBuilder, TogetherJ, etc). Coincidence?
      I think not.

      SWING starts slow (despite HotSpot), eats up a whole bunch of memory (more than M$ bloatware), and then continues to run slow. It is not, and, IMHO, never will be ready for wide-scale use by the masses.

      For what its worth, I work in a Java-mostly software development company and have been profesionally developing in Java since 1.0 ('97).

    2. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1

      There's something you are missing here...

      IT RUNS ON MORE THAN ONE OS!!

      Therefore it *is* for the masses...

      But thanks for your two scents.. it's much appreciated.. x-P

      And, FWIW I've been developing in Java since 1.0 as well. So what's your point?

      --
      Polymorphism -- It's what you make of it.
    3. Re:Why are /.'ers even READING Cringely?!?! by Hector73 · · Score: 1

      My only point was I'm not an M$ zombie ... just open minded.

      And on the multi-platform issue:
      Sadly, the masses use Windows and the Mac.

      It is *not* for the masses ...

    4. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1

      I'm the masses.... I run Linux... ;-)

      Look, my point is that if we continue with this point of view (that Swing isn't going to cut it 'for the masses') it's going to be a self-fulfilling prophecy. Personally I'd rather be more of an evangelist than that...

      --
      Polymorphism -- It's what you make of it.
    5. Re:Why are /.'ers even READING Cringely?!?! by Anonymous Coward · · Score: 0

      Anders may not know objects, but he sure knows productive languages for the real world. He wrote TurboPascal - an editor, compiler, linker, and run-time environment that totalled 33,280 bytes!

    6. Re:Why are /.'ers even READING Cringely?!?! by feldkamp · · Score: 1

      Quoting...
      ---------------
      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?
      ---------------

      Delphi/Object Pascal happens to be one of the largest non-MS languages/environments that gets used in a business environment. In my opinion, it is designed quite well, and has been for years. It optimizes quite well, and creates really fast code. The reason MS hired Anders was b/c he was responsible for parts of the language that worked very well in practice, not just in theory.

      As for nobody writing a C# compiler for GNU/Linux, check out go-mono.com.

    7. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1

      No.. he did not. His predecessor did (I can't remember the guys name right now).

      All Anders did was put Borland Pascal into near obscurity. If he hadn't had this 'brilliant idea' that became Delphi his title wouldn't be 'Distinguished Engineer' at Microsoft. It would be "General Manager" at the Denny's in Scotts Valley.

      Get your facts straight and have the balls to post as something OTHER than 'Anonymous Coward'.

      --
      Polymorphism -- It's what you make of it.
    8. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1


      Delphi/Object Pascal happens to be one of the largest non-MS languages/environments that gets used in a business environment. In my opinion, it is designed quite well, and has been for years. It optimizes quite well, and creates really fast code. The reason MS hired Anders was b/c he was responsible for parts of the language that worked very well in practice, not just in theory.


      Largest non-MS language used in business? Based on what?? Have you done a job search for programmers lately. For every 100 jobs out there you'll see the that C++ has the highest demand, followed by Java, then VB and THEN (if you even SEE it) Delphi.

      Yea I suppose it's one of the largest non-MS environments out there, but Java's is bigger.

      And all Anders did was make the Delphi UI. He did NOT come up with the parts of the language that you speak of. The guys who are still at Borland busting their butts are the ones who did that.


      As for nobody writing a C# compiler for GNU/Linux, check out go-mono.com.


      I'll look into it. Still I doubt I'll find a de-balled C compiler very interesting. I mean - even MS doesn't have faith in it. Don't believe me? Can you say "J#"? I think you can... ;)

      --
      Polymorphism -- It's what you make of it.
    9. Re:Why are /.'ers even READING Cringely?!?! by sydbarrett74 · · Score: 1

      Correction. Philippe Kahn (founder of Borland) originally wrote Turbo Pascal. Anders didn't grab hold of TP until version 4.0 or 5.0, I believe.

      --
      'He who has to break a thing to find out what it is, has left the path of wisdom.' -- Gandalf to Saruman
    10. Re:Why are /.'ers even READING Cringely?!?! by Anonymous Coward · · Score: 0

      Yup. And McNealy wrote Unix wasn't it ?

    11. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1

      Actually, PK never wrote a line of TP. One of his friends did and brought it to him. That person was Anders' predecessor.

      --
      Polymorphism -- It's what you make of it.
    12. Re:Why are /.'ers even READING Cringely?!?! by miguel · · Score: 2

      I think you are confused.

      There are people working on C# compilers and runtimes for non-Windows platforms. Mono and Portable.NET are both working on the problem.

      C# is actually a very good object oriented language. There is a complete type unification in C#. In C# structures and basic data types (like int, char, double) can be treated as objects with no hacks attached (I am not familiar with the Java hacks, but those who know claim that Java has some kind of difference between int and integer, or something like that).

      C# is very much like Java, with a few extensions: properties, events, delegates and contains support for attributes (arbitrary metadata you can attach to language elements).
      \

    13. Re:Why are /.'ers even READING Cringely?!?! by jbuilder · · Score: 1

      If C# is so damn much like Java, then why are they making J#?!?!?!

      Sorry, you haven't sold me on it.

      Oh.. and as for Properties, Events, Delegates (Methods) Java 2 has a PME and has had one for a while. Borland helped Sun with the initial implementation and design of it. The 'Attributes' do sound nice, but could easily be implemented in Java. Again, you haven't sold me on it.

      I'm only as confused as you are brainwashed.. ok?

      Of course, if you can use it to write killer first person shooter games, then I'll be all for it.. ;)

      --
      Polymorphism -- It's what you make of it.
  14. M$ AstroTurfer copped in java.sun.com by Martin+S. · · Score: 2

    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.

    http://genamics.com/developer/csharp_comparative .h tm
    http://forum.java.sun.com/profile.jsp?user=98551
    http://www.amazon.com/exec/obidos/ASIN/059600079 0/ ref=ase_genamics/102-2503511-3184958

  15. I do not see it this way by Anonymous Coward · · Score: 0

    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.

  16. Not a zero sum game. by PhipleTroenix · · Score: 1

    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.
    1. Re:Not a zero sum game. by Anonymous Coward · · Score: 0

      microsoft *did* submit C# to a standards organization.. Sun did no such thing with Java.

    2. Re:Not a zero sum game. by julesh · · Score: 1

      What makes a language an "Open Standard". Some would say that accreditation by a major standards organization (eg ISO), but I have to say that the way ISO C++ progressed made a mockery of this... before ISO standardization began, C++ was a very open language based on a single reference implementation (ie Stroustrops [sp?]). The committee for standardization took this language and introduce several bizarre variants, changed the meanings of parts of the language [in for (int i = 0; ... ) { } what is the scope of i?], etc.

      I would say that the definition of openness is:

      - a single, well documented reference implementation
      - a concisely written specification of how it should behave in all situations (even if some of these are unspecified)
      - no core part of the specification depends upon some intellectual property that would have to be licensed in a new implementation
      The only possible conflict I would say that stands in the way of Java being an open standard is Sun's restrictions on the use of the Java trademark. I don't care what some poncy standard accreditation body says. Java is as 'open' as needs be. If it wasn't, there wouldn't be the possibility of alternative implementations (eg Kaffe, GCJ, etc.).

      I haven't looked in detail at C# yet, but I do suspect it reallys on some of MS's proprietary APIs and a lot of these do depend upon MSs intellectual property (I understand that the DCOM interface, certain to be core to the whole thing, has patent issues, for example).

  17. There is no version of Windows running on 512 CPU by Anonymous Coward · · Score: 0

    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.

  18. C# Rocks by Anonymous Coward · · Score: 0

    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.

    1. Re:C# Rocks by jbuilder · · Score: 1
      Normally I wouldn't respond to anyone who doesn't have the balls to post any way other than anonymously, but what the heck...

      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.

      Huh??? It sounds to me like you only worked with the language for *two* years and *that* was three years ago. A lot has happened since then....

      BTW, has anyone actually programmed a large app in Swing?

      Yes.. JBuilder from Borland is 100% written in Java. The Appgen Software companies move their software platforms over to Java so they could deploy to Mac OS/X and Windows *and* Linux.

      Granted, there could definitely be more applications, but apps *do* exist and they *do* work. The only reason they're aren't more, AFAIC, is because of idiots who think Java is still "Write Once, Debug Everywhere".

      However, I'm glad you're finding a tool that you're productive in. When you get right down to it, that's all that matters....

      --
      Polymorphism -- It's what you make of it.
  19. question by Anonymous Coward · · Score: 0

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

  20. Differing philosophies and target markets by Anonymous Coward · · Score: 0

    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.

  21. Re:There is no version of Windows running on 512 C by Anonymous Coward · · Score: 0

    Nice theory, but there's never been anything to show it works.

  22. Re:There is no version of Windows running on 512 C by Colin+Bayer · · Score: 1

    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.
  23. re:crossplatform by willis · · Score: 1
    You might want to migrate your systems sometime, right? What about companies switching from SunOS to linux? or Irix to NT? What we have today might not be around forever.

    --

    there is no thing
    what else could you want?
  24. And J# by Anonymous Coward · · Score: 0

    If C# is going to blow away JAVA why Micro$oft
    invented J# ???

  25. With all due respect, this is utter bollocks. by easter1916 · · Score: 0

    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.

    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 .NET route.

    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.

  26. I will continue to use both... by ayjay29 · · Score: 1

    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.
  27. Java here to stay by CactusHack · · Score: 1

    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.

  28. What Would Mr Object Oriented Fancy Pants Say? by Anonymous Coward · · Score: 0

    C# is Eiffel with Java Syntax.

    --
    Anonymous Coward

  29. What about Mono? by hughk · · Score: 1
    What about Mono? What about the way the language has been submitted to ECMA together with the VM specs and the API?

    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