Mono Outpaces Java In Linux Desktop Development 598
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."
No mention of X-platform (Score:1, Insightful)
Cross platform is a huge reason why I've been loving Mono.
I've used java for years because it took common programming tasks and made them not only cross platform, but some what standard. .NET/Mono borrowed from that.
Think of network sockets, file access, threads, and a bunch of other things that quite frankly are annoying to do in C or C++. Even worse they are way different on Windows and Linux and so you end up writing big chunks of code twice...for really no reason. Apache portable runtime hopes to do it for C++ apps...but it's quite frankly a pain.
Bottom line if you want to write a GUI based type app Mono is better than Java Swing and better than playing around with C++ and GTK+...unless you need something to the scale of Firefox or openOffice. Even then I think Mono could scale.
The Java VM was a good idea, but Sun never bothered to port other languages to it. With Mono you get a choice of languages, a common library, and apps that really can run anywhere without a whole lot of extra work.
One sentence that summarized it all for me (Score:3, Insightful)
...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.
Re:No mention of X-platform (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 then I'm a nitpicking guy that often notice when the pixels are off. Running Swing is like watching a puke dry in comparison. For no special reason, because it's shown that native-like controls can be done quite successfully.
Java still rules server side (Score:5, Insightful)
Although I agree we shouldn't underestimate MS copycatting...
Re:No mention of X-platform (Score:3, Insightful)
My biggest reason for C#/.Net instead of Java?
Visual Studio
Re:Good (Score:0, Insightful)
Mono needs to die a death. Please ignore it and hopefully it will go away.
.NET is an extremely popular platform. Mono is a great back door for Linux to get into the business environment by being able to say that you have Linux servers AND .NET support. There will be less worries about moving applications.
And as far as the parent is concerned, I have to agree. Java class hierarchy is a big pain in the ass! Trying to find needed classes and having to include things that aren't needed just to use certain features. It's as bad as MFC in that regard.
Nope, I think .NET is better in that regard than Java is.
Re:TFA is poorly written, but... (Score:1, Insightful)
It's a developer tool. Pull down the archive and run it. If it's that difficult for you, you have no business getting paid to develop code.
Outpaces? (Score:4, Insightful)
"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...
Not the kind of articles to get linked by /. (Score:5, Insightful)
Nothing to see here. Move on.
I don't think so (Score:3, Insightful)
Mono is becoming popular for Linux development because it does not try to be cross platform. It feels much more natural than Java programming.
Re:no mono (Score:5, Insightful)
It rained here this morning, that means it must have rained all over the world.
Re:From a user perspective (Score:3, Insightful)
I know that, theoretically, java apps are fast, compile well, and so on... but in practice, they just feel like trudging through sludge. Every single time. Perhaps that's just because I'm dealing with them on the desktop, instead of on the server... but still, when I've got dozens of examples and it's invariably true, it eventually stops being anecdotal and starts becoming data.
Re:Compatibility != Equality (necessarily) (Score:5, Insightful)
...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.
Re:One sentence that summarized it all for me (Score:3, Insightful)
To this, [Linux] zealots will defend the status quo saying choice is working for Linux as if there are no draw backs.
The problem with Java packaging on Linux has been Sun and their insane requirements, not Linux.
we in the Linux world still command a very small percentage of active users of desktop Linux
And you know this... how? As far as I can tell, there are probably as many Linux desktop users as there are OS X users. Is OS X irrelevant, too?
Re:Good (Score:3, Insightful)
Re:MS Is Making Fools Out Of The Open Source World (Score:2, Insightful)
After all the years of just how invincible and all powerful open source is it is staggering to look at how easy it was to stop it dead in its tracks:
A simple fork of the current main desktop package and the Linux world has been wasting their time in KDE vs Gnome flamewars for years now.
And then you had Sun performing the thankless task of keeping Java free from destruction by Microsoft while the stupid little kids here on Slashdot were screaming about how Java isn't 'GPL'.
And now the Linux community is actually starting to willingly include a Microsoft patent mess right into the heart of distributions - and for what? A few shitty and poorly written apps that already have faster, lighter, and better C++ versions.
Anyone see Apple fucking around with Mono? Nope.
Anyone see Google fucking around with Mono? Nope.
You would either get laughed at or outright fired if you made such an inane suggestion.
But the Linux community never fails to seize an opportunity to shoot itself in the foot.
Re:This is beyond garbage (Score:3, Insightful)
In fact, Eclipse's code completion, integrated debugging and especially refactoring capabilities are stellar. Can Visual Studio do "extract to local variable" and "extract to method"?
Re:This is beyond garbage (Score:5, Insightful)
Re:Microsoft shill (Score:5, Insightful)
Re:No mention of X-platform (Score:3, Insightful)
If your idea of Cross Platform is API's designed for Windows with all other platforms being an afterthought...
Re:Compatibility != Equality (necessarily) (Score:1, Insightful)
Excuse me sir, developing in Swing is not nice. It's hell on a stick.
Thank God for astroturf (Score:2, Insightful)
Don't get me wrong here - I despise Java, primarily because it's a resource hog on all platforms. Only masochists could ever have really liked Java - especially on older and/or low end machines. It blows. But, mono? Microsoft is blowing it's own horn here. Java is already on 100% of *nix desktops, plus or minus a percent. Mono has made it onto 10%? Wow!! Mono growth outstrips Java!!!
Give me a frigging break.
There must be some natural turf somewhere, but we won't find it here.
Re:Good (Score:1, Insightful)
People care about what other people code in if there's a 200+MB download just to be able to run it...
If people coded in native apps that argument would be fine, but if I have to install a huge framework to run a note taking program it's hardly worth my time.
Re:Good (Score:4, Insightful)
"C# is VB with C syntax."
Sorry. You don't know a shit about C#.
Java vs. C# is the wrong comparison (Score:3, Insightful)
Linux Desktop: Not freakin' Swing! (Score:5, Insightful)
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.
As a Mono/.NET Fan - Idiotic Article (Score:2, Insightful)
I love C#/.NET/Mono, the platform is excellent and the languages great. I also work a *lot* with embedded java and NetBeans - its ok but I do feel Java is inferior to C#.
However that article was seriously crappy. MonoDevelop is nice and shows potential - but its a toy compared to Eclipse, NetBeans or Visual studio, I would never consider it for enterprise development or a project of any size, I'd rather work with cmake and Kate. When we see C# support integrated into KDevelop4 we might see a decent C# IDE on linux.
And those bizzare comparisons of project numbers - weird. And is it just me or was the grammar and sentence construction erratic and disjointed.
I want to see more mono on the desktop and server in Linux, articles like this don't help.
Re:Good (Score:5, Insightful)
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:MS Is Making Fools Out Of The Open Source World (Score:3, Insightful)
Re:MS Is Making Fools Out Of The Open Source World (Score:4, Insightful)
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.
Re:TFA is poorly written, but... (Score:3, Insightful)
You have just got to be kidding. For Windows it's just a .zip that you unpack, then run eclipse.exe. Make a shortcut if it helps. For Linux it's a tar and you can use a graphical archiver for that too. If a "software developer" can't work that out, I don't want to be anywhere near their code. It takes more clicks just to create a new project than to install Eclipse!
Re:What is strengthening Java according to TFA? (Score:4, Insightful)
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.
Re:Good (Score:4, Insightful)
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:MS Is Making Fools Out Of The Open Source World (Score:3, Insightful)
Could you cite an independent legal opinion that states the "community promise" is binding?
Re:MS Is Making Fools Out Of The Open Source World (Score:3, Insightful)
Could you cite an independent legal opinion that states "mono faces patent problems beyond the average open source project".
Re:Good (Score:2, Insightful)
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.
You are obviously talking a lot of shit there. I can't give numbers about issue #1, but from experience they are at least equivalent for general use. And its not like if anyone couldn't just open 2 apps in their desktop and compare. Java may be faster here, slower there and vice versa. But you certainly won't find any huge differences in the runtime that makes one seem useless next to the other.
.NET, you must be out of your mind. Simply going from the standard languages that .NET supports out of the box (C#, VB.NET, C++, F#) you have 4x more languages than Java, and they are certainly useful. If you count the other languages that people have created or ported to the CLI, you can even count Java.
.NET, like *supported* multi-platform runtime from the official vendor, more libraries due to more time in the market, a more open community, etc. You could simply have used them in your argument instead of saying a lot of nonsense shit about stuff you don't want to understand.
Now, about issues #2 and #3, you are probably smoking something.
What kind of hidden conversions or text substitutions you are talking about? As any language, there are *features* that change the behavior in some way. There are no hidden conversions, there are documented implicit and explicit casts, there is marshalling for interoperability with other platforms that are completely configurable. Any language has this kind of thing to some degree, even java. Also, NET itself have no notion of macros, because macros are a compiler feature, not a runtime one. C# for instance doesn't know what is a macro, it simply has some basic pre-compiler, but nothing like C. It seems you don't understand or don't care about learning how the language works, even though all the reference, compilers and SDK is freely available online. The fact that you can't understand a feature that any VB programmer understands really tells me you shouldn't be spreading shit about it.
As for saying that java has the advantage of having more useful languages than
You are just a java fanboy that will defend any feature that java implements, and bash any other that java doesn't have, until the day it is implemented. You are no different from the fanboys that love LINQ or extension methods.
The fact is, Java has a lot of benefits over
Re:Good (Score:4, Insightful)
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.
What does this mean anyway? (Score:2, Insightful)
*sigh*
You can either develop Linux desktop applications on C#... or just develop desktop applications on Java that, coincidentally, work in Linux just fine. The reason why no one makes "Linux desktop applications" in Java is that it's much easier to just screw the platform dependence and go cross-platform. What you lack in platform integration you make up with less headaches when you do choose to deploy the applications across different platforms...
Last I checked, I think Gtk+ and GNOME bindings exist for Java too. But with Sun improving the Gtk+/GNOME native look and feel support in JRE itself, and more and more cross-platform desktop application building and desktop integration stuff coming in the future (JSR-296 Swing application framework stuff looks pretty cool, for starters), who would want to tie the app to Gtk+ and GNOME specifically when you can, right now, build apps that can already pretty much pass for GNOME apps?
Re:No mention of X-platform (Score:3, Insightful)
Concerning type erasure, as it has been pointed out by my sibling-thread, it's a design choice. Scala also has adopted type erasure with generics. The other choice could have been made, that is encode type annotations for generics in the bytecode. There is nothing in the JVM preventing it to be done, since it can be done manually, the [alternative language] compiler can add the required info. In Scala, the choice has been made to mimics Java (and I guess, the more the generated code will look like Java, the more we will benefit from runtime optimizations). Thanks to Scala's very powerful syntax, there is a library called Manifest that automatically adds the type information and easily allows you to code as if there were no type erasure.
Still, I agree this feels like a weird rule, especially the first time you run into it. It is not the expected uniform behavior. The same goes will tail-call optimization that should be in the JVM (and should be in OpenJDK7), closures, etc. Generally speaking, the JVM should be a generic platform for languages exactly like the
But I am one of those guys who wouldn't run Scala on
You have done an impressive work with Mono. Don't you think the same effort could have been to make the [renamed] Java platform as generic and powerful at the
We both know the linked article is a joke and Mono doesn't seem to be gaining any real share. Sure, C# and
At the end of the day, I just regret the Mono vs Java situation created yet another division in the community. Of course, and I thank you for it, you are very much responsible for OpenJDK becoming free. And I agree that Sun's strategy regarding both licensing, evolution and genericity of the Java platform has been awful. Yet, right now, between the two, most free software enthusiasts would choose Java. There is no way to rewrite the past, but maybe there could be a way for a better outcome.