Monday, April 30, 2007

Java maturity

See the time this entry was posted. This reflects Java maturity. I decided to post this entry to remind me about some points and facts about the Java Platform and I put the words of another person in my mouth but this line of thought I share.
GPL Java could not have come at a better time to make a run at the Linux desktop, thanks in part to Microsoft releasing Vista. Whatever one's feeling about Microsoft, they are often a trend setter. So far, when it comes to moving away from harder to work with, bug prone, and security hazardous languages like C and C++ for desktop application development, Microsoft has been ahead of the game. The shift away from C++ to Visual Basic was the start of the trend, but with Vista, and Microsoft's movement towards "All new desktop applications should be written as managed code in .NET", the ante is now significantly higher. Developers in the world of Windows desktop applications are now being encouraged to write their new applications in managed .NET code that makes their lives easier and less error prone, as well as avoids major causes of security holes like buffer overflows. Linux desktop programmers, however, are still doing most of their work in C or C++, where they are still managing memory by hand, still getting routine segmentation faults because of memory management problems, and still dealing with the security hassles of C and C++. The time is definitely ripe for a change in the way developers write desktop applications for the Linux platform. In fact, that change is long overdue.

If Linux desktop application developers are going to make the transition to more productive managed languages, like Windows developers are doing, there are only two real platform choices they have: The Novell sponsored Mono project, or Java.

To me, Java seems like a much more solid choice for several reasons. For one, it has a substantial head start on Mono, with over five more years of development behind it than Mono. Java is already a very stable and mature platform, where as Mono is still evolving quite rapidly. Also, Java has a vast collection of open source tools and libraries available to help with just about any type of development that one might want to do--something that Mono can't even begin to match yet. Furthermore, Java has a much larger development community in place already, and remains the most popular language for open source projects on SourceForge, as well as on, where Java has 5383 projects compared to only 284 for C#--making Java nearly 19 times more popular than C#. And finally, Mono is doomed to always lag behind the official .NET implementation due to the fact that Microsoft's actual implementation is completely closed source. Now that Java is open source under the GPL, the open source GPL version will always be up to date, since it will be the "official" implementation. Mono also has a hidden licensing trap that Java does not. Because the class libraries are licensed under the MIT license, which has virtually no restrictions on what can be done with the software, companies can conceivably patent their improvements or modifications on the libraries and then enforce those patents on anyone else making use of of the improvements or modifications. There is an interesting article on NewsForge about this problem. It's a little old, but still good reading.

OK, granted I may be a bit biased in favor of Java. But I think my above points were at least reasonably objective as to why Java makes the best choice for the future of the Linux desktop. With the open sourcing of Java under the GPL, Sun has removed that final barrier to entry, since all of the performance, or "it doesn't look native" arguments are no longer valid.

And finally, both Linux and Java benefit from using Java on the Linux desktop, since both of them want the same thing, and can mutually contribute towards the same goal. Both Linux and Java want greater desktop market share. Java can give this to Linux by providing a more productive, more secure, and easier to debug platform for writing applications, as well a platform so that applications written in it can also run on Windows. This helps protect the developer's investment in a minority platform when it comes to the desktop. And Linux has something to offer Java as well: a second chance at becoming a major player in the desktop application arena. Linux is slowly but surely gaining desktop market share. Java can help it grow, and also grow with it. It could be that desktop Java and desktop Linux are a match made in heaven.

I read this commentary in a eMail sent to me on Tuesday, March 06, 2007 from Mike Urban and if you want to read all of that entry by yourself link to this
Post a Comment