So my manager at work recently sent a question to some of our team members
wondering what we think about this article on SD Times and the presented view about Mono outpacing Java on Linux. Here are a couple of my thoughts…
There are a few different aspects to the usage of Mono and Java that can be compared, so lets talk about them one by one.
Availability/Installation of the Runtime and SDK
The scenario about the runtime and development kit is a bit different for Java and Mono. There are a few different runtime and SDK implementations for Java, where as Mono is really the runtime for the .Net platform that runs on Linux. Many of the runtimes for Java (e.g. Sun JVM, IBM JVM, Oracle/BEA JRockit) have been available and running just fine on Linux for years. The closest equivalent to Mono in terms of licensing and nature of the project is probably OpenJDK, which is now available in all the big Linux distributions by default, fully open sourced and going forward with Java 7 is the main code line for the Sun JVM/JDK.
Due to the perceived or real conception about looming patent issues with Mono, there is quite a bit of mistrust towards Mono in the Linux community and there are users that uninstall Mono even if it comes out of the box with the distribution. There is still conflict about the usage of Mono in the Gnome community, which is the only bigger community that ever adapted Mono the first place.
Overall I would say that the availability of the runtimes is at least even between Mono and OpenJDK. Java has the additional advantage that other very high quality runtimes are also available and they are all compatible when it comes to running your code.
In terms of the SDK there is a major difference between Java and Mono in what constitutes a full SDK and runtime. All Java runtimes/JDKs have a full set of API’s coming with it that are certified for e.g. Java 6 which include everything from networking to GUI programming and more. This means that an application written for Java will run on all runtimes on Linux as well as all other platforms like Windows or MacOSX with the runtime unmodified. With Mono on the other hand an application written for Mono will run on Mono on Windows or MacOSX, but an application written for the .Net platform on Windows will probably not run since many APIs of the Microsoft .Net platform are not yet implemented by the Mono team.
Server Side Applications
Mono has very limited traction for server side applications in general and on Linux specifically. With Java however Linux is the most common deployment platform for production application servers like JBoss, Tomcat, Websphere, Weblogic, Jetty and so on.
Desktop Applications
With regards to desktop applications the few Mono apps with traction in the Linux market actually use GTK bindings and are closely affiliated with Gnome. This means that while they are nicely integrated Gnome applications they are not easily portable to Windows or MacOSX unless the GTK is installed on those platforms. Java applications on the other work just fine across the platform including Linux.
When it comes to IDEs Mono Develop is not even close to Eclipse and while Eclipse might not be packaged for Debian it is an easy download and install process like all users on Windows are used since they lack the luxury of a package management system that we Linux users love. And if you really need a packaged IDE on Ubuntu you can just install Netbeans.
Summary
Summing up I can just say that I am not worried for Java on Linux. It brings a full stack of open source runtime, SDK and applications to Linux that all run on many platforms, not just a subset of a proprietary platform that runs on Windows. There is an even brighter future ahead for Java with things like packaging enhancements with Java 7. Even if things don’t work out for Java and it lingers as a language where it is now, it might well be replaced with e.g. Scala as the language of choice on the rock solid, super performant JVM runtime with other languages like Groovy, Jython or JRuby, Clojure, Fan or Fortress around to keep the platform rocking.
To me it seems like the article was initiated by the controversy around Mono/.Net on Linux and Richard Stallmans recent statements and the avalanche it caused. In any case though, however you look at it David Worthington’s article is severly biased and tries to shed a wrong light. Not what I would call professional journalism, but then I am not a journalist. Just a developer that uses Ubuntu and Java every day.