Markus is a Developer Advocate at Red Hat and focuses on JBoss Middleware. He is working with Java EE servers from different vendors since more than 14 years and talks about his favorite topics around Java EE on conferences all over the world. He has been a principle consultant and worked with different customers on all kinds of Java EE related applications and solutions. Beside that he has always been a prolific blogger, writer and tech editor for different Java EE related books. He is the Java Community leader of the German DOAG e.V. and it's representative on the iJUG e.V. As a Java Champion and former ACE Director he is well known in the community. Markus is a DZone MVB and is not an employee of DZone and has posted 169 posts at DZone. You can read more from them at their website. View Full User Profile

If You Aren't Among Those Finding Bugs You Might be Among Those Complaining About Them Later

06.11.2012
| 5323 views |
  • submit to reddit
Back from vacation and looking forward to the more productive summer times in general I stumbled over a post titled "The most important lesson in Java EE" by Craig Ringer. I follow Craig on twitter (@craigdevel) and reading his tweets I believe he is a creative and solution oriented person . But I have to jump in with this special post because it made me angry. And this is not because of his points. They are right. But it's because of his timing, the title and the overall recommendation he gives. But lets start at the beginning.

You aren't talking about Java EE but generally about versions!
Mixing up things is a bad habit. And what he did in this post is exactly that. Yes, the technologies he mentioned have a Java EE focus or are reference implementations. But Arquillian and ShrinkWrap are good examples for independent products with no exclusive EE relation. So the main complaint he is having is, that you shouldn't use a x.0 version.

This ain't news, everybody knows you don't buy version x.0 of anything
Many corporations do not purchase x.0 releases of software - preferring to wait until a .1 or .2 maintenance release has come along. And so should you if you are working on a production ready and stable release of your software. If you started with the first release of the Java EE RI you knew it would be a hurdle race. It ever has been like this. Not only with GlassFish but with any commercial container out there. So, complaining about a Glassfish 3.0 release is like hitting yourself in the face. And this is true for any other software release he mentioned in his post. So, Craig: If you are reading this ... by writing this post you confirmed you are making beginners mistakes ;)

When to use x.0 versions?
I told you, that Craig is basically right. And I second his recommendation in general. But with a slightly adjusted focus. Don't skip x.0 versions if you are going to make your experiences or trying to improve your skills. Every single product on his post Glassfish, JBoss, Arquillian, Mojarra, RichFaces and many others simply can't improve without your feedback. Don't push your highly sophisticated app with millions of active users to the limits with a x.0 and aim for a production date shortly, but why not test drive it?  I did this for GlassFish and even some others (closed source) and it helped the vendors sorting out stuff. They learn how you are using their products and maybe they add a test case for you to improve the upcoming releases.
And even if you have a product which is developed in free and open and does provide you with a road map you could start your development with a x.0. If you plan you upgrade and keep track of needed changes and workarounds. I did this. It works. I believe many others experience the same. It might be more time-consuming than simply using a final/"bugfree" version of anything but .. yeah .. that's life... isn't it. But there also is a downside to this medal. If you are only using final/bugfree/approved versions you might end up staying with stuff that is >10 years old. I don't know if I like to trade that in. I like to manage that problem like I do with any of the risks I have to face with software development.

If you aren't among those finding bugs you might be among those complaining about them later.
It should be clear to anybody that improving OSS has different shades and you can work actively with many of the communities to make the product experience better. I have written up a few about 5 Ways to Contribute to GlassFish without being a Programming Genius and I believe it should be clear to anybody working with OSS that he didn't pay for anything and there always might be a good chance for a bug. Especially with early versions.
As I mentioned I am following Craig on twitter and had the chance to see at least a few of his ShrinkWrap and Arquillian problems which were discussed publicly being addressed by the product owners or volunteers from the different product communities. And they value what he does. Stopping other from doing the same or trying early versions will harm an entire community and not only Java EE.
I don't know if he ever had the chance to work close with other vendors products. Especially the commercial ones. There are good reasons for them to be "Early Adopters" and not "Innovators" Especially with such a broad standard with many many reference implementations.

To make a long post short
Don't listen to Craig here! Use whatever version number your favorite software, framework or more generally product has at the moment. Apply the precautions you always apply being a responsible developer, architect or project manager and if there isn't any other way: Contribute your findings. Help developing patches and manage this as part of your risks. If you are looking for a 100% error-less system you might consider buying one of those commercial products out there. But ... hey, let's tell you a secret: The only difference here is that their support-systems might look a little bit nicer. You would also have to provide a test case and work with them on the solution. .... decide on your own! I would go with GlassFish, Arquillian and ShrinkWrap and any of the others. Even with a x.0 release.
Published at DZone with permission of Markus Eisele, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Fahmeed Nawaz replied on Tue, 2012/06/12 - 10:24am

I am developing one maven project, is there any maven support for mungbean? and also how to add mungbean repository address for jars in project's pom?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.