Some of the reasons for updating the class file version:
1. Unicode 8.0 -- Interpretation of Unicode escapes in string literals depends at run time on the SE 9 API. (Due to Unicode 8.0 assigning more code points, a program containing Unicode escapes "means something different" on SE 9 versus SE 8, so compiling it with -source 9 must imply -target 9, and hence v53.0 class files.)
2. Implementation of the String + operator depends at run time on the SE 9 API.
3. Invocation of VarHandle methods depends at run time on the SE 9 API.
4. New 'Module' attribute for class files.
1. Unicode 8.0 -- Interpretation of Unicode escapes in string literals depends at run time on the SE 9 API. (Due to Unicode 8.0 assigning more code points, a program containing Unicode escapes "means something different" on SE 9 versus SE 8, so compiling it with -source 9 must imply -target 9, and hence v53.0 class files.)
2. Implementation of the String + operator depends at run time on the SE 9 API.
3. Invocation of VarHandle methods depends at run time on the SE 9 API.
4. New 'Module' attribute for class files.