The Best and Worst of 2009


On the eve of the last day of the penultimate year of the first decade of the third millennium and continuing a tradition I started in 2005, here’s a quick summary of 2009 – ignoring everything between the peaks and troughs.

Best Moment

Aside from every 3 months when Red Hat announces another knockout quarter 😉

My eight-year old daughter is absolutely racing through the Harry Potter books. She’s finished the first three and is just over half way through the forth (Harry Potter and the Goblet of Fire). After she’s finished with each book we watch the movie version. I’ve always been a big Sci-fi and Fantasy fan and it’s good to have an excuse to watch the Harry Potter movies and fantastic to see my daughter see the magic of books despite the lure of on-demand cable, movies, video games, the internet, etc.

Biggest Disappointment

This is a tough one – it’s a toss up between the right wing nut cases who maintain that this country’s problems only started the day Obama took office; and the TSA who are still punishing millions of innocent travelers every day with their ill-conceived knee-jerk reactions because they have consistently failed to improve air travel security. I can easily ignore the right wing nut cases – but I have to travel and comply with the TSA’s pointless and ineffective rules. So the TSA wins.

Best Application

My utilitarian ThinkPad semi-failed me over the summer so I used that as an excuse to flip back to using a Mac. I still use the ThinkPad as a desktop in my home office running Fedora but it is no longer portable. I’ve been using multiple machines for years (typically running OS/X and one or more flavours of Linux) and never found a nice simple way to share files until I found Dropbox. I use it all the time and now find it invaluable. [note to self – I should probably post some tips and ideas of how I use it at some point]. So Dropbox gets the top-spot. Runners up are MindNode (mind mapping) and Evernote (lists, notes, etc.). Note to personal productivity software developers – it’s no accident that all these apps. integrate with my iPhone.

I should also add; or repeat, as I’ve said it before – AR is going to be *big* – maybe this year enough people will be carrying a powerful smartphone to make 2010 the year of AR.

Best Book

I had high hopes for “And Another Thing”, Eoin Colfer – Book 6 of the HHGTTG “trilogy” but I think it was a mistake to try and replicate Douglas Adam’s style – that’s too high a bar for any author in my opinion. I’m currently wading through “Too Big to Fail”, Andrew Sorkin – an epic and well researched saga of the financial grey goo but I can’t count that as I won’t be finished with it this year. So I’d have to choose the “Omnivore’s Dilemma : A Natural History of Four Meals by Michael Pollan. The book didn’t change my life in a major way but it has made me a bit more selective about what I am wiling to put in my stomach.

Anyway, enjoy the Blue Moon tonight and have a healthy, prosperous and happy New Year.

The Evolution of Enterprise Java


Zallinger’s “March of Progress” from wikipedia.

I’ve been part of the Java ecosystem for long enough to see and be part of every Java EE / J2EE release to date. I still have a Forte SynerJ box-set somewhere – we claimed it as the first fully integrated J2EE 1.2 App Server and IDE – that was around 1999 and I was part of Sun for every subsequent release up to Java EE 5.

With the final votes in for Java EE 6 and with the year and decade coming to an end – it seems a fitting time to look back and see how far the Java EE platform has evolved :

  • J2EE 1.2 (1999) – announced just short of 10 years ago was the first attempt to create an umberalla specification to cover some existing web-tier, messaging and data access technologies (JDBC, Servlets, JTA, etc.) as well as the new middle tier technology – EJBs.
  • J2EE 1.3 (2001) – was from my recollection the first broadly adopted and deployed version, it added Connectors (a standard way to connect to back-end ‘legacy’ systems), some rudimentary support for XML Web Services and a pluggable security layer. EJBs got a major overhaul.
  • J2EE 1.4 (2003) – added JMX, a gaggle of specs. to support Web Services (JAXR, JAX-RPC). I think around this time – everyone had written their first App. using EJB’s and had learned that combined with CMP (Container Managed Persistence) they weren’t exactly getting the productivity boost they were hoping for. I think J2EE 1.4 was the “Vista” of Enterprise Java – over-engineered and ultimately underwhelming.
  • Java EE 5 (2006) – A name change and some new hope – mandatory XML deployment descriptors gave way to annotations, persistence took a lesson from the de-facto ORM solution – Hibernate. There was an alternative to, ahem, RPC-style Web Services with the inclusion of JAX-WS.
  • Java EE 6 (2009) – It’s been a while in the making and had a bad start but after ten years I think we now really see the start of a cohesive platform with a common programming model via CDI (JSR-299) and many of the criticisms leveled at the platform have been answered.

Java EE 6 also defines the new Web Profile – this is essentially a slimmed-down EE focussed on web applications. I think it’s much more than that – I think it’s an opportunity to really redefine the Enterprise Java platform and shed some of the legacy APIs. While the backward compatibility that EE dictates has been good – it’s also contributed to some bloat in the platform.

It’s interesting to see how the size of the Java EE spec. has changed over the years (assuming size of the spec. is a reasonable indicator of complexity)

  • J2EE 1.2 weighed in at just 140 pages;
  • J2EE 1.3 added about another 25% (174 pages);
  • J2EE 1.4 increased it by almost 40% (246 pages)
  • Java EE 5 actually bought the page count down by 10%;
  • and the last draft of the Java EE 6 spec. I read only added about 6% (236 pages) – despite some pretty major enhancements.

Despite several rounds of consolidation and various acquisitions – vendor support has remained impressive. There were 18 J2EE 1.2 certified servers, and even seven years later there were still 13 (for Java EE 5). I’d be surprised if there weren’t at least 10 vendors supporting Java EE 6 at some point – even after Oracle has assimilated BEA and Sun.

Despite its huge adoption, Java EE and the process by which it is defined (the JCP) has drawn a lot of criticism. Releases have often fallen short of expectations, been perceived as overly complex or taken too long to deliver; but despite the criticisms nobody can deny that Java EE has been a huge success. Java EE is not just a specification – its grown into an entire category of the software industry. I can think of no other technology that has bought so many competing vendors together to define such a broad and widely use platform.

I’m sure the JCP isn’t perfect and I’m sure vendor politics gets in the way of progress from time to time and Sun’s stewardship of Java hasn’t been flawless but step back and try to imagine what our industry would be like without an open and collaborative Java ecosystem. It will be interesting to see whether Oracle take a different approach (as they’ve suggested in the past) when they become the new stewards of Java. Let’s hope hey continue to encourage collaboration and diversity.

The various expert groups that define the Java platform is not, as many suggest, completely controlled by big vendors. My own company Red Hat is not an industry behemoth, there are divisions and offices within companies like IBM and Oracle that are bigger than Red Hat and JBoss, the middleware business unit of Red Hat is only a part of the entire company. Despite that – Red Hat has demonstrated yet again it’s willingness to punch way above it’s weight and has had an influence on Java EE disproportionate to it’s size. Congratulations to Gavin King, Pete Muir, Sacha Labourey. Emmanuel Bernard, etc for tirelessly pushing for simplicity in the EE platform.

JBoss AS 6 Milestone 1 is out and includes some of the key Java EE 6 features. Releases seem to be coming pretty frequently so you’ll see more EE 6 feature appearing over time.