I didn’t mean for this to happen, honestly.
We’ve been excited about the headway being made with #Arquillian. The community is growing in terms of both adoption and contribution, and it’s a shared belief among our little team that we’ve definitely hit upon a necessary niche in the testability of Enterprise Java. So a useful tool in recruiting and generally raising awareness is to take advantage of software conferences; we pitch our stuff, and in turn keep our ears to the ground on trends with our friends and competitors in the industry.
So I was excited to book a talk at Devoxx in Antwerp on #JBossAS7. The runtime I’d once dreamed we could deliver. Then JUDCon. And Dan signed me up for some stuff at W-JAX. Before you knew it, I was filling in the gaps with kind offers from the folks at JDD/Krakow and Java2Days/Sofia, and the sum total of all events kept me in Europe for nearly a month.
A month. I didn’t mean for that to happen. I’m a developer, damnit.
But during that time I was able to make a few observations that became thematic, and I’ll attempt to catalogue them here.
Things kicked off for me just before Halloween with wheels down in London. JUDCon this fall was colocated with the JAX Conference near Victoria, and was a great way to get into the swing of things. JUDCon has a habit of really bringing JBoss users and contributors out of the woodwork, and I was psyched to finally meet face-to-face with Davide D’Alto (longtime contributor to ShrinkWrap) and Karel Piwko (from our QE team, also primary author of ShrinkWrap Resolvers). Sometimes I like to plug my laptop into one of the session rooms and work while talks are underway, but I was surprised that Patrycja’s session on “Hibernate Puzzlers” demanded my attention, primarily because I hate being stumped. Also it’s great to round up folks with the loonies who run the JBoss Asylum Podcast, so Max and Emmanuel got that one in the bag in front of a live studio audience.
Judging from questions and tweets following my own session on JBoss AS7, I think we’re doing a decent job outlining the mission of the Application Server. I’ve been increasingly positioning it as a Runtime, not just an EE implementation, and each stop I make seems to reaffirm this “JBoss Everywhere” initiative we’ve got in motion. Modularity in ClassLoading matters. Booting up quickly matters. Consuming less memory matters. Providing sane management and configuration matters. Easy stuff to grasp conceptually, no matter what your programing model or even programming language of choice.
This was all cemented when I crossed Team Spring in Sofia, Bulgaria at Java2Days.
Josh Long came to discuss, among other things, Roo. So I was proud to see Lincoln expertly showcase all the amazing progress he’s made with JBoss’ own model-nonspecific project setup tool, Forge. And giving a surprisingly-balanced keynote on the current state of Java in the Enterprise was Jurgen Holler. A guy I wholly expected to hate me based upon some admittedly theatrical musings against Spring’s marketing in this blog some years back.
But we all grows up and we all grows up[1:20], and the scenery has changed as well. Do I think CDI is a superior programming model to Spring’s? Yes. Am I going to fight this point with users? No. Maybe you have a legacy app already on Spring. Maybe you have a vested knowledge in how Spring works already. Or maybe it’s a personal preference. Jurgen and I do agree on this point: Spring is a Framework. It’s begging for a runtime. So plug it into AS7. We’re fast, we’re slim. You don’t need to run Spring on vanilla Tomcat, which will provide you essentially nothing in terms of management or modularity. And with Maruis’ Snowdrop project, you’ll get good integration with AS7. There’s a reason that the Bakker/Ertman talk on Spring coexisting with EE6 is so popular. I am officially done fighting the framework war. As Pete Muir put it eloquently, I’ll cede nothing and still believe in developing true standards with EE. But again – Spring needs a runtime, and that’s what we build. Well.
So Jurgen and I had a lot of fun finding where we have cohesion and where we have differing views. In fact, when we continued this debate with Lincoln in Munich the next week, I was pleased to see that our exchanges had drawn a sizeable crowd of onlookers who appeared visibly disappointed to find us enjoying one another’s company and opinions.
I will make one more observation about Spring Test: When you use this, you’re not testing in the real target runtime. You’re testing in your test runner. Arquillian lets you fire up your real container and use Spring (or whatever your deployment) in something that will much more closely resemble the bits you’ll be running in production. I think that’s a very important distinction.
In the next segment we’ll continue where this leaves off. It may include an account of me, Lincoln, Emmanuel, Antoine, and Antonio sharing wine by the Eiffel Tower in the world’s most romantic city. And of course, I didn’t mean for that to happen, either.