Avid readers will note that I’ve been silent for some time here. It’s a new philosophy I’ve adopted: “Put Up or Shut Up“.
Anyone monitoring JBoss EJB3 source control activity over the past couple months has noticed around-the-clock commits from our team. 4AM on a Sunday. Midnight on a Thursday. Hell, I’ve even been known to do some work during business hours when things are really cranking.
All of this has been dedicated to one goal: JEE5 Compliance of the JBoss Flagship project, Application Server 5. And just last week, we pushed out binaries capable of making some 27412 Integration Tests maintained by Sun turn green.
But I’m not celebrating yet.
Compliance is a prerequisite. It cedes vendor lock-in, promotes uniformity among programmers the world over, and sets a contract for what application developers may expect from their runtime.
And I think we’ve reached a point where you should be able to take that all for granted. Now we go back to the regularly-scheduled, which in JBoss’ case is innovation and love for the community.
The best place to start is under the hood.
Get Out of the Application Server
We invested heavily in this one. Simply put, we moved the EJB3 implementation out of the Application Server source tree, created APIs/SPIs where coupling was required (separating contract from implementation) and set proper dependencies. This gives EJB3 a life of its own and unbinds it from the AS release cycle. While there’s still some work to be done in this regard, the end goal is twofold:
1) Release EJB3-only updates to AS with regular frequency
2) Don’t require AS to run EJB3
The idea here is to separate the logical moving parts into isolation; this way we don’t:
1) Mix concerns
2) Allow bugs in one area to pollute another
…while we do:
1) Enjoy small, easily-maintainable projects
2) Promote Unit Testing (in the true spirit of “Unit”, not to be confused with “Integration” or “Acceptance”)
We’ve always tested, by means of an integration testsuite that takes ~90 minutes to complete.
But componentization has given us the opportunity to create small, focused, and quick Unit Tests. Currently we’re at 207 of ‘em, which run in about 5 minutes locally or 8.5 minutes from a freshly checked-out CI server.
Baby, that shit’s textbook. Better curves than a pinup girl.
All told, we’re beginning to see the concrete benefits of these investments, which translate into accelerated, reliable development.
JEE Compliance is like marriage – not a conclusion, but a beginning. I just hope compliance doesn’t mean you stop having sex.