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/01Foojay 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.
java.math.BigDecimal.sqrt() with RoundingMode.FLOOR results in incorrect resultFoojay 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.
Simplify JarFile.isInitializingFoojay Commentary:
For small applications, this noticeably solves a regression in startup and footprint.
No compilation error reported when a record is declared in a local classFoojay 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.
Serialization Specification changes for RecordsFoojay 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.readFoojay Commentary:
Fixes a regression caused by Jan 2020 CPU resulting in NPE exceptions. It adds a missing check for null to avoid the exception.