So today's the 7th of July (7/7), and also, not so coincidentally, the day Oracle has chosen as the official day to launch Java 7.
We weren't invited to the party, but let's take a break anyway from our Tour de Nuxeo series to look at the 7 reasons why we're happy to be using Java (Java 6, actually, we're in no rush to adopt Java 7) for the Nuxeo Enterprise Content Management Platform.
We develop Nuxeo applications with confidence that the application will run on Linux, Windows and Mac OS.
Of course, we run integration tests on all three platforms just to be sure.
It's not the 90's anymore. The JVM, with the integration of the HotSpot technology ten years ago, is now on par (i.e. only 10% to 2x slower on most benchmarks) with the fastest languages, usually C and C++.
And, as a managed runtime, it also has many advantages over pure C or C++: no segmentation faults or buffer overflows, and a garbage collector that prevents most of the memory allocation mistakes that plague lower level programming languages.
Java has OSGi, a module system and service platform that allows developers to create software as independent components that can be wired together at runtime, allowing for cleaner (more decoupled) architectures and real software reuse.
There are many open source tools (and a few proprietary ones) that help you be more efficient when working in Java.
Dependency management is much easier with Java (thanks to Maven, Ivy, Gradle and other similar tools) than with most other programming languages.
With Eclipse, for instance, one has a modern IDE that really helps developers (from the most junior to the most experienced) be efficient in what they do, that detects many errors even before the program is run, and that has support for refactoring to make sure your code base is always as cleanly architected as possible.
As a consequence of the previous point, there are thousands of mature open source libraries that one can use to write modern enterprise application software, out of which we can choose those we think are best-of-breed and useful to make our software.
We're not in this open source business just for the fun of it, but more importantly, to do serious projects for serious customers with serious partners.
And, surprise, all of them (customers and partners) are always happy to hear that we use Java, because they have developers who know Java and sysadmins who know how to manage Java applications.
So, no need to train developers on basic technologies, just (sometimes) on the subtleties of Enterprise Content Management and on the Nuxeo API, and they can start working on a project.
This is also the same for most other software companies we work with: most of them are using Java making it easy to integrate their applications -- for those who don't, we provide many web services APIs so that's not an issue either ;).