Thanks a lot for following along with the observations that made me conclude that Java rocks more than ever. This is the third part, taking a look at open-source.
Feel free to tell me about your experiences and findings, I love to read all your different viewpoints. Some people argument that many of these reasons were true 10 years ago. That’s totally correct and actually reinforces the topic at hand! When you combine everything together with the fact that many features have stood strong for over a decade and were even dramatically improved upon, it’s easy to conclude that the Java platform is in its best shape ever (hint, Ever is not a programming language).
As a reminder, here are my top 10 favorite things about the Java platform again:
- The Java Compiler
- The Core API
- The Java Memory Model
- High-Performance JVM
- Intelligent IDEs
- Profiling Tools
- Backwards Compatibility
- Maturity With Innovation
This time I’ll talk about #3, Open-Source.
What rocks about Open-Source and Java
I’ve contributed to and created open-source projects for my entire software career: from GTK+ to Gentoo Linux to OpenLaszlo to RIFE to EigenD … with dozens of other small stops along the way. I consider the open-source mindset and community to be an essential part of software development.
There’s a Jar for that
I hear you immediately say that open-source is not unique to Java, and you’re right, it isn’t! What is unique though is that the Java platform ranges all the way from mobile to enterprise and that many of the world’s critical systems rely on it. Linux is possibly the only other open-source technology that has achieved similar ubiquitousness, Java being the only software development platform with that status.
Obviously, the C and C++ language are used even more but they don’t have a stable and common Core API and are certainly not a platform. This effectively splits many C-based open-source efforts up into isolated silos that rely on a specific set of core classes. A lot of the efforts are duplicated and instead of combining forces to move forward as a community, many projects mirror siblings for the mere reason of being based on another API (for instance Gnome, KDE, XFCE, Enlightenment, …). When you add different licenses and the lack of operating system independence to this, there’s a huge amount of fragmentation with sometimes no viable open-source solution being available for your needs.
I found this to not be the case in Java. I’ve always been able to find a viable library for general-purpose functionality with often even the burden of having to choose between different fundamental approaches for a particular problem (web frameworks or template engines anyone?). It only takes a glance at the language-based categorization of projects in the Apache Foundation to see how far-reaching this is.
Everything about Java is open: from the language, to the standards, to the core libraries, to the virtual machine and the development tools. Since the open-source mindset is so pervasive in the Java world, present at its core and tested at enterprise-grade level; it’s become logical for commercial services to be built around thriving projects. The prevalence of professional open-source companies removes the risk of using an open-source solution that relies on individuals. As a solution provider, you get the safety net of continuity, combined with top-to-bottom consistency and the freedom of open-source.
That is a very powerful combination to beat for a development platform, one that is mostly only seen for specific products or operational tools!
Community spirit … or consuming spirits
Obviously, open-source goes hand-in-hand with community and here Java is again as vibrant as it gets. More than a hundred of conferences spread over the world and close to 400 registered Java User Groups allow any developer to learn from his peers. Obviously this is just the tip of the iceberg with many online communities that are bursting at their seams.
This community spirit has become standard for us Java developers, but I found that it’s not as evident as one might think. Being a musician and music being all about sharing and all, I expected that working on music software would be community to the n-th degree.
Something like an orgy of sharing goodness with mental sparkles that would continuously ignite everyone’s brain and transport us, music software makers, to a fairytale geekdom nirvana equalled only by recording an awesome album on drugs. Instead, I found a barren wasteland of quirky towers with guards posted in front of every little idea.
Technology there is pretty much in a stalemate situation where everyone is scared by others stealing the slightest ‘invention’. The same algorithms are reused and repackaged over-and-over again without much innovation. The last time everyone agreed upon something was in the eighties when MIDI arrived and nowadays the industry pretty much considers that an accident that will most probably never be reproduced again. Most open-source efforts in this sector are driven by universities and the educational sector, which is a far-cry from the professional open-source we see in the Java world.
Stay tuned …
Summing up, open-source is a given in the modern software world and Java provides the development platform that is the most vibrant, the most consistent and the most reliable out there. While one might have expected that an enterprise solution would be completely closed and proprietary, the exact opposite happened and Java consistently gets a level of open-source contribution that pushes the platform forward on all fronts.
The next feature I’ll talk about will be the Java Memory Model and we’ll finally get a bit technical … until next time, keep rockin’.