3.3 KiB
3.3 KiB
% Explanation of start of release changes
Overview
The start of release changes, the changes that turn JDK N into JDK
(N+1), are primarily small updates to various files along with new files to
store symbol information to allow javac --release N ...
to run on
JDK (N+1).
The updates include changes to files holding meta-data about the
release, files under the src
directory for API and tooling updates,
and incidental updates under the test
directory.
Details and file updates
As a matter of policy, there are a number of semantically distinct concepts which get incremented separately at the start of a new release:
- Feature value of
Runtime.version()
- Highest source version modeled by
javax.lang.model.SourceVersion
- Highest class file format major version recognized by the platform
- Highest
-source
/-target
/--release
argument recognized byjavac
and related tools
The expected file updates are listed below. Additional files may need to be updated for a particular release.
Meta-data files
jcheck/conf
: update meta-data used byjcheck
and the Skara toolingmake/conf/version-numbers.conf
: update to meta-data used in the build
src
files
src/hotspot/share/classfile/classFileParser.cpp
: add a#define
for the new versionsrc/java.base/share/classes/java/lang/classfile/ClassFile.java
: add a constant for the new class file format versionsrc/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
: add anenum
constant for the new class file format versionsrc/java.compiler/share/classes/javax/lang/model/SourceVersion.java
: add anenum
constant for the new source versionsrc/java.compiler/share/classes/javax/lang/model/util/*
visitors: Update@SupportedSourceVersion
annotations to latest value. Note this update is done in lieu of introducing another set of visitors for each Java SE release.src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java
: add anenum
constant for the new source version internal tojavac
src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java
: add anenum
constant for the new class file format version internal tojavac
src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java
: add anenum
constant for the new target version internal tojavac
src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java
update printing processor to support the new source version- The symbol information for
--release
is stored as new text files in thesrc/jdk.compiler/share/data/symbols
directory, one file per module. The README file in that directory contains directions on how to create the files.
test
files
test/langtools/tools/javac/api/TestGetSourceVersions.java
: add newSourceVersion
constant to test matrix.test/langtools/tools/javac/classfiles/ClassVersionChecker.java
: add new enum constant for the new class file versiontest/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java
update annotation processor extended byjavac
tests to cover the new source versiontest/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out
andtest/langtools/tools/javac/preview/classReaderTest/Client.preview.out
: update expected messages for preview errors and warnings