Mono Outpaces Java In Linux Desktop Development
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."
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...
My biggest reason for C#/.Net instead of Java?
Visual Studio
"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...
------ The best brain training is now totally free : )
Nothing to see here. Move on.
Mono is becoming popular for Linux development because it does not try to be cross platform. It feels much more natural than Java programming.
It rained here this morning, that means it must have rained all over the world.
...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.
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.
He's probably assuming malice in TFA comparing an old version of Eclipse with the last version of MonoDevelop, and claiming Eclipse 3.1 is lacking features it actually has.
"I'm never quite so stupid as when I'm being smart" (Linus van Pelt)
"C# is VB with C syntax."
Sorry. You don't know a shit about C#.
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. Similarly, I can program a Qt4 application with Qt Jambi (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 has a ton of bindings).
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 (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#, 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.
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
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#.
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.
No problem is insoluble in all conceivable circumstances.
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.
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.
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.
Stick Men