I may bring nothing new (the last Adrian's email explain well most of my
views),
but I would like to summarize what I think are the most important points:
* We are not replacing existing technology. We are enabling a
functionality bundled in Java 6. This is equivalent to adding
"implements java.io.Serializable" to existing classes.
* Enabling JAXB in Java 6 does not introduce any new dependencies
and have absolutly no impact on public API. It does not even
appears in the javadoc - it is really invisible.
* While it work well with Maven and NetBeans, Justin and Jody have
reported problems with Eclipse. I'm ready to accept as a failure
the attempt to make JAXB invisible to the Java 5 build. So we are
looking for way to remove JAXB annotations from SVN trunk and keep
them on a Java 6 "branch" (I said "branch" but I'm actually thinking
to something along the line of "Mercurial repository clone" - it
still need to be investigated).
* Justin worries about the philosophical implication of forcing a
technology. I disagree: we are not forcing it, we are enabling
it. To make a comparaison with Java I/O, declaring a class as
Serializable does not force anyone to use Java serialization
mechanism. Again I repeat: it is totally invisible in the API,
so it even does not put any conceptual weight on user side.
* Why enabling JAXB and not Hibernate? Because JAXB is bundled
in Java 6 and used by other Sun technologies around Glassfish,
while Hibernate annotations would introduce a new dependency.
* Adding JAXB annotations do not prevent you in any way to add
Hibernate annotations if you wish. Annotations from different
packages can live together no matter their name. So we are
not blocking usage of any other technology.
* Simone worries about the confusion that could brings the mix
of JAXB and Hibernate annotations in the same class. Avoiding
messy code is a strong goal for me. But in this case, I see
this issue in the same way than a big method: when a method
is big, we use comments for separating logical blocks in the
code. Same applies to annotations: "// JAXB annotations", the
annotations, "// Hibernate annotations" (or whatever comment
introduce a clear visual separation), the Hibernate annotations.
We can avoid messy code if we comment it well.
* Except for the problems in Java 5 build (to be resolved by removing
annotations from that build), the only real inconvenient I can see
is the increase in size. But if size was a major issue, we should
already be using PACK200. Nevertheless I understand that the GeoTools
project is big and I don't think that "one size fit all". So to repeat
myself again: I want to setup an ecosystem with different flavors of
GeoTools releases: "Java 5 vs Java 6", "full featured vs lightweight",
"all referencing in one JAR", etc. May sound scary, but my understanding
is that distributed versioning systems is opening opportunities that
we didn't had before.
Martin
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel