RFR: 8376483: Avoid loading java.nio.charset.StandardCharsets in java.util.zip.ZipCoder
Alan Bateman
alanb at openjdk.org
Tue Feb 24 07:41:47 UTC 2026
On Tue, 27 Jan 2026 10:44:42 GMT, Eirik Bjørsnøs <eirbjo at openjdk.org> wrote:
> Please review this PR which removes a dependency on `java.nio.charset.StandardCharsets` introduced in [JDK-8365703](https://bugs.openjdk.org/browse/JDK-8365703).
>
> We can use `UTF_8.INSTANCE` here as elsewhere in this class to prevent startup regression loading otherwise unused classes and charsets.
>
> Verified that running `java -cp hello.jar Hello` observes the following diff in loaded classes when run with this PR:
>
>
> < java.nio.charset.StandardCharsets
> < sun.nio.cs.US_ASCII
> < sun.nio.cs.ISO_8859_1
> < sun.nio.cs.UTF_16BE
> < sun.nio.cs.UTF_16LE
> < sun.nio.cs.UTF_16
> < sun.nio.cs.UTF_32BE
> < sun.nio.cs.UTF_32LE
> < sun.nio.cs.UTF_32
>
>
> This is a strict refactoring, no tests updated, `noreg-trivial`.
There was effort a few years ago to push out the first use of StandardCharsets as its initializer loaded all the standard charsets. So this is why you will have seen usages replaced with (mostly) UTF_8.INSTANCE. This was all before Project Leyden and the recent work on AOT. It would be useful to do some measurements to see if this change shows any benefit.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29443#issuecomment-3949805217
More information about the core-libs-dev
mailing list