Java and Linux - A natural fit.
For the last two Linux World events (one in CA and one in NYC), I've been asked to identify all of the "Linux projects" on java.net so that they could be highlighted at the show. [insert long sigh here] Much to the chagrin of the person asking, I replied "all of them".
Both the question and the answer got me thinking about the seemingly obvious, yet overlooked synergies between Java, Linux and open source development. They have a lot more in common than just a common enemy.
Sure, the Java and open source communities have had their issues with one another. Speaking on the topic of Java last year at Linux World and at OSCON was an interesting education for me to say the least. Regardless, there are a lot of good reasons to use Java, Linux, and open source in the same sentence.
Linux has practically become the poster child for open source development. Java is well positioned to add a lot of value to both Linux and open source development in general, but it is not going to do this on it's own. Consider that one of the fundamental drivers of open source is the open sharing of source code among the largest community possible in order to encourage collaboration. Yes, the "free lunch" part is also important but most people get involved in open source to contribute as well as to use.
If you are going to write something with the intention of sharing it, why limit your audience by writing to a specific OS? Remember, even Linux has different flavors and may require a port to run from one version of Linux to another (much like cousin Unix). So, writing an open source application for Linux today and choosing a language other than Java (i.e. C, C++), requires a decision. Which version of Linux? Another option is to have a separate build for each variant.
For most open source projects, there is a different code base and build for every operating system that is supported. As we all know, not all ports are created equal. Much to my dismay, OS X is somewhat of an afterthought on openoffice.org because it always seem to be a rev behind the releases for Windows and Linux. That's the way it goes when you have to duplicate effort and resource for each operating system you support with little or no incremental value. Then priority kicks in and if your OS has a low priority, you're out of luck.
On the other hand, open source applications written in Java can be written so that one code base can support Linux (all variants), Windows, Solaris, and OS X.
With all of that said, Java is very complimentary to Linux and Open Source development. While there are many open source applications that are written in Java it is still a minority to ones with separate proprietary builds for each operating system they support.
How does Linux and java.net fit together? For the Linux developer, many of the projects on java.net will run on Linux. The ones that require native code not written for Linux would be the exception. Even those would only require the creation of the native code component. Either way, there is a ton of Java code out there for the taking that could be repurposed for the Linux environment. Don't overlook it when your looking for some good source code.
Providing better access for Java into the Linux environment is an area of opportunity. Java is occasionally disadvantaged by it's inability to access operating system internals. For example, I don't know of any way to update a Windows registry using Java. The creation of Java utility classes for better access into Linux internals would be a good way for Java and Linux developers to work closer together.
So, there are many reasons why Java and Linux haven't fully leveraged each other, but there are far better reasons for them to do so. Now, more than ever, the two communities have a lot to offer and gain by a closer alliance. Making Java more useful to the Linux environment would be a good thing.