HTTP/2 301
server: AkamaiGHost
content-length: 0
location: https://openjdk.org/jeps/112
date: Wed, 30 Jul 2025 21:34:28 GMT
HTTP/2 200
content-type: text/html
last-modified: Thu, 05 Jun 2025 17:23:09 GMT
vary: Accept-Encoding
etag: "6841d27d-2d78"
content-security-policy-report-only: default-src 'self' *.openjdk.java.net feedburner.google.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' feeds.feedburner.com *.statcounter.com statcounter.com; img-src 'self' data: *.statcounter.com *.openjdk.java.net feedburner.google.com; frame-ancestors 'none'; report-uri https://openjdk.report-uri.io/r/default/csp/reportOnly
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
accept-ranges: bytes
x-akamai-transformed: 0 - 0 -
content-encoding: gzip
date: Wed, 30 Jul 2025 21:34:29 GMT
content-length: 3313
set-cookie: _abck=B19661907990C9D7A20B37A12DE5B552~-1~YAAQNAHARb8jMT2YAQAAqBlCXQ5COO9fXUp/Wl9Z73zDuY5q9o1jspFI9dKk9Lu+/e49Or85SRJRbyVqBGBdeScyPL2jhfGwt8NaLZg5lfnzK0U7/S5EaF8mDhbDMpP5p9yHRpQ47dNWNAxfwKY3+N+qPtM0ssIQq7TachwErMAZ2FhNLArbYKgwuRlPVGENg4WOXKKFgm7urgB2InAxcBdMiFnILto5JVEWsYGfqR2NqL06ypPRIyqA3qgMrxHlBouiX1onTqbCq4c3MPnqT2jfrM1xPU0PAKeLpDjCk1f31fL7ueVJ2z8/je2tkVEK5pEK8/srfY5zYgnVvZgh1Jcb4CU6fFbkKS7ywQ4cc6ifb1WD5vE9FCaHVvD/C3H/qM5e/ajczNZOF7gYBsx5BCOQVwjzCJssZH9Pf7rtXAishCxdCrzgj7i4vpG1V9bUCRPDFh8=~-1~-1~-1; Domain=.openjdk.org; Path=/; Expires=Thu, 30 Jul 2026 21:34:29 GMT; Max-Age=31536000; Secure
set-cookie: bm_sz=73D0E097E1AABAF00B0B63EA1AB50E17~YAAQNAHARcAjMT2YAQAAqBlCXRzW8ip/6cAf2vsbkVCe+oJov9dt7iT6DG9e3AEdHb36i2jj9liNCpq0SxSwU6dcqT+yIJWL4sHqWuF+LEml8zsB7yO0m7/jzJyiMD9ZSZDdupp9ds01Mfg/Azqh76Qxov6E1G8hE4b5y/oImQwlj1ghbsHXiwCZKViKA6wCP209zSTLLQfDajjcaJ31BXaSRtCuFz3+fLuDaxg/SmmqJKw0s9FEpRW+hPG8X0OUI7qT28+sZppsIttylzp5PNIgmPqjyT7Cq72BiihYt8NicmLZAdMHq0IMwYNEmdTnDW/akmEnwAc83V3B8OL+dEpbmwa7jPYOFVBt8yVUa8GU7ZvwdVHd464=~4339526~4599862; Domain=.openjdk.org; Path=/; Expires=Thu, 31 Jul 2025 01:34:28 GMT; Max-Age=14399
JEP 112: Charset Implementation Improvements
Owner | Xueming Shen |
Type | Feature |
Scope | Implementation |
Status | Closed / Delivered |
Release | 8 |
Component | core-libs |
Discussion | core dash libs dash dev at openjdk dot java dot net |
Effort | S |
Duration | S |
Endorsed by | Brian Goetz |
Created | 2011/07/28 20:00 |
Updated | 2015/01/22 17:18 |
Issue | 8046102 |
Summary
Improve the maintainability and performance of the standard and extended
charset implementations.
Motivation
-
Decrease the size of installed charsets
-
Reduce maintenance cost by generating charset implementations at build time
from simple text-based mapping tables
-
Improve the performance of encoding/decoding
Description
This is the second part of the sun.nio.cs/ext re-implementation project. In
JDK 7 most of the charsets (80%+) were re-implemented to achieve better
maintainability and performance. This JEP continues that work to:
-
Re-implement the remaining charsets, mainly the JIS_X_0208/0212 based
Japanese charsets and couple of IBM double-byte charsets such as IBM964 and
IBM33722.
-
Implement the sun.nio.cs.ArrayDecoder/Encoder API for the most frequently
used double-byte charsets to enhance new String(byte[])
and
String.getBytes()
performance.
-
Improve the start-up/access performance of the standard and extended
charsets providers.
Testing
Need to ensure that the new implementations are completely compatible (for each
and every code point) with the existing implementation. Will write new
automatic unit tests running under current test framework to guarantee
correctness.