Random musings from my awakening dementia...
10.16.2003  
Where are the Components?
 

I'm quite interested in the concept of software components and how those ideas can be applied to Java code. Thoughts or ideas I have on this subject get dropped here for the benefit of humanity and my own hubris.

© 2003-2005, Howard Abrams



Except where otherwise noted, all original content is licensed under a Creative Commons License.
See details.

Just read the op-ed piece, Where Are The Components? by Joseph Ottinger where after complaining about Java-specific trends that haven’t worked asks the question, “Why are we still doing everything ourselves?”

Good question. I like this quote:

At some point we have to stop falling in love with Java and start doing something with it. The capability is there. We just have to decide to imbue it with power. It’s time we started writing reusable components and distributing them. Otherwise, we as a community of developers end up squandering the power of the tools we have.

Why is it that so many of us (programmers in general) have a NIH attitude? I know many companies where this describes the company’s mission better than the statement on their website.

The other day when i went out to lunch with a friend of mine and mentioned the XML query component that I built as a Java bean wrapper around the XPath API, he called me a re-inventer. That hurts … I am trying to actually leverage reusability, and I guess I could tease him right back since he is a scripter and we all know that the three P’s(PHP, Perl, Python) are “write-only” languages.

My motivation was not to write something new, in fact, I didn’t as I used the XPath expression engine, I just wanted a Java bean wrapper to hide much of the complexity of that library. But I have been thinking about my motivation for building anything new.

I, like many of my colleagues, have the desire to give something back to the developer community. I have used free software for years, and would like to pay for it by further personal development. However, we often develop something that is just a re-make of someone else’s work. I mean, how many of us, when Java first came out, rolled our eyes but still smiled and said, “Goody, now I get to re-write everything.” Deja-vue.

I think we are doing better (just look at the Jakarta project list), but I do think that one of the practical things for why we re-write things was kind of mentioned in Ottinger’s article:

An EJB that processes an order can be written to handle a generic customer, a generic order, and a generic list of items, and can handle payment with a pluggable tool - and such an EJB, written well, would certainly be worth investing in instead of paying a developer to write yet another order-handling bean that can only accommodate the current requirements.

I don’t think that many developers actually know how to write reusable components.

Sometimes a reusable solution to a need is obvious, and a library or framework is development to solve it, but we don’t need any more frameworks … we have plenty to choose from. We need components … smaller in scope, but still independent and no less reusable… did you want to read my component definition? I thought you would.