Java backporting tools

Source: Wikipedia, the free encyclopedia.

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 version Target version Last release License Website
Retrolambda Java 8 Java 7, 6, 5 2015-12-19, 2.1.0 Apache License 2.0 https://github.com/orfjackal/retrolambda
Retrotranslator Java 5 2009-08-09, 1.2.9
BSD-like
https://retrotranslator.sourceforge.net/
Retroweaver Java 5 2008-10-14, 2.0.7
BSD-like
https://retroweaver.sourceforge.net/
Declawer Java 5 Java 1.4 2007-11-14
LGPL or MPL
https://www.glazedlists.com/Home/declawer
JBossRetro Java 5 Java 1.4 2008-03-10, 1.1.2 LGPL https://www.jboss.org/community/docs/DOC-10738
Jabel Java 9โ€“14 Java 1.8 2021-10-20, 0.4.2 Apache License 2.0 https://github.com/bsideup/jabel

Features

lambda expressions default methods generics
enhanced for loops
annotations
autoboxing and unboxing
static imports
varargs
enumerations
reflection
on generics and annotations
covariant return types
Retrolambda Yes Yes
Retrotranslator No No Yes Yes Yes Yes Yes Yes Yes Yes Yes
Retroweaver No No Yes Yes Yes Yes Yes Yes Yes No No
Declawer No No Yes
JBossRetro No No
formatted output formatted input collections framework enhancements concurrency utilities emulate the Java 5.0 memory model support for JDK 1.6 File methods like canExecute() API support for JDK 1.4 API support for JDK 1.3 API support for older release
Retrolambda
Retrotranslator Yes No Yes Yes[2] No No extensive limited none
Retroweaver No No No No No
Declawer
JBossRetro

See also

References

  1. ^ "Jabel โ€“ use modern Java 9โ€“14 syntax when targeting Java 8". GitHub. 17 June 2022.
  2. ^ It uses the backport of the Java 5.0 concurrency utilities.

External links