Software Technology will always been in constant flux. Change will always be inevitable. So as a Java developer you need to continue to groom your career by learning new techniques and technologies. It’s both a curse and a blessing. It’s a blessing because Java, without a doubt, is where a lot of innovation happens. The question though is, out of the multitude of Java projects out there, which ones should we invest our limited bandwidth on? This is my attempt at answering this question.
Here is what I humbly believe to be the top 5 Java based technologies to learn in 2008:
- #5 OSGI – Reality check, monolithic containers carry too much baggage and Java libraries are so richly cross dependent. The trend is there, a lot of frameworks are moving towards OSGI to bring some sanity in their deployment. Projects that have employed OSGI in anger are Eclipse via Equinox, Nuxeo and BEA Event Server,
- #4 JCR – Reality check, not all data fits well within a relational database. In most cases, users want to store their own documents and have those properly managed (i.e. versioned). JCR with it’s Jackrabbit implementation is becoming the de-facto standard for maintaining data other than the structured kind. Some examples of projects that have used this in unexpected and innovative ways are Drools BRMS for managing business rules, Apache Sling for universal resource storage and Mule Galaxy for SOA governance management.
- #2 Groovy – Reality check, sometimes you have to write quick and dirty scripts to get your tasks done quickly. There’s a lot of traction these days for dynamic scripting languages like Ruby. However if you want to truly leverage your existing skill set, then it’s more efficient to take a evolutionary step. Groovy has come a long way since it’s rocky beginnings. I believe Groovy is finally mature enough (it finally has a debugger) that it’s safe to dip your toes in it. Furthermore, there’s are a of books, books about frameworks (i.e. Grails) and tools (i.e. IntelliJ) that help you from getting lost.
- #1 Cloud Computing – Reality check, sometimes it just isn’t worth it to setup your own physical servers. Amazon’s services are going to be an extreme boon to development productivity. One of the most time consuming efforts, and one that is too often taken for granted, is the deployment of a load and performance testing harness. In a lot of rigid organization, it is sometime problematic to acquire so much hardware for use only for short time periods. There aren’t many tools out there yet for the Java developer (see: “Grid Gain Distributed JUnit“), however it’s ramping up pretty quickly. So just as we create our builds from the cloud via Maven repositories, one shouldn’t be surprised to find cloud based testing resources to be part of every developer’s tool chain in the future.
With all these nice new shiny objects to play with, I’m constantly surprised why people keep claiming that Java is dying!
I’m certain you are all agreement with me on what belongs to this list. However if you’ve got some violent objections, I certainly would like to hear your view.
UPDATE Here are the “Top Five Java Technologies that Did Not Make the List“.