This section lists and comments on the highlights of the changes in the selected update release.

  • Keytool generates wrong expiration date if validity is set to 2050/01/01

    Foojay Commentary:

    The YR_2050 variable that was introduced to check if the date is JAN01 00:00 2050 GMT had been set to the wrong value JAN01 00:00 2050 PST.

  • Simplify JarFile.isInitializing

    Foojay Commentary:

    For small applications, this noticeably solves a regression in startup and footprint.

  • java.math.BigDecimal.sqrt() with RoundingMode.FLOOR results in incorrect result

    Foojay Commentary:

    Using RoundingMode.FLOOR returns incorrect results in certain situations. This is a result of the calculation being performed using a Newton-Raphson loop. The implementation now detects where the result is too large/small and compensates accordingly.

  • Serialization Specification changes for Records

    Foojay Commentary:

    Records are a restricted form of a class (similar to enums). Records can be serialized but need different processing. The serialized form of a Record object is a sequence of values derived from the Record components. During deserialization of Records, first the stream fields are read and reconstructed to serve as the Record\'s component values; and second, a Record object is created by invoking the Record\'s canonical constructor with the component values as arguments.

  • Problem with NullPointerException in RMI TCPEndpoint.read

    Foojay Commentary:

    Fixes a regression caused by Jan 2020 CPU resulting in NPE exceptions. It adds a missing check for null to avoid the exception.

  • No compilation error reported when a record is declared in a local class

    Foojay Commentary:

    If you declare a record in an inner class, it should throw a compilation error as the nested record type is implicitly static and an inner class cannot have static members (except for constant variables). The compiler does not report an error in this case.