The Register has a good article on Sphinx search with some entertaining pop-shots at Java and "enterprise software" that got a rise out of me:

Solr is popular with the enterprise crowd, who love its Java. Being a Java program, Solr includes no shortage of technology whose acronyms contain the letters J and X.

This tickles the enterprise pink, because these sorts of developers love nothing more than hanging out around a whiteboard drawing boxes and arrows and, from time to time, writing XML to make it look like they're doing real work. Solr thrives in this environment, being an Apache Foundation project, the Apache Foundation, of course, widely known as a cruel experiment to see what happens when bureaucrats do open source.

Having a bit of experience with Java from academia and a few open source projects I make use of, I can't help but laugh at how comically and concisely the editor summed it up.

By and large, successful open source projects tend to be written in languages other than Java. The entire GNU/Linux OS stack is primarily C, with some components using C++ like KDE, OpenOffice and Firefox. On the ever popular web front, PHP, Ruby, and Python lead the pack.

I think it turned out this way for a multitude of reasons. When working on the OS stack, the power and control of C and C++ are hard to beat. The plethora of libraries and raw speed of these compiled languages set the bar high for any newcomers. Java exists as a kludge, mildly useful for desktop apps and mildly useful for web apps while historically having a lot of problems. Native look and feel have long been the layman's complaint, though SWT has done a pretty good job there. Of course, omnipresent Java in the Linux world is relatively new. I think Java would have been the darling language of client apps had it been open sourced sooner, but this came about 7 years too late to have a large impact on shaping the common FOSS userland.

It is interesting how the open source projects built with Java tend to be highly bureaucratic and abstract. I think the bottom line is that FOSS programmers do what they do because it is fun and demand pragmatism. The "enterprise software" attitude/baggage that many Java apps and libraries carry are a big turn off to pragmatism and the hacking culture. The barrier to entry for Java web programming is also much higher than its "scripting language" competitors, which carry light and simple frameworks that focus on results, not procedure.

Java itself isn't that of a bad language. I actually enjoy working with it in school (...though I think it really isn't appropriate as an introductory teaching language, shielding important concepts from students. Maybe a future post?..). When it comes time for real work though, I consider Python, C, C++ more pragmatic depending on the job at hand. That, and the fact that most of the common scripting languages are gaining JIT compilers may accelerate Java toward status as a legacy language.

Your thoughts?


comments powered by Disqus