Menu

Retrotranslator / News: Recent posts

Retrotranslator 1.2.9 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments. It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3.

Changes in Retrotranslator 1.2.9:
- Fixed a bug: VerifyError: Stack size too large when translating to 1.2 or 1.1.
- Metadata embedded with the reflection option take the highest precedence.
- Backports for interfaces can be inherited when using the smart option.
- Regular expressions can contain quoted strings that end with a back slash.
- Added support for java.net.Socket(java.net.Proxy), but the proxy is ignored.

Posted by Taras Puchko 2009-08-09

Retrotranslator 1.2.8 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments. It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3.

Retrotranslator 1.2.8 can produce smaller jars when using embedding and doesn't provide a runtime library for the Android platform anymore.

Posted by Taras Puchko 2008-12-14

Retrotranslator 1.2.7 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments. It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3.

Changes in Retrotranslator 1.2.7:
- Added limited support for using backports via reflection.
- Added support for Java 5.0 features in regular expressions.
- Added support for java.math.BigDecimal.stripTrailingZeros().
- Added options -syncvolatile and -syncfinal to emulate Java 5.0 memory model.
- Added support for methods highestOneBit and lowestOneBit of java.lang.Integer and java.lang.Long.
- Added option -keepclasslit to prevent replacement of certain types with their base types in class literals.
- Added a feature to identify the current JVM as Java 5.0 when using the java.lang.System.getProperty method.
- Fixed a bug: cannot read annotations when using "-reflection safe".

Posted by Taras Puchko 2008-06-22

Retrotranslator 1.2.6 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments.

It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3. In other Java environments only the Java 5.0 features that don't depend on the new API are supported.

Changes in Retrotranslator 1.2.6:
- The -embed option does not require the -destjar or -destdir options.
- Fixed a bug introduced in 1.2.5. All hyphens in file and directory names were replaced with
dollar signs in advanced mode or when the Retrotranslator.fixHyphen option was specified.

Posted by Taras Puchko 2008-02-29

Retrotranslator 1.2.5 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments.
It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3.
In other Java environments only the Java 5.0 features that don't depend on the new API are supported.

Changes in Retrotranslator 1.2.5:
- Added support for generics and annotations on the Android platform.
- Added options -reflection and -stripannot.

Posted by Taras Puchko 2008-02-26

Retrotranslator 1.2.4 released

Retrotranslator is a tool that makes Java applications compatible with Java 1.4, Java 1.3 and other environments.
It supports all Java 5.0 language features and a significant part of the Java 5.0 API on both J2SE 1.4 and J2SE 1.3.
In other Java environments only the Java 5.0 features that don't depend on the new API are supported.

Changes in Retrotranslator 1.2.4:
- Added support for Java 5.0 API on J2SE 1.3.
- Fixed a bug in translation of inner classes for Java 1.3 and earlier.
- Added a workaround for a bug #4776385 in Sun JDK 1.2.2 for Windows.
- Fixed a bug: translated jar files didn't contain directory entries.
- Added support for java.lang.reflect.Member.isSynthetic().
- Added support for java.math.BigDecimal.divide(BigDecimal).
- Added support for the java.lang.Math methods: cbrt(double), cosh(double), expm1(double),
log10(double), log1p(double), signum(double), signum(float), sinh(double), tanh(double).
- Added support for UnsupportedOperationException(String, Throwable), UnsupportedOperationException(Throwable).

Posted by Taras Puchko 2008-01-28

Retrotranslator 1.2.3 released

Retrotranslator 1.2.3 released

Retrotranslator is a tool that makes Java applications compatible with various versions of the Java platform. It supports all Java 5 language features and a significant part of Java 5 API on J2SE 1.4. Supported features include generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements. In other Java environments only the Java 5 language features that don't depend on the new API are supported out of the box.... read more

Posted by Taras Puchko 2007-10-28

Retrotranslator 1.2.2 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features include generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.2.2:
- Support for java.math.BigInteger.TEN.
- Support for java.lang.Short.reverseBytes(short).
- Support for java.lang.StackTraceElement(String, String, String, int).
- Support for the append methods of java.io.StringWriter and java.io.CharArrayWriter.
- Support for java.math.BigDecimal(char[]) and java.math.BigDecimal(char[], int, int).
- Limited support for java.lang.StringBuffer.trimToSize().
- Limited support for java.lang.Thread.UncaughtExceptionHandler.
- Limited support for java.nio.charset.Charset.defaultCharset().
- Limited support for java.lang.management.ManagementFactory.getPlatformMBeanServer().
- New option -support to enable advanced features one by one.
- New option -uptodatecheck to skip translation of files if the destination files are newer.
- Changed the messages printed during translation.
- Fixed a bug with using enum values when initializing static fields of the same enum.

Posted by Taras Puchko 2007-06-25

Retrotranslator 1.2.1 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features include generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.2.1:
- Support for java.util.Deque and java.util.ArrayDeque.
- Support for java.util.Arrays.copyOf(...) and java.util.Arrays.copyOfRange(...).
- Limited support for UNICODE-related methods of Character, String, and StringBuffer.
- The -backport option accepts individual classes and is used even when -retainapi is specified.

Posted by Taras Puchko 2007-01-31

Retrotranslator 1.2.0 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features include generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.2.0 (this release is not fully compatible with the previous one):
- Supported java.lang.ThreadLocal.remove() in advanced mode.
- Added -target option for Java 6 to Java 5 translation.
- Improved bytecode compatibility with different JVMs.
- Backported java.util.concurrent.locks.LockSupport.
- Added java.net.Proxy and java.net.ProxySelector.
- Added java.net.URL.openConnection(Proxy), currenly the argument is ignored.
- Added java.lang.instrument.* classes, but instrumentation is not supported.
- Added java.lang.Thread.State enumeration, but Thread.getState() is not implemented.
- Limited support for DecimalFormat.isParseBigDecimal() and DecimalFormat.setParseBigDecimal(boolean).
- Removed deprecated Retrotranslator constructor and JITRetrotranslator.install method.
- Ant task: added nested fileset, jarfileset, and dirset; removed src.
- Upgraded to backport-util-concurrent 3.0.
- Signature is being removed when translating signed jars.
- Retrotranslator runtime depends on backport-util-concurrent.
- When embedding runtime support, only directly or indirectly referenced classes are being kept.

Posted by Taras Puchko 2007-01-10

Retrotranslator 1.1.0 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.1.0:
- New -retainflags option to keep Java 5 specific access modifiers (was default before).
- SoftReference(Object, ReferenceQueue) and WeakReference(Object, ReferenceQueue) are being intercepted in advanced mode to support null for the second parameter on any JVM 1.4.

Posted by Taras Puchko 2006-11-07

Retrotranslator 1.0.9 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, covariant return types, formatted output, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.9:
- Supported: java.net.URL.toURI().
- Supported: all methods of java.lang.reflect.AccessibleObject.
- Supported: java.lang.Integer.signum(int) and java.lang.Long.signum(long).
- Supported: java.util.Formatter and formatting methods of java.lang.String.
- Supported: all constructors and methods of java.io.PrintStream and java.io.PrintWriter.
- New -backport option for user-specified backport packages.
- New options for JITRetrotranslator: -advanced and -backport (-advanced was default before).
- Bug fixed: Embedding runtime & backport failed in UNIX environments.
- Only required jars are being embedded when an -embed option is specified.

Posted by Taras Puchko 2006-10-25

Retrotranslator 1.0.8 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.8:
- Supported: all constructors of java.io.PrintWriter.
- Supported: java.rmi.server.RemoteObjectInvocationHandler.
- Supported: IllegalArgumentException(String, Throwable), IllegalArgumentException(Throwable).
- Supported: java.util.concurrent.locks.Condition.awaitNanos(long) but with very little accuracy guarantees.
- Supported in BigDecimal: divideAndRemainder(BigDecimal), divideToIntegralValue(BigDecimal), remainder(BigDecimal).
- Bug fixed: translation did not work for ReentrantReadWriteLock.readLock() and ReentrantReadWriteLock.writeLock().
- New -retainapi option to make classes compatible with JVM 1.4 but keep use of Java 5 API.

Posted by Taras Puchko 2006-08-20

Retrotranslator 1.0.7 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.7:
- Bug fixed: MissingResourceException when Java 5.0 API is used for classes generated at runtime.
- Ability to specify a package name for embedding retrotranslator-runtime-x.x.x.jar and backport-util-concurrent.jar.

Posted by Taras Puchko 2006-07-04

Retrotranslator 1.0.6 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.6:
- Emulated generic signatures for the collections framework classes (useful for JAXB).
- Cached data used by the transformer can be garbage collected.

Posted by Taras Puchko 2006-06-27

Retrotranslator 1.0.5 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.5:
- New -advanced option allows to override Java 1.4 methods.
- Supported in BigDecimal: ZERO, ONE, TEN, pow(int), toPlainString(), valueOf(double), valueOf(long).
- Supported BigDecimal.setScale(int, int) for negative scales in advanced mode.
- Ability to process UTF-8 text files in addition to bytecode: "-srcmask *.class;*.tld".
- getMethod(String, Class...) and getDeclaredMethod(String, Class...) are intercepted in advanced mode to better support generics and covariant return types on several JVM implementations, e.g. JRockit 1.4.2_08-b03.
- Upgraded to backport-util-concurrent 2.2.
- Deleted net.sf.retrotranslator.runtime.java.util.Collections_ (edu.emory.mathcs.backport.java.util.Collections is used instead), so retrotranslator-runtime-1.0.5.jar is NOT binary compatible with retrotranslator-runtime-1.0.4.jar.

Posted by Taras Puchko 2006-06-05

Retrotranslator 1.0.4 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.4:
- Bug fixed: String.replace(CharSequence, CharSequence) did not work with some characters.
- Bug fixed: NotSerializableException when serializing annotations.
- Retrotranslator will not replace "-" by "$" in identifiers any more, e.g. in "package-info.class".

Posted by Taras Puchko 2006-04-25

Retrotranslator 1.0.3 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.3:
- Bug fixed: NullPointerException on invisible (RetentionPolicy.CLASS) annotations.
- Supported: java.util.regex.Pattern.quote(String).

Posted by Taras Puchko 2006-04-04

Retrotranslator 1.0.2 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.2:
- Bug fixed: exception on deserialization of enum inner classes.

Posted by Taras Puchko 2006-03-21

Retrotranslator 1.0.1 released

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Supported features: generics, annotations, reflection on generics and annotations, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.1:
- Bug fixed: NullPointerException in RetrotranslatorTask
- Access to methods emptyList(), emptyMap(), emptySet() of java.util.Collections is now being replaced with access to fields EMPTY_LIST, EMPTY_MAP, EMPTY_SET.... read more

Posted by Taras Puchko 2006-03-13

Retrotranslator 1.0.0 released!

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4. Features supported: generics, annotations, generics and annotations reflection, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 1.0.0:
- Ability to process JAR files.
- New supported methods: System.nanoTime(), System.clearProperty(String), Boolean.compareTo(Boolean)

Posted by Taras Puchko 2006-03-10

Retrotranslator 0.9.9 released!

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0
into classes that can be run on JVM 1.4. Features supported: generics, annotations, generics and annotations reflection, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 0.9.9:
- Supported: Thread.getId(), UUID, MatchResult, Flushable, Appendable, Readable.
- Retrotranslator transformer API was improved for better plugin integration.
- JIT Retrotranslator works on IBM JDK and BEA JRockit JDK.
- Bug fixed: debug information is kept in translated classes.
- Bug fixed: invocations of DelayQueue are translated properly.
- Bug fixed: JIT Retrotranslator supports runtime annotations.

Posted by Taras Puchko 2006-03-01

Retrotranslator 0.9.8 released!

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0
into classes that can be run on JVM 1.4. Features supported: generics, annotations, generics and annotations reflection, enums, autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 0.9.8:
- Bug fixed: translated classes didn't work on JRE 1.4.1-b21.
- Limited support for Thread.getStackTrace().
- Support for StringBuffer(CharSequence) and for StringBuffer methods: append(CharSequence),
append(CharSequence, int, int), insert(int, CharSequence), insert(int, CharSequence, int, int)
- Option "-lazy" was added to transform Java 5.0 bytecode only.
- Upgrade to backport-util-concurrent 2.1.

Posted by Taras Puchko 2006-02-03

Retrotranslator 0.9.7 released!

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0
into classes that can be run on JVM 1.4. Retrotranslator is a free, open-source software.

Features supported: generics, annotations, generics and annotations reflection, enums,
autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 0.9.7:
- Support for EnumMap, Closeable, IllegalStateException(String, Throwable), IllegalStateException(Throwable).
- Class literal expressions (Classname.class) caused class initialization, fixed.
- A private copy of ASM was put into retrotranslator-runtime-0.9.7.jar to prevent ASM versions conflict.
- JITRetrotranslator does not require sun.misc.* classes to compile.... read more

Posted by Taras Puchko 2006-01-19

Retrotranslator 0.9.6 released!

Retrotranslator is a Java bytecode transformer that translates Java classes compiled with JDK 5.0
into classes that can be run on JVM 1.4. Retrotranslator is a free, open-source software.

Features supported: generics, annotations, generics and annotations reflection, enums,
autoboxing, for-each loop, varargs, static import, concurrency utilities, collections framework enhancements.

Changes in Retrotranslator 0.9.6:
- Dynamic discovery of backported classes.
- Full support for generics reflection.
- Improved java.lang.Enum support.
- Support for all methods in java.lang.Class.
- Support for BigDecimal(int), BigDecimal(long).
- Iterable is distinct from Collection, but even Iterable arrays can hold Collections.
- Patch 1392759 - build patch to create maven repository deployment units.... read more

Posted by Taras Puchko 2006-01-05