On 2-May-08, at 5:53 AM, nicolas de loof wrote:
[
----------------------------------------------------------------------------------------------------------------------------
]
Note to plexus lovers :
CONTROVERSAL PROPOSAL, please don't blame me and just give good
arguments !
[
----------------------------------------------------------------------------------------------------------------------------
]
Maven is built on Plexus. This lightweight container is used (afaik)
for :
- simple (javadoc) annotation-based programming model
There are java5 annotations which Jason Dillon wrote, and they are
available for Mojos as well in the model that Yoav has placed JIRA.
- lifecycle management
- dependency injection
- classloader isolation for plugins (using classworld)
Let's now consider the today responses to the same requirements :
- Since Java5, annotations are common, and JSR-250 introduces standard
annotations that can address some basic lifecycle and IoC
requirements.
- The IoC container ecosystem is dominated by Springframework. Maybe
not the
best technical one for any reason, but the best documented and most
know by
developers.
I think it's really more then the JSR about a component model which is
now a little race between Spring, Guice, and OSGi. What's more
important, as Paul Hammant will also argue, is the interoperability of
the components. Important things like making the embedder usable in a
OSGi environment. These are the things that really matter.
- Classloader isolation is very well adressed by OSGi, with the
advantage of
beeing a recognized standard, with many documentation AND business
interest.
I'm definitely interested in the OSGi model for classloaders and I've
had more then one conversation with Jeff McAffer.
Maybe Plexus was a very advanced container when it was created, but
it did
not become the today 1rst choice technology.
OpenEJB is using XBR, Geronimo is using XBR, and I'm happy using XBR
which is a project here at Apache where the degree of collaboration
can be much higher. What XBR is capable of is simply amazing, that it
was possible to swap in another DI engine without a _single_ change to
Maven is amazing. I am also more interested in collaborating with the
Pico community and bring together their world with ours.
Considering an opensource tool like maven is built by volunteers
developers,
it would be a good thing to attract talentuous ones to use up-to-
date and
well known technologies. As an example, Archiva (trunk) is migrating
to
Spring as it's IoC container.
XBR is certainly up-to-date and probably one of the most advanced DI
libraries there is, Dain is at hand to help and he just finished doing
a lot of work to bring the DI capabilities up to the most advanced
there are.
I would counter Archiva with Nexus which is using Plexus and I believe
this makes it more flexible and will integrate with Maven far better.
I also have never bought the argument that what's popular is what's
best. Maven wouldn't exist if that were the case. There's always room
for competitors.
Could we consider for future maven version (let's say 2.2, or "3.0"
- as 2.1
is allready in advanced development phase) to replace plexus with a
combination of Java5 + Spring + OSGi ?
Java5 absolutely, that exists now and with the integration of XBR
there are no limitations. As far as Spring, that's honestly never
going to happen while I'm here because I will always argue that
something like XBR/Guice which is a DI library is more appropriate and
there is nothing Spring can do that XBR cannot do today in terms of
dependency injection. OSGi classloaders are definitely an option and
Eugene and Igor of m2eclipse already have some very cool tools that
are akin to Spring DM.
And ultimately the container DI is not the important part but the
implementations of our components. Using standard annotations for that
is a good thing and that's not hard. XBR does full JEE injection and
can manage any sort of annotation based DI because it's entirely
agnostic. At any rate full support for that is now possible with XBR.
Nicolas. What
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder, Apache Maven
jason at sonatype dot com
----------------------------------------------------------
A man enjoys his work when he understands the whole and when he
is responsible for the quality of the whole
-- Christopher Alexander, A Pattern Language
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]