I had a quick look at retrotranslator today. Generics and some other language 5.0 features were, as some of you may know, originally developed on a 1.4 JVM. So in principal this is a cool idea and at one point the javac engineer suggested we provide the target 1.4 option. I would probably draw the line at the runtime annotations though myself. Achieving this in retrotranslator requires some involved helper classes which changes the behavior of the app, before you even get to try a debugger on it

regards
calvin



Dain Sundstrom wrote:

I would love to start using Java 5 as soon as possible. I have been using the backport-util-concurrent package for a while in xbean and the Java 5 interfaces are really nice to use. Above all other features, I would love to have generics support in geronimo. Generics give me much more data when creating collections in the IoC code. Right now, the collection creation code I have is very dumb since it must assume that a collection can contain any object.

-dain

On Dec 30, 2005, at 9:59 AM, [EMAIL PROTECTED] wrote:

First a quick bit of background on why Retrotranslator rocks...
http://radio.weblogs.com/0112098/2005/12/29.html#a546

Retrotranslator can take any Java 5 bytecode using generics, annotations, auto-boxing, varargs & java.util.concurrent utilities and generate regular 1.4 bytecode that runs just fine on Java 1.4. The 1.4 bytecode uses backport-util-concurrent.jar for the java.util.concurrent stuff, retrotranslator_runtime.jar for other new methods added to Java 5 such as new reflection/generics stuff and asm.jar is currently used to read the annotations. So if you only use the Java 5 concurrent APIs then the only new dependency added on 1.4 is backport-util-concurrent.

We should be able to create a maven 2 plugin (I've already started) which uses Java 5 for the build to make a Java 5 binary but also creates a 1.4 compliant binary. http://svn.mojo.codehaus.org/trunk/mojo/mojo-sandbox/ retrotranslator-maven-plugin/ We should hopefully be able to run tests against both JVMs for each binary too.

Now given that Java 5 concurrent is faster than backport-util- concurrent.jar & concurrent.jar it would be good for us to use this by default throughout the Geronimo family of projects. Similarly it would be extremely useful to start using annotations and generics & the new for loop can be handy too.

So I wonder; should we experiment with 1 module using Java 5 and creating a 1.4 binary jar? (I'm quite tempted to try this in ActiveMQ to see how it goes). If we start with just the java.util.concurrent <-> backport.util.concurrent it'd be fairly easy to switch back again later if we hit some showstopper.

Thoughts?

James
-------
http://radio.weblogs.com/0112098/



Reply via email to