v53 class files

Jonathan Gibbons jonathan.gibbons at oracle.com
Sat Jan 30 03:11:40 UTC 2016


There are a number of reasons why it will be appropriate to increase the 
classfile version number for files generated by javac for use on JDK 9.

The list includes:

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.


While it is generally standard practice to increase the default 
classfile version number in each new major release of JDK, it has also 
been standard practice to defer the change during development of that 
release, to give tools and libraries a change to prepare for the change, 
and to be ready to accept class files with the new version number.

With that as context, this is to give notice that it will soon be time 
to make the change to using v53.0 class files, and that anyone writing 
tools and libraries for use on JDK 9 that process class files should 
update their code to handle the new version number.

-- Jon



More information about the jdk9-dev mailing list