« Terracotta and Glassfish Integrate | Main | The World's Best Grid for POxOs »

June 7, 2007

Recent insight from a book I am reading

posted by ari

Chris Richardson's POJO's in action is definitely worth a read. What I am particularly enamoured with, however, is not the good use cases nor is it the solid, logical step-by-step walk thru of the key design challenges in enterprise programming and how best to plug in Spring or Hibernate. For once, I am rivetted by the beginning of a book!

The first few chapters seek to prove some early assertions around the failure of EJB and J2EE. Specifically, Chris asserts that an API is [paraphrasing here] a way for a designer to help a devloper solve a particular problem. He posits that, when an API is extended outside its natural scope, that API can do more harm than good. Something to keep in mind, certainly.

I get asked over and over again, "what is the right API for this task? Can I use Spring? Can I use Hibernate? Should I use XXX?" It all seems backwards. Spring, for example, is so broad in scope that to ask "does Spring help solve this?" is futile...the answer is always yes and no. Yes it almost always can. And, no it cannot, if you use it incorrectly. Just validates my fundamental belief that in managing a career in software development, when we face the decision wether or not to seek broad knowledge or deep, the answer is BOTH. No point in being a jack of all trades, certainly, but there is sooo much "hammer / nail" going on out there in Java land, we need to start broadening our toolkit (why I love OSS...think about how many developers would not be able to ramp up on Lucene, Rife, Spring, or even Terracotta if it all cost $1MM for a license before you could roll up your sleeves and start learning.)

I guess this all sounds a little preachy. I definitely do not mean to preach. Just seems worth our collective time to avoid the J2EE pratfall. I feel passionate that the notion of ENTERPRISE PROGRAMMING is broken. JEE programmers don't get all the benefits of the language until the runtime starts abstracting things like clustering, reliability, and manageability. Annotations, Aspects, Dependency Injection, and the rest are taking us down a really good path. Of this, I am certain.

Trackback Pings

TrackBack URL for this entry:
http://blog.terracottatech.com/cgi-bin/mt/mt-tb.cgi/7

Comments

Post a comment




Remember Me?

(you may use HTML tags for style)