Java backporting tools

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

[edit]

### Main information

[edit]

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

[edit]

| 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

[edit]

* Backporting

## References

[edit]

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

[edit]

* How to use Java 5 language features in earlier JDKs

This programming-language-related article is a stub. You can help Wikipedia by expanding it.

|

* v
* t
* e

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template