Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8355793

Start of release updates for JDK 26

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P4 P4
    • 26
    • core-libs
    • None
    • behavioral
    • minimal
    • Expected API evolution for a new release.
    • Java API
    • SE

      Summary

      Update core libraries for JDK 26 by adding an enum constant to ClassFileFormatVersion and a constant to ClassFile.

      Problem

      With a new release, ClassFileFormatVersion and ClassFile need constants to model that release.

      Solution

      Add the new constants. As a consequence of defining new constants, the behavior of the ClassFile.latestMajorVersion() and ClassFileFormatVersion.latest() methods is updated accordingly.

      Specification

      diff --git a/src/java.base/share/classes/java/lang/classfile/ClassFile.java b/src/java.base/share/classes/java/lang/classfile/ClassFile.java
      index 4b529c39099..216facbdddf 100644
      --- a/src/java.base/share/classes/java/lang/classfile/ClassFile.java
      +++ b/src/java.base/share/classes/java/lang/classfile/ClassFile.java
      @@ -1030,6 +1030,14 @@ default List<VerifyError> verify(Path path) throws IOException {
            */
           int JAVA_25_VERSION = 69;
      
      +    /**
      +     * The class major version introduced by Java SE 26, {@value}.
      +     *
      +     * @see ClassFileFormatVersion#RELEASE_26
      +     * @since 26
      +     */
      +    int JAVA_26_VERSION = 70;
      +
           /**
            * A minor version number {@value} indicating a class uses preview features
            * of a Java SE release since 12, for major versions {@value
      @@ -1041,7 +1049,7 @@ default List<VerifyError> verify(Path path) throws IOException {
            * {@return the latest class major version supported by the current runtime}
            */
           static int latestMajorVersion() {
      -        return JAVA_25_VERSION;
      +        return JAVA_26_VERSION;
           }
      
           /**
      diff --git a/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java b/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
      index 70eb921a124..4a63dd157f8 100644
      --- a/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
      +++ b/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
      @@ -371,6 +371,18 @@ public enum ClassFileFormatVersion {
            * <cite>The Java Virtual Machine Specification, Java SE 25 Edition</cite></a>
            */
           RELEASE_25(69),
      +
      +    /**
      +     * The version introduced by the Java Platform, Standard Edition
      +     * 26.
      +     *
      +     * @since 26
      +     *
      +     * @see <a
      +     * href="https://docs.oracle.com/javase/specs/jvms/se26/html/index.html">
      +     * <cite>The Java Virtual Machine Specification, Java SE 26 Edition</cite></a>
      +     */
      +    RELEASE_26(70),
           ; // Reduce code churn when appending new constants
      
           // Note to maintainers: when adding constants for newer releases,
      @@ -386,7 +398,7 @@ private ClassFileFormatVersion(int major) {
            * {@return the latest class file format version}
            */
           public static ClassFileFormatVersion latest() {
      -        return RELEASE_25;
      +        return RELEASE_26;
           }
      
           /**

            darcy Joe Darcy
            darcy Joe Darcy
            Chen Liang, Vicente Arturo Romero Zaldivar
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: