Slashdot Banner
Stories
Slash Boxes
Comments
typodupeerror delete not in

Comments: 598 +-   Mono Outpaces Java In Linux Desktop Development on Thursday July 09, @04:42PM

Posted by timothy on Thursday July 09, @04:42PM
from the statistical-manipulation-more-popular-than-ever dept.
dp619 writes "Mono, a framework based on Microsoft technology, has become more popular for Linux desktop applications than Java, but recent changes could strengthen Java's hand, SD Times is reporting. The story also touches on the failure of Linux distros to keep pace with Eclipse."
story

Related Stories

This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • but recent changes could strengthen Java's hand, SD Times is reporting

    OK, I've glanced over the article twice now, and can't see anywhere where they bring up what could be strengthening Java's position in the future?

    I'm assuming it's updates to Eclipse, but they never state it explicitly, just that some Linux distros have weaker IDE support compared to MonoDevelop? *shrug*

    • by rdean400 (322321) on Thursday July 09, @05:46PM (#28643699)

      It isn't helpful that TFA is wrong on at least one point. It said that Eclipse 3.1 lacks code completion, refactoring, and debugging features. Unless the build in Debian is horrifically broken, it has all of those, including thread-level debugging, which it's had since before Eclipse 3.x. My assumption has always been this is because the progenitor of Eclipse -- IBM -- was more interested debugging server-based Java applications than standalone ones).

      • by owlstead (636356) on Thursday July 09, @08:25PM (#28645107)

        If it says that it doesn't understand anything about developing and we might as well regard the entire article as trash. The one difference between Eclipse is the AST which enables model-oriented programming and refactoring. This has been in there since 2.0 at least (which is when I started to use Eclipse). Of course it already had debugging abilities build in (duh). Java (with its relatively small set of keywords and complexity) and Eclipse make for a very fine development environment, imho paling MS VS. MS still does not seem to understand that adding features is not always progress.

      • Yeah after I read that enormous whopper of a lie, followed by the other lie that no other languages were developed by sun for the JVM, I pretty much figured this guy is just a Microsoft shill [wikipedia.org] and has no interest in actually providing any useful information.. Best way to spot a sock puppet or shill by the way is when they receive a counter argument they either ignore it or repeat their initial argument over again. Since they are getting paid and you are not they will repeat this behavior until you get bored and leave the conversation paving the way for them to preach to the naive without any counter-argument.
  • by itomato (91092) on Thursday July 09, @04:52PM (#28642963)

    This is like saying touch-enabled applications have made great gains in iPhone application share.

    Or that there are more MFC apps than Java equivalents for Windows productivity.

    Heh? Someone bought tickets to the spin train.

  • RedMonk analyst Stephen O'Grady, the guy being quoted in the article, is a Microsoft shill. And the whole article is filled with FUD.

        • by Draek (916851) on Thursday July 09, @08:08PM (#28644985)

          The fact that posts like yours get modded up here ashames me.

          So the facts that Qt and Java's licensing were problematic due to copyright concerns (y'know, those things pretty much the entire world recognizes thanks to the Berne Convention) are just a triviality best ignored, while Mono's alleged "patent threat" is a serious problem despite being at *best* limited solely to the US and Japan?

          And somehow the fact that the NIH poster-child Apple isn't using Mono is supposed to support your point, despite the fact that they've got the WORST support for Java in the entire industry, prefering instead to push their own little C fork?

          Its obvious you have an axe to grind, but thats no excuse to ignore factual information and logical arguments.

  • by bogaboga (793279) on Thursday July 09, @05:01PM (#28643083)

    ...Packaging has also been a detriment to Java on Linux, said O'Grady...

    To this, [Linux] zealots will defend the status quo saying choice is working for Linux as if there are no draw backs.

    This same problem is being reflected on the choice of desktop environments. No wonder after a decade of "Linux on the desktop", we in the Linux world still command a very small percentage of active users of desktop Linux. Some say we are irrelevant. It's sad.

  • by sprins (717461) on Thursday July 09, @05:02PM (#28643091)
    Oh give me a break. For server-side development Java is still king in the performance and feaure department. Perhaps Mono/.NET/MS it catching on, but that's only due to comprehensive copycatting of Java technology.

    Although I agree we shouldn't underestimate MS copycatting...
  • by Anonymous Coward on Thursday July 09, @05:12PM (#28643217)

    I quota from TFA: "Eclipse 3.1 lacks features that MonoDevelop has, including code completion, integrated debugging, refactoring, and unit testing capabilities"

    Excuse me !? That stuff was even in Eclipse 2.0. Claiming a Java IDE without code completion exists is just stupid.

    Another quota from TFA "Most Java developers on Linux use JetBrains IntelliJ, he claimed. IntelliJ is a commercial product that is not open source."

    Who says most developers use IntelliJ, I personally know NONE. Everybody I know is on Eclipse or Netbeans.

    I'm not even going to bother with the rest of the article. This article is written by one bunch of ill informed people.

    How much money do I need to pay to get an article on the frontpage ? Do I get a volume discount if I want five of them ?

    • by hattig (47930) on Thursday July 09, @05:29PM (#28643471) Journal

      Why is he talking about Eclipse 3.1 anyway? 3.5 just came out, 3.4 came out a year ago, 3.3 a year before that, 3.2 a year before that...

      Does he talk about .NET 1.0? I doubt it.

      The only problem Eclipse 3.5 has is the minor hassle of getting SVN working, as it isn't integrated out of the box. I suspect this was because of subclipse and subversive bickering.

      • by PsychicX (866028) on Thursday July 09, @06:05PM (#28643935)
        He's talking about Eclipse 3.1 because the article has nothing to do with what the title says. It's not about Mono vs Java, even though the author thinks it is. He spends most of his time basically talking about how Debian is garbage (which seems obvious to me but reasonable people can disagree). In fact the article seems to imply that Debian IS Linux, which is broken on several levels.
    • by mctk (840035) on Thursday July 09, @06:02PM (#28643897) Homepage
      No, no, no. You misunderstand. You know all of those half-finished hobby projects you have laying around? MonoDevelop actually gets them done! It's incredible! My productivity is through the roof!
  • Outpaces? (Score:4, Insightful)

    by popo (107611) on Thursday July 09, @05:16PM (#28643283) Homepage

    "Outpaces" is one of those sketchy words often used to describe comparative speeds. It is almost a sure sign of a release designed to manipulate public opinion.

    e.g.: If Microsoft is growing at 3% annually, and my small one-man software company is growing at 20% annually -- I can put out a press-release saying that I'm "Outpacing Microsoft". But that doesn't mean I'm creating real competition for Microsoft.

    Disclosure: I haven't RTFA -- I'm just calling b.s. on semantics...

    • by generic.individual (1590219) on Thursday July 09, @08:35PM (#28645167)
      This is one of those slashdot absurdities that I just can't stand. You are criticizing the story while openly stating you didn't read it. W.T.F.

      If you are going to post a comment, at least have the decency to RTFA first. I would give an example of why you should, and show how your statements are false based on the content of TFA, but I haven't read it yet...
        • by jipn4 (1367823) on Friday July 10, @09:12AM (#28649261)

          So care to enlighten me which other 8 applications get removed if you remove Mono?

          Here are a bunch of them: Tomboy, Banshee, F-Spot, Gnome Do, Beagle, Blam, Muine, Tangerine, Hipo, gTwitter, Last Exit, Graphmonkey, Giver, Drapes, Cowbell, Bless, gBrainy, autopano-sift.

  • by moria (829831) on Thursday July 09, @05:16PM (#28643291)
    From TFA:

    Eclipse 3.1 lacks features that MonoDevelop has, including code completion, integrated debugging, refactoring, and unit testing capabilities

    Nothing to see here. Move on.

  • I don't think so (Score:3, Insightful)

    by jipn4 (1367823) on Thursday July 09, @05:20PM (#28643331)

    Mono is becoming popular for Linux development because it does not try to be cross platform. It feels much more natural than Java programming.

  • by Anonymous Coward on Thursday July 09, @05:49PM (#28643745)

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

    Just out of curiosity, I just downloaded a copy of Eclipse 1.0. This build is from November 2001.

    http://archive.eclipse.org/eclipse/downloads/drops/R-1.0-200111070001/index.php [eclipse.org]

    For the record, it has code completion and integrated debugging. I do remember back in 2004 thinking IntelliJ IDEA's refactoring support was far better, so I suppose that was roughly the 3.0 timeframe. I guess I could track the JUnit plugin history and see which version of Eclipse started including this, but I think I've already made my point. I've got nothing against Mono, but geeze, what a load of BS...

  • by Jahava (946858) on Thursday July 09, @07:04PM (#28644535)

    A major fault that I've seen in numerous sub-threads is the idea that a Java user interface equals Swing. It most certainly does not. Swing is merely Java's complete pure-Java (i.e. cross-platform) user interface geared towards providing a unified look-and-feel. In this respect, it does a good job. While there's nothing inherently wrong with it from a toolkit perspective, it is absolutely not appropriate for usage on the Linux desktop.

    Programming for the Linux desktop means more than producing a windowed application; one must integrate their application, both in terms of user interface consistency and application interoperabililty, with a major desktop distribution. Specifically, I'm talking about Linux's "big two" desktop environments, KDE + Qt and GNOME + GTK+. While each of these environments have their preferred languages (C++ and C respectively), many other languages have no issues whatsoever being tightly integrated into them via bindings.

    Java is no exception! In Java, I can program a wonderful GNOME/GTK+ application just fine with java-gnome [sourceforge.net]. Similarly, I can program a Qt4 application with Qt Jambi [gitorious.org] (although I can't seem to find an equivalent KDE4 bindings library) in Java. An application written in either will appear and operate on par with any application written in other languages, either natively (via C or C++) or via another bindings library (Python [python.org] has a ton [sourceforge.net] of [python.org] bindings [pygtk.org]).

    Furthermore, just like GTK+ and Qt have cross-platform capability, so do the bindings, and if the appropriate binding library for a given platform is installed on that platform, the Java application, too, will be able to be cross-platform without modification. This is, of course, the job of the distribution and/or installer software, but operates similar to the Deluge [deluge-torrent.org] (Python) installer for Windows, installing the client port of the toolkit (GTK+, in this case) and the language bindings (PyGTK) alongside the application.

    That's exactly how the Mono desktop applications work: they write their logic in native C# and use GTK+ bindings (GTK# [mono-project.com], in most cases) to integrate with the Linux desktop environment.

    Any Java application written for the Linux desktop that uses Swing over native desktop bindings is foolish. Each has their place, for sure, but on the desktop integration is everything.

  • More popular? (Score:4, Interesting)

    by Alex Belits (437) * on Friday July 10, @06:53AM (#28647873) Homepage

    That's like saying that hydrochloric acid is more popular as a drink than hydrofluoric acid.

    Both environments are massive messes of overcomplicated languages with even more overcomplicated infrastructure, stuffed with random libraries and lovingly wrapped with overinflated egos of their designers and developers, and wankery of the users who think, it's the second coming of Lisp.

    At this point there are five good choices for developing a new non-game GUI-centric application for Linux (or anything except Windows-only or OSX-only applications):

    1. C++/Qt (KDE and everything useful in it, Opera, QCad, countless commercial applications).
    2. C/GTK (GNOME and everything useful in it, X-Chat, Pidgin).
    3. C++/GTK (OpenOffice.org).
    4. Python/Qt.
    5. Python/GTK.

    This covers everything anyone would want in a GUI-centric application -- the five reasons I have seen for other combinations are:

    1. As attempt to promote some crappy environment or a "my first application in <crappy environment>" project that got out of hand (Tomboy, Banshee).
    2. Out of ignorance (all "enterprise applications" where Java was chosen because it's supposed to be "cross-platform").
    3. A minimal update for some old application that was written before the above five choices became available (the only reason why I still have Motif installed).
    4. The application IS an environment designed specifically for some set of goals (Emacs, Mozilla).
    5. As a wrapper over something someone already written.

    • Re: (Score:3, Funny)

      by Anonymous Coward

      Of course not. Java hasn't improved over time. It is exactly the way it was in version 1. All you can build with it is very slow animated buttons and stuff for web pages.

      Are you kidding me? Comparing Java 1 with .NET (which is a copy of Java 1.4 without maintaining backwards compatibility)?

    • Re:Good (Score:4, Informative)

      by turgid (580780) on Thursday July 09, @04:53PM (#28642971) Journal

      A lot has changed in the last 10 years. Your comment is very telling, and not very helpful. It's so bad, it's not even wrong. I'm sorry that's what you think.

      With .NET, there is loads of stuff built in so I am not doing a lot of low level coding.

      There are orders of magnitude more stuff "built-in" to Java (the platform), 3rd-party stuff, independent implementations, and it's had a good decade and a half of hardening in real-world situations (top businesses etc.)

      gcc even has a java (the language) compiler now (OK for about 5 years) that generates native machine code (what everyone used to whinge about) and there are independent implementations of the Java libraries (e.g. GNU Classpath).

      Mono needs to die a death. Please ignore it and hopefully it will go away.

        • Java is dying. Python is good so is C#. I love attributes, LINQ, Master Pages, etc.
            I'm not an MS fan, but C# is just so nice.

          For the record I'm writing this on my debian sid laptop using Iceweasel.

          Programming is fun. Did you know that rabbits aren't rodents? Storm clouds are the ones they call cumulonimbus. I forgot to bring lunch today so I ate my hat. In "Transformers: Masterforce" they showed news clippings in which the Destrons were referred to as "Decepticons", that seemed like a nice nod to the Transformers we knew in America... I'm going to write an Emacs clone that uses Brainfuck for its scripting.

          • Re:Good (Score:5, Informative)

            by Freetardo Jones (1574733) on Thursday July 09, @05:47PM (#28643723)

            You obviously don't work with .NET on a daily basis. Same crap different syntax, different names on the box..

            I use it almost every day and in many ways I prefer it to Java (though I use Java often too for certain things it does better). I never get why people cares so much about what languages other people like to code in.

              • 200+ is for all the developer goo.

                The Client Profile for .NET 3.5 SP1, which is all that's needed to install a .NET app on a machine that doesn't have .NET 3, is 28 MiB.

                http://msdn.microsoft.com/en-us/library/cc656912.aspx [microsoft.com]

                And Silverlight is less than 5 MiB if the app can run entirely in the Silverlight sandbox.

                Mono is 75 MiB on Windows, 56 MiB on Mac, . Moonlight is (really?) 941 KiB.

                • by rdnetto (955205) on Friday July 10, @04:32AM (#28647321)

                  200+ is for all the developer goo.

                  Not quite true. The client profile cuts out a lot of useful functionality (e.g. LINQ), to the point where you might as well target .NET 2.0 instead.

                  That said, the total size needed for an online installation of 3.5 SP1 on Vista is ~50 MB (since it comes preinstalled with 3.0), and mono is less than 20 MB.
                  The full 200 MB is only required for WinXP systems that don't have any version of the framework installed at all.

          • Re:Good (Score:5, Informative)

            by Cyberax (705495) on Thursday July 09, @06:12PM (#28644007)

            Nope.

            C# right now has the following features that are absent in Java:
            1) LINQ !!!!
            2) Delegates.
            3) Anonymous types and type inference.
            4) Reified generics.
            5) Support for dynamic methods.

            C# 1.0 was just a carbon copy of Java. C# 3, not so much.

            • Re:Good (Score:4, Insightful)

              by cryptoluddite (658517) on Thursday July 09, @09:44PM (#28645635)

              C# right now has the following features that are absent in Java

              Right now Java has the following features that are absent in C#:

              1) High performance VM
              2) Code that does what it says without hidden conversions, text substitutions, and macros.
              3) Other languages that are actually useful like Scala and Clojure.

              Mono performance is a joke compared to Java, and MS CLR performance is even pretty bad in comparison. Code that is a one-liner because of lots of magic conversions and macros (like 'extension' methods) collects fanboys, but is counter productive for real, boring, meat and potatoes coding.

              And LINQ? Why are you doing database and 'data sources' queries in something like C#? Use python or something like that. You need that super-fast JIT "cc -O0" speed to print out customer numbers and such?

              Basically Java:C# :: C:C++. It's the same story all over again, but for typesafe languages instead of the systems code. C# thinks that making the code a concise series of magic conversions and convenient syntax makes it a better language. Java thinks that having code be straightforward and simple, but longer, is better. C has a solid niche, and will for decades. C++ is widely recognized as a byzantine failure in every case. We'll have to wait and see with Java and C#, but I know where I'd place my bets.

              • Re:Good (Score:4, Insightful)

                by Cyberax (705495) on Thursday July 09, @06:37PM (#28644255)

                "C# is VB with C syntax."

                Sorry. You don't know a shit about C#.

                  • Re:Good (Score:5, Insightful)

                    by Cyberax (705495) on Thursday July 09, @07:46PM (#28644839)

                    Friend, I _wrote_ a JVM implementation.

                    I know how garbage collector works in Sun JVM to the level of assembly language generated for write barriers, I know how HotSpot compiles byte-code, etc.

                    Well, the current C# is not very much like Java. It's actively moving towards functional languages (while Java is not moving anywhere) to the point where you can write purely-functional lazy-evaluated functions as LINQ expressions, something crazy like this: http://blogs.msdn.com/lukeh/archive/2007/10/01/taking-linq-to-objects-to-extremes-a-fully-linqified-raytracer.aspx [msdn.com]

                    VB is not a bastardized Java, it's a separate language (quite powerful in its VB.NET form), related to C#. It even has a few features not accessible from C#.

              • Re:Good (Score:5, Informative)

                by EvanED (569694) <{moc.liamg} {ta} {denave}> on Thursday July 09, @06:45PM (#28644365)

                C# is VB with C syntax. VB is Microsoft's bastardized version of Java.

                JDK 1.0: Jan 1996
                VB 1.0: May 1991

                VB was at 4.0 by the time Java was released.

                If by "VB" you mean VB.Net, I would say it's the reverse: C# is Microsoft's "bastardized version" of Java (though mostly better IMO), and VB.Net is C# with VB syntax.

        • Re:Good (Score:4, Insightful)

          by turgid (580780) on Friday July 10, @05:04AM (#28647441) Journal

          It's a Microsoft trap and it's a solution looking for a problem. I wouldn't mind if there wasn't the constant, implied threat of Microsoft suing the distributors/users of Mono (patents).

          It's yet another platform to maintain and support and more complexity for distributions.

          Very importantly, it is confusing in that it appears to make the .NET platform legitimate as a cross-platform, Open Standard. It is neither.

          If you buy SuSE Linux, you are probably safe from Microsoft legal action.

          With Mono I've had the pleasure of a light (and fun) rewrite of many of my applications for cross-platform compatibility

          And with Java, you wouldn't have had to rewrite anything.

    • by Anonymous Coward on Thursday July 09, @04:55PM (#28643005)

      The difference between Eclipse 3.4 and 3.2 is night and day when you actually use it.

      Just because it looks the same (a shock to people who might want to change their hentai GTK theme every week) doesn't mean it is the same.

      It's like those idiots that uses Java 1.1 in 1998 and think that Java 6 is pretty much the same.

    • Re: (Score:3, Insightful)

      Keeping themselves on the Swing train instead of evolving things like SWT was among Sun's greatest mistakes IMHO. :(

      It looks horrible on all platforms, because it needs to work on all platforms without using native controls.

      Sure, it's *hard* to make native controls work out well in cross-platform apps, but with enough thought put into it, it can be done pretty well after all. Qt is quite successful, for example. There have been apps I've thought was native using Win32 or GTK, when they were built on Qt. And

    • Re: (Score:3, Insightful)

      by Anonymous Coward

      My biggest reason for C#/.Net instead of Java?
      Visual Studio

    • by DragonWriter (970822) on Thursday July 09, @05:17PM (#28643299)

      The Java VM was a good idea, but Sun never bothered to port other languages to it.

      Well, except that in reality there are lots of implementations of non-Java languages for the JVM, several of which (Jython and JRuby, among others) have Sun resources behind them, and some of which are even Sun created (Fortress, JavaFX Script.) There were non-Java languages for the JVM before .NET existed.

    • by pherthyl (445706) on Thursday July 09, @05:44PM (#28643675)

      >> Think of network sockets, file access, threads, and a bunch of other things that quite frankly are annoying to do in C or C++.

      You're just using the wrong C++ libraries.
      Using Qt I can do all the things you mentioned and just about everything else in the C# and Java class libraries. Cross platform, without the performance and resource penalty of a virtual machine. Also the final product will appear more native on more platforms than C# or Java.

      Also because of Qt's design, I barely have to bother with memory management in my GUI apps. So far I'm averaging one delete statement per 1000 lines of code. Everything else is cleaned up automatically. If I thought a bit harder about my design I could probably get rid of most of those deletes as well.

    • by rdean400 (322321) on Thursday July 09, @05:48PM (#28643737)

      You might want to research before posting next time. There are more JVM-based languages than there are CLR-based languages.

      • by miguel (7116) on Friday July 10, @01:39AM (#28646499) Homepage

        Both the JVM and the CIL engines can be used to run any programming language you want. They are both turing complete systems, so there is not really anything that will prevent you from targeting any language to run on top of either one of them.

        The difference is that the JVM was designed for Java, and Java only.

        The CLI originally ran a variation of C++ (they internally called it SMC, or "Smack") and later they created C# and retargeted VB to run on top of it.

        But even before this went public, they launched an effort called "Project 7". The goal of this group was to port 7 proprietary languages and 7 research/open source languages to the CIL engine and learn from the exercise what changes were required to make the implementation more efficient. A large number of changes went directly into .NET 1.0, and they allowed the CIL to be a more efficient runtime for running C, C++, Eiffel, Fortran and Cobol than the JVM could. Direct memory manipulation, arbitrary vtable layouts, tail call optimizations all went into .NET 1.0

        With .NET 2.0 a new round of languages was tried. The research on ILX and OCaml (mostly using F#) was introduced into the virtual machine, making generic types first-class citizens in the VM, not just entities that were emulated (as they remain to this day in Java). The feedback from Eiffel lead to the introduction of covariance and contravariance in the virtual machine, another feature missing from Java.

        The work from Jim Hugunning on IronPython also drove the adoption of new low-level APIs that assisted the runtime in better supporting dynamic languages, all of these features appeared in .NET 2.0 and 3.5.

        So certainly, you can target anything into anything else, at the end of the day, everything is running on top of some CPU. The difference is that with .NET you have to jump through less hoops, and the runtime is richer for language developers.

        So in Java you can certainly emulate pointers and malloc for building a C compiler. The emulation will tkae the form of "Allocate big array, and emulate pointer operations there". Possible, but not very efficient.

        Generics is another area that helped languages like C# get generics that actually make sense, and do not require a PhD to understand. This is an important difference: in Java generics are emulated, in C# they are native to the environment.

        That being said, if you like Java, by all means, keep using Java.

    • by SpinyNorman (33776) on Thursday July 09, @05:57PM (#28643829)

      Think of network sockets, file access, threads, and a bunch of other things that quite frankly are annoying to do in C or C++.

      Not if you use Qt which has all of those and more in addition to the GUI stuff.

      Qt is a cross-platform library, not just a GUI library.

      Qt-based apps run on Linux, Windows, Mac, Solaris, Symbian S60 ...

      What are you using for the GUI in Mono? Windows Forms? You could have the full power of Qt via Qyoto...

    • by pak9rabid (1011935) on Thursday July 09, @05:28PM (#28643463)

      ...and we've had almost no exposure to the GUI packages in Java or C, which have a bit of a learning curve even for the educated.

      Actually, GUI programming in Java via Swing is really quite nice. There's a little bit of a learning curve (not so much if you're already familiar with the GUI event model), but you can pick it up really quick. C on the other hand...I havn't really had any direct experience with creating GUI's in C/C++, but if I had to I'd probably pick up Qt (especially after Nokia LGPL'd it), as from what I hear it's quite a pleasure to work with.

FORTUNE REMEMBERS THE GREAT MOTHERS: #6 "Johnny, if you fall and break your leg, don't come running to me!" -- Mrs. Emily Barstow, June 16, 1954