Java backporting tools explained

Java backporting tools are programs (usually written in Java) that convert Java classes bytecodes from one version of the Java Platform to an older one (for example Java 5.0 backported to 1.4).

Java backporting tools comparison

Main information

The JVM has evolved a lot for the past years. However, most language features that were added are simply a syntactic sugar. They do not require new byte-code, hence can be compiled to the Java 8. But, since the Java language was always bound to the JVM development, new language features require the same target as the JVM because they get released all together.[1]

Source versionTarget versionLast releaseLicenseWebsite
RetrolambdaJava 8Java 7, 6, 52015-12-19, 2.1.0Apache License 2.0https://github.com/orfjackal/retrolambda
RetrotranslatorJava 52009-08-09, 1.2.9BSD-likehttps://retrotranslator.sourceforge.net/
RetroweaverJava 52008-10-14, 2.0.7BSD-likehttps://retroweaver.sourceforge.net/
DeclawerJava 5Java 1.42007-11-14LGPL or MPLhttps://www.glazedlists.com/Home/declawer
JBossRetroJava 5Java 1.42008-03-10, 1.1.2LGPLhttps://www.jboss.org/community/docs/DOC-10738
JabelJava 9–14Java 1.82021-10-20, 0.4.2Apache License 2.0https://github.com/bsideup/jabel

Features

lambda expressionsdefault methodsgenericsenhanced for loopsannotationsautoboxing and unboxingstatic importsvarargsenumerationsreflection on generics and annotationscovariant return types
Retrolambda
Retrotranslator
Retroweaver
Declawer
JBossRetro
formatted outputformatted inputcollections framework enhancementsconcurrency utilitiesemulate the Java 5.0 memory modelsupport for JDK 1.6 File methods like canExecuteAPI support for JDK 1.4API support for JDK 1.3API support for older release
Retrolambda
Retrotranslator[2] extensivelimitednone
Retroweaver
Declawer
JBossRetro

See also

References

  1. Web site: Jabel – use modern Java 9–14 syntax when targeting Java 8 . . 17 June 2022 .
  2. It uses the backport of the Java 5.0 concurrency utilities.

External links