Search code examples
javajvmcompatibilityjava-7java-8

Can Java 8 code be compiled to run on Java 7 JVM?


Java 8 introduces important new language features such as lambda expressions.

Are these changes in the language accompanied by such significant changes in the compiled bytecode that would prevent it from being run on a Java 7 virtual machine without using some retrotranslator?


Solution

  • No, using 1.8 features in your source code requires you to target a 1.8 VM. I just tried the new Java 8 release and tried compiling with -target 1.7 -source 1.8, and the compiler refuses:

    $ javac Test -source 1.8 -target 1.7
    javac: source release 1.8 requires target release 1.8