The Evolution of Enterprise Java

400px-Human_evolution_scheme.png

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s