First discussion - api/impl pattern
niclas at hedhman.org
Wed Oct 6 04:31:53 EDT 2004
On Wednesday 06 October 2004 14:22, David Leangen wrote:
> So basically, you've convinced me of the advantages of using Metro even for
> the publication of my API. I don't want to have to take care of
> classloading and all the rest if I don't have to.
The "tragic" involved here is that you are an exception. Most people still
don't get it, and is wondering "so what?". This is a massive insight that
Steve has brought to Avalon, to me, to some others in the form of
As it stands, (and this is my opinion), products that people ARE prepared to
"lock-in" against, such as J2EEs servers, should be built on top of Metro.
Well, maybe the world one day will acknowledge the power involved here.
> First, I'm worried about lock-in. To be frank, we don't know what's going
> to happen to Metro over the next few years. I need to be able to swap in
> another container if anything goes awry.
Nothing will go "awry" :o) But nevertheless, your API will typically be free
of 'taint' of Metro being involved (except for some javadoc tags). The
implementation is a 'choice'. You *can* extract the functionality to a
separate class, and have a Metro wrapper around it. If you ever decide to do
it another way, you have to provide some of the functionality in another
manner. This is what Alex is doing in the Directory project.
> Second, I'm even more concerned about how this will affect my users. Does
> that mean they automatically have to become Metro users, too?
Of course we don't want to provide them with something that is good for
Maybe Steve has another take on this, but I am of the opinion that if you are
a pure 'subsystem', you should probably just do what I wrote above. The Pojos
with the functionality, where the 'user' has to 'work hard' to get them up
and running, or the 'user' decide that "Hey, it is so much easier with this
I guess it also depends on what the subsystem is and who the users are.
/ http://www.bali.ac /
/ http://niclas.hedhman.org /
More information about the support-dpml