JDK-8330188 : Start of release updates for JDK 24
  • Type: CSR
  • Component: core-libs
  • Sub-Component: java.lang:reflect
  • Priority: P4
  • Status: Closed
  • Resolution: Approved
  • Fix Versions: 24
  • Submitted: 2024-04-12
  • Updated: 2024-10-25
  • Resolved: 2024-04-17
Related Reports
CSR :  
Relates :  
Relates :  
Description
Summary
-------
Update core libraries for JDK 24 by adding an enum constant to `ClassFileFormatVersion` and constant to `ClassFile`.

Problem
-------

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

Solution
--------

Add the new constant.
Specification
-------------

    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 16c57a9463e..72abe96a559 100644
    --- a/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
    +++ b/src/java.base/share/classes/java/lang/reflect/ClassFileFormatVersion.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
      * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      *
      * This code is free software; you can redistribute it and/or modify it
    @@ -306,6 +306,18 @@ public enum ClassFileFormatVersion {
          * <cite>The Java Virtual Machine Specification, Java SE 23 Edition</cite></a>
          */
         RELEASE_23(67),
    +
    +    /**
    +     * The version introduced by the Java Platform, Standard Edition
    +     * 24.
    +     *
    +     * @since 24
    +     *
    +     * @see <a
    +     * href="https://docs.oracle.com/javase/specs/jvms/se24/html/index.html">
    +     * <cite>The Java Virtual Machine Specification, Java SE 24 Edition</cite></a>
    +     */
    +    RELEASE_24(68),
         ; // Reduce code churn when appending new constants
     
         // Note to maintainers: when adding constants for newer releases,
    @@ -321,7 +333,7 @@ private ClassFileFormatVersion(int major) {
          * {@return the latest class file format version}
          */
         public static ClassFileFormatVersion latest() {
    -        return RELEASE_23;
    +        return RELEASE_24;
         }
     
         /**


    --- a/src/java.base/share/classes/java/lang/classfile/ClassFile.java
    +++ b/src/java.base/share/classes/java/lang/classfile/ClassFile.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
      * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      *
      * This code is free software; you can redistribute it and/or modify it
    @@ -1478,6 +1478,12 @@ default List<VerifyError> verify(Path path) throws IOException {
         /** 67 */
         int JAVA_23_VERSION = 67;
     
    +    /**
    +     * The class major version of JAVA_24.
    +     * @since 24
    +     */
    +    int JAVA_24_VERSION = 68;
    +


Comments
Re-approved CSR after additional review added for expanded API change.
17-04-2024

Moving back to draft to cover addition of a constant in ClassFile.
17-04-2024

Moving to Approved.
15-04-2024