Java development outpaces C# development on all platforms

Thursday, July 9th, 2009 at 9:11 pm

Behold, the most FUD-filled pro-C# article in the few months.

“Mono is clearly more popular than Java. I’ve been using desktop Linux as my primary desktop for three to four years, and use just a handful of Java apps day to day,” O’Grady said.

According to the “Normalized Comparison” and “Normalized Discussion Site Results” on LangPop, the Internet’s largest programming language survey, Java is #2 on those two categories, C holds the #1 spot both, C# holds the #6 on “Normalized Comparison” and #7 on “Normalized Discussion Site Results”.

In other words, Java is the second most used programming language in existence. A language that is 37 years old and 23 years older than Java beats it and is the only one to beat it. C# does not even come close.

I’ve been using Linux as my primary desktop OS for over a decade, I use a handful of Java apps, however I use no C# apps and I do not even have Mono currently installed.

Ubuntu, a Debian-based operating system that is among the most popular desktop Linux distributions, currently packages version 3.1 of the Eclipse IDE along with MonoDevelop 2.0, the most current build. Eclipse 3.5 was released by the Eclipse Foundation on June 24, but it is not packaged by Debian.

Eclipse 3.1 lacks features that MonoDevelop has, including code completion, integrated debugging, refactoring, and unit testing capabilities, Hargett claimed. “I’ve found in my consulting that people who install Eclipse 3.1 through the [Debian] package manager say, ‘This is terrible.’ ” He said that customers that have installed a version of Eclipse beyond 3.1 like it.

The article is really shooting itself in the foot. It compares two Linux distros (Debian and it’s child, Ubuntu) and says they have an outdated Eclipse. I use Debian, Eclipse is written in Java, and all I do is download Eclipse off Eclipse’s website and run it instead of using the packaged version. No compiling needed; it runs correctly out of the box. I use the copy of 64-bit OpenJDK 6 that is already packaged in Debian.

If Matt Hargett has a bug to report (such as the Eclipse package being outdated), then I suggest he files it instead of trying to slur Debian or Java.

3.5 does include integrated debugging, lots of refactoring functions, and it has unit testing via the ever popular JUnit, and Eclipse has had such functionality for awhile. 3.1 was released in Jan 2006, or over 3 years ago. MonoDevelop wasn’t even usable 3 years ago

“The Java community has taken Linux for granted,” Hargett said. “The assumption is, ‘What else is Linux going to do for managed code?’ and the answer is Ruby on Rails and .NET. Anecdotally, I’m not seeing people developing new Java Web applications. I’m seeing ASP.NET and Ruby.”

The more I read this article, the more I wonder if this is just thinly-veiled anti-FOSS FUD instead of simply anti-Java. Most custom enterprise and web service software is written in either Java or Perl. I’ve never seen Ruby used at a major company that didn’t do it just to blow their own horn about being different, and I’ve never seen an ASP.NET web app that ran on Mono on Linux instead of .NET on Windows.

I would also like to state that according to The Computer Language Benchmarks Game (aka Shootout), a popular synthetic languages benchmark that measures how slower a language is than C, Java scores an average of 1.68x slower, C# in Mono scores an average of 2.76x slower.

I’d rather use a managed language that is 2/3rds the speed of C than one that is 1/3rd. Mono development still seems to be very behind, despite articles like the one on SD Times claiming otherwise.

22 Responses to “Java development outpaces C# development on all platforms”

  • anonymous says:

    The real value of an interpreted language is the language itself, not its performance. Performance will inevitably vary from platform to platform; it should be in the realm of abstraction.

  • [...] I mean, several articles describe how slow c# on mono is compared to Java. I mean, according to This article, "Compared to C, Java runs 1.68 times slower, while c# on MONO runs 2.76 times slower [...]

  • Otan says:

    Tracker? Tomboy? and what’s the other one, Banshee?

    That’s all what you got? A desktop application without real use? The last time I use Tracker, it crashed. And that was only yesterday.

    Want to see a sample of a real USEFUL desktop application developed in Java? Try JDiskReport. I wonder if Mono can beat that. By the way, JDiskReport isn’t that popular because it isn’t bundled with Gnome and it lacks marketing strategy (unlike Mono).

  • nyasha says:

    Are trying to be funny or you are just a rabble rouser try ASP vs JSP nuff said!!

  • Rick says:

    Your sure are a major league asshole. But don’t worry, there’s nothing you can do to stop .NET or Mono. Go back to your inferior Java – what a joke.

  • [...] choice, but I often see more Java Bigotry than .NET Bigotry as I just read the flame against Mono here. It seems that Java Developers didn’t learn any lesson from their past errors as Rod Johnson [...]

  • Developer Dude says:

    The article is total FUD, misleading, mistaken, miswritten – probably by an MS shill.

    I tried to comment on it (nicely, but pointing out its errors in fact and logic), but apparently the person moderating the comments is not accepting any more – no more comments have been added for quite a while.

    SD has totally lost any credibility IMO.

  • Sandro says:

    The shootout may favour Java in execution speed, but significantly favours mono C# for memory use, which has long been a complaint against Java. Java proponents have a legitimate cause to worry here. Improving execution speed is easy, improving memory consumption not so much.

    • Memory use is really a non-issue. Java uses an appropriate amount of memory based on average application usage. Not only that, this can be tuned if you’re really hard up for memory.

      Shootout simply does not tune it, and I suspect the new G1 GC for Java7 and later versions of 6 will allocate less memory on startup. For the stuff Shootout runs, the JVM can probably be tuned to be far below what Mono uses.

      • AB says:

        I could argue a few seconds different in speed is a non-issue. And what is an appropriate amount of memory? And are you saying a language that is older than C# by many years lags behind in memory optimization?

  • Miguel says:

    I looked at LangPop, and I tried to reproduce the experiment they perform.

    The numbers are higher than they report for Java, all of these are computed interactively:

    “C# programming” 63 million matches.
    “Java Programming” 239 million matches.

    So far this roughly corresponds to the reported numbers. But Java is both a language and a VM while C# is just a language. So running the query for “.NET programming” shows:

    “.net programming” 682 million matches.

    You can try those yourself at:

    search.yahoo.com

    The langpop stuff is fun, but I believe they need to include the “.net programming” on their results.

    • Felipe says:

      Don’t forget .net is www domain. After page 30 in your search, there are less and less results referring to the .net platform.

  • Miguel says:

    I read your previous post in the past, and I noticed that you claimed the BCL was bad and had some design issues, but you failed to provide samples.

    Perhaps you could elaborate with some substance.

  • mark says:

    But you are biased already because you dont have Mono installed and dont use Mono programs.

    I have both Mono and Java installed, but I dont use either Mono or Java apps :> (but this is hardly surprising, I am a ruby diehard fanboi who is finally learning python. I prefer scripting languages ANY time over the code mess that is Mono/C# or Java)

    In the end, Unix is C. “Fast” languages who need to dethrone C must focus on C as competitor, and not on C# or Java, because BOTH of these languages are a clear minority compared to C.

    If you want a good language, you need to offer advantages for your users. And compelling advantages – not “just” that they are better than Java or C#.

    Users, in the end, dont care much about which language is used, as long as the features they can use gives them some kind of advantage or feeling that their time isnt wasted.

    • No, I’m biased because I tried using C# for a month through Mono, and found it to be the worst thing ever designed. See this post.

      Also, how is Java a “clear” minority? See LangPop… Java is almost as popular as C is, and other languages have a hard time coming close across all the metrics.

      Java’s compelling advantage is that everyone uses it or supports it or everything has an API binding for it; it often comes pre-installed on OEM Windows installs (or gets installed with OOo), it comes pre-installed with OSX, and its very easily installed on Linux.

      Java is everywhere, its the fastest usable language outside of C/C++, and I actually enjoy using it.

      • Brian says:

        Patrick –

        I’ve programmed in Java longer than I’ve programmed in C#, and I can say without a doubt that the C# class library is far superior to Java’s. C#, as a language, is also far superior to Java. The BCL was in no way ever designed to wrap or imitate the Win32 API and for you to claim as such is just a stunning display of ignorance or blind hatred on your part. If, after a month of using C# you were unable to wrap your head around it (especially coming from the java world), it is clearly a sign of incompetence on your part.

        • Not at all, I’ve used the Win32 API, and the BCL feels a lot like it in many areas, especially the GUI stuff.

          I came to C# from after using C for over a decade, and Perl for half of one. I only casually looked at Java a decade ago, I didn’t come from it to C#.

          After going to Java after C#, I find programming for Java very enjoyable and the base class API design seems very sensible.

          I think APIs should make sense without needing to look through page after page after page of cryptically written documentation and then still not finding what you want.

          Some features I wished to use didn’t even exist; for example, .Net did not gain concurrent lockfree collection APIs until .Net 4.0 (which is not out yet, only release candidates or whatnot), and Mono still does not have these. I needed one, and I ended up writing one. Java, however, does have everything I need there.

          .Net also does not have a portable 3D HAL API. Microsoft tries to push XNA (the .Net wrapper for DirectX), but I can’t use it on Mono. The Mono XNA project is not part of Mono and seems to have stalled development 2 years ago; it never grew the 3D part of the API.

          .Net does have two OpenGL wrappers, Tao and OpenTK (a fork of Tao). Tao examples would not execute on my AMD64 Linux system no matter how hard I tried, and OpenTK cannot be built by Mono, although it can be executed by it.

          The OpenTK API has no documentation to cover how it differs from/improves on the C API that can be read on Linux, MonoDevelop does not support reading the embedded XML docs .Net languages use. Many times I had to read OpenTK’s source to understand what it was doing.

          On the other hand, I switched to using OpenGL through Java, and LWJGL is a breeze to use and is well documented. LWJGL often tries to automate certain tasks (such as changing the common function argument style of “foo pointer, length of data behind that pointer” into a single “FooBuffer” argument) and makes development much faster.

          • Coder says:

            SMH

            So all your rant based on C# Mono ?

            • Not entirely. At the time, Mono was the better of the two .Net implementations and the only that ran on Linux. I do software development on Linux only, but wished to support Windows users painlessly. From what I’ve heard from people I know stuck in corporate hell because of project managers being wooed by Microsoft’s marketing, Mono is still faster.

Leave a Reply