Summary so far:

Please correct me if I'm wrong or missed anybody.

Which River release should we migrate to Java 5 language & API?

Those wanting Java 5 language & API features:

Dennis Reedy
Jim Waldo
Jonathan Costers
Greg Trasuk
Peter Firmstone
Niclas Hedhman
Dan Rollo

Those against using Retrotranslator and want to drop Java 1.4 runtime support altogether: (please add names and brief comment)




Those happy for Java 1.4 bytecode compatibility release bundle to be with maintained by using the Retrotranslator library at build time: (When we transition to Java 5, building with JDK 1.4 will no longer be supported)

Peter Firmstone
Patrick Wright
Sean Landis
Dan Rollo

I'm personally still concerned with dropping Java 1.4 runtime support altogether, there are large companies around standardised on Java 1.4. There's also a large install base of the JavaME CDC platform (Java SE 1.4.2 compatible), which includes BlueRay players, Digital TV's, Set top boxes , photocopiers, the odd smart phone etc. Also the only Java runtime on ARM is the JavaME CDC, some of these now have significant memory and processing power and look like entering the netbook market. I don't want to limit River if it can be helped. Anything without enough resources can go the Surrogate route as Sean Landis has suggested.

Patrick Wright suggested: 'Perhaps the community can make a project-level statement like, "as of release X, River will begin to use Java 1.5 (or 6) APIs and language features." '

I'd also like to hear some more from Tim Blackman on the issue?

I have a concern that if we go the Java 5 and later route without Java 1.4 runtime support and later found that it was delaying adoption of River we might find we've moved on too far to go back.

The cost of maintaining runtime compatibility with Retrotranslator:

1. Modifying build.xml to use Retrotranslator to create an additional release bundle, "River X.X.X JAVA 1.4 Compatible release", generated by the Ant build scripts specific to JRE 1.4 2. Running the regression tests against the River JRE 1.4 compatibility release on JRE 1.4, can this be added as a separate optional run on the regression test using Ant? The developer would probably need to set a JAVA_HOME_JRE1.4 environment variable. 3. Solving bugs related to unsupported Java 5 or later features on Retrotranslator and, I'm sure these and other bugs will arise from time to time.

From the Retrotranslator project site:


       How to use Retrotranslator from Apache Ant or Maven?

The distribution contains an Apache Ant <http://ant.apache.org/> task |net.sf.retrotranslator.transformer.RetrotranslatorTask|. Every command line <http://retrotranslator.sourceforge.net/#commandline> option can be set using the corresponding attribute. In addition the source files can be specified with nested |fileset|, |jarfileset|, and |dirset| elements and the classpath <http://retrotranslator.sourceforge.net/#option_classpath> can be set with nested |classpath| elements or the |classpathref| attribute. The source directories specified with |srcdir|, |dirset|, and the |dir| attribute of |fileset| should contain the root package of the classes. In case of warnings the build fails unless the value of the |failonwarning| attribute is set to |false|. The following script can be used to build one jar compatible with Java 1.4 and another one compatible with Java 1.3.

   <taskdef name="retrotranslator" 
classname="net.sf.retrotranslator.transformer.RetrotranslatorTask">
       <classpath>
           <fileset dir="../Retrotranslator-n.n.n-bin">
               <include name="retrotranslator-transformer-n.n.n.jar" />
               <include name="retrotranslator-runtime-n.n.n.jar" />
               <include name="backport-util-concurrent-n.n.jar" />
           </fileset>
       </classpath>
   </taskdef>
<retrotranslator target="1.4" destjar="build/application14.jar"
                    smart="true" verify="true" failonwarning="false">
       <fileset dir="build/classes" includes="**/*.class" />
       <jarfileset dir="build/lib" includes="**/*.jar" />
       <classpath>
           <fileset dir="../j2sdk1.4.2_17/jre/lib" includes="**/*.jar"/>
           <fileset dir="../Retrotranslator-n.n.n-bin">
               <include name="retrotranslator-runtime-n.n.n.jar" />
               <include name="backport-util-concurrent-n.n.jar" />
           </fileset>
           <fileset dir="lib" includes="**/*.jar"/>
       </classpath>
   </retrotranslator>

   <retrotranslator target="1.3" destjar="build/application13.jar"
                    smart="true" verify="true" failonwarning="false">
       <fileset dir="build/classes" includes="**/*.class" />
       <jarfileset dir="build/lib" includes="**/*.jar" />
       <classpath>
           <fileset dir="../jdk1.3.1_20/jre/lib" includes="**/*.jar"/>
           <fileset dir="../Retrotranslator-n.n.n-bin">
               <include name="retrotranslator-runtime13-n.n.n.jar" />
               <include name="backport-util-concurrent-java12-n.n.jar" />
           </fileset>
           <fileset dir="lib" includes="**/*.jar"/>
       </classpath>
   </retrotranslator>




Reply via email to