Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiling Java 7 to Java 6

I'm aware that the runtime features of Java 7 are not available with Java 6 but since no new byte code has been added the new byte code invokedynamic is only relevant for non-Java languages, I was wondering how hard it would be to convert Java 7 source code (new switch statement, diamond operator) to pure Java 6 (i.e. to be able to start to convert the source to Java 7 without losing Java 6 compatibility).

Any pointers?

like image 973
Aaron Digulla Avatar asked Oct 05 '11 13:10

Aaron Digulla


1 Answers

As far as I know, there is no solution for this problem at the moment. The best bet would be to extend retrotranslator to deal with Java 1.7 constructs. The diamond operator should be very easy, since it requires no bytecode modification at all.

Your statement "no new byte code has been added" is not correct: There is a new invokedynamic byte code and more importantly there are several cases where the generated bytecode will not be valid for 1.6 JREs, so retrotranslator would have to fix that.

like image 108
Ingo Kegel Avatar answered Oct 20 '22 00:10

Ingo Kegel