Platinum Partner
java,frameworks,server-side

Java Stack Refresh: Like Root Canal Without the Anaesthetic

Yesterday, while spending hours trying to get a new app to deploy on JBoss AS 5.x, I started realizing, ‘hey, maybe we should open a car factory where people could just come in and like, pick the parts they want and stuff, because then, they would be free and stuff.. so like they wouldn‘t have to accept a car with all 4 quarterpanels the same color (so bourgeois)...‘ That‘s kind of what JEE is like.

The problem with JEE these days is that instead of focusing on what is required to make a solid, complete offering, the round of specs are really sketches of general points of consensus, and the really hard part is left to each implementer. Surprise announcement: only a few are even able to do it (*Oracle* and RedHat) and they are not very good at it. I am a fan of Red Hat, and though I think it's hard to argue that there is anyone else to consider if you want a really complete offering, unfortunately, Red Hat has their own faults, and surprisingly, they make them seem like the usual sluggish purveyor of standards-based progress. Sad thing is, in Red Hat's case, their faults are pretty stupid. Yesterday we spent hours trying to deploy an app because JBoss is still doing monolithic bundles, and if you need to depart from their path, you are on your own. For instance, be prepared to go through the m2Eclipse dependency graph excluding stuff, marking things as provided or scoped to compile. But that's not the end. JBoss AS ships with Hibernate. So if your project uses a different version, plan to spend a bunch of time fishing your jars out of the maven repo, renaming them of course, oh, and remember, you'll have to do this for every instance you want to deploy to. Of course, all the ugly, familiar ghouls trot out of the graveyard as soon as you head down this lane, and none is uglier than XML: hasn't a decade of looking at xerces incompatibility errors enough?? Seriously, you know you are at a low rung of hell when that bell rings in your ear for the umpteenth time..

Here‘s the part that really makes me think we‘re all doomed: Red Hat is a large company with revenue. I think it‘s safe to say that had they been willing to have a single person work on this problem, maybe 2, they could have licked it a few years ago. Does this get filed under hubris? Maybe not. Probably more just garden variety myopia. But it also goes to show one of the main arguments I have been making for years here, under the banner of freedom, we write ourselves passes for progress rates that can no longer even be called glacial (in part because they are slower, and also, thanks to global warming, glaciers are disappearing faster). They claim that they are going to take this problem off the table, but when? I am not even saying Maven is the only way, but really, it would not have been hard to create a bloody archetype to go with each target environment. And while I am saying Maven could have helped, its facilities for these types of things are underwhelming, which would have been ok, except that they too have been riding the same glacier scree. (I want to find another build tool, and may even consider the use of Groovy at this point, Maven, while better than Ant, is not enough better…) I‘m burned out on its many shortcomings (another post) and the poor state of tools.

We ultimately failed because we had JSF 2 in our new app. I found a guy on the JBoss Community site who said go get the jboss-faces jar out of the 6.x milestone, but that just led to another error about the templating code.

Finally, after the anger subsided, I started to think again that perhaps Java is going into a death spiral. There really is no substitute for a complete offering that is seriously tested. Red Hat is the last chance that this will ever happen. I am hoping either they pull it off, or Apple takes my prior advice and figures out a way to make a cocoa web framework.

 

From http://www.jroller.com/robwilliams/entry/java_stack_refresh_like_root

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}