3 |
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X |
JDK-X - https://bugs.openjdk.java.net/browse/JDK-X |
4 |
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY |
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY |
5 |
|
|
6 |
New in release OpenJDK 15.0.2 (2021-01-19): |
New in release OpenJDK 17.0.1 (2021-10-19): |
7 |
=========================================== |
=========================================== |
8 |
Live versions of these release notes can be found at: |
Live versions of these release notes can be found at: |
9 |
* https://builds.shipilev.net/backports-monitor/release-notes-15.0.2.txt |
* https://builds.shipilev.net/backports-monitor/release-notes-17.0.1.txt |
10 |
|
|
11 |
* Security fixes |
* Security fixes |
12 |
- JDK-8247619: Improve Direct Buffering of Characters |
- JDK-8263314: Enhance XML Dsig modes |
13 |
|
- JDK-8265167, CVE-2021-35556: Richer Text Editors |
14 |
|
- JDK-8265574: Improve handling of sheets |
15 |
|
- JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit |
16 |
|
- JDK-8265776: Improve Stream handling for SSL |
17 |
|
- JDK-8266097, CVE-2021-35561: Better hashing support |
18 |
|
- JDK-8266103: Better specified spec values |
19 |
|
- JDK-8266109: More Resilient Classloading |
20 |
|
- JDK-8266115: More Manifest Jar Loading |
21 |
|
- JDK-8266137, CVE-2021-35564: Improve Keystore integrity |
22 |
|
- JDK-8266689, CVE-2021-35567: More Constrained Delegation |
23 |
|
- JDK-8267086: ArrayIndexOutOfBoundsException in java.security.KeyFactory.generatePublic |
24 |
|
- JDK-8267712: Better LDAP reference processing |
25 |
|
- JDK-8267729, CVE-2021-35578: Improve TLS client handshaking |
26 |
|
- JDK-8267735, CVE-2021-35586: Better BMP support |
27 |
|
- JDK-8268193: Improve requests of certificates |
28 |
|
- JDK-8268199: Correct certificate requests |
29 |
|
- JDK-8268205: Enhance DTLS client handshake |
30 |
|
- JDK-8268500: Better specified ParameterSpecs |
31 |
|
- JDK-8268506: More Manifest Digests |
32 |
|
- JDK-8269618, CVE-2021-35603: Better session identification |
33 |
|
- JDK-8269624: Enhance method selection support |
34 |
|
- JDK-8270398: Enhance canonicalization |
35 |
|
- JDK-8270404: Better canonicalization |
36 |
* Other changes |
* Other changes |
37 |
- JDK-8197981: Missing return statement in __sync_val_compare_and_swap_8 |
- JDK-8225082: Remove IdenTrust certificate that is expiring in September 2021 |
38 |
- JDK-8239105: Add exception for expiring Digicert root certificates to VerifyCACerts test |
- JDK-8243543: jtreg test security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java fails |
39 |
- JDK-8247741: Test test/hotspot/jtreg/runtime/7162488/TestUnrecognizedVmOption.java fails when -XX:+IgnoreUnrecognizedVMOptions is set |
- JDK-8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked |
40 |
- JDK-8248411: [aarch64] Insufficient error handling when CodeBuffer is exhausted |
- JDK-8261088: Repeatable annotations without @Target cannot have containers that target module declarations |
41 |
- JDK-8248596: [TESTBUG] compiler/loopopts/PartialPeelingUnswitch.java times out with Graal enabled |
- JDK-8262731: [macOS] Exception from "Printable.print" is swallowed during "PrinterJob.print" |
42 |
- JDK-8248667: Need support for building native libraries located in the test/lib directory |
- JDK-8263531: Remove unused buffer int |
43 |
- JDK-8249176: Update GlobalSignR6CA test certificates |
- JDK-8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java |
44 |
- JDK-8249192: MonitorInfo stores raw oops across safepoints |
- JDK-8267625: AARCH64: typo in LIR_Assembler::emit_profile_type |
45 |
- JDK-8249217: Unexpected StackOverflowError in "process reaper" thread still happens |
- JDK-8267666: Add option to jcmd GC.heap_dump to use existing file |
46 |
- JDK-8249781: AArch64: AOT compiled code crashes if C2 allocates r27 |
- JDK-8268019: C2: assert(no_dead_loop) failed: dead loop detected |
47 |
- JDK-8250257: Bump release strings for JDK 15.0.2 |
- JDK-8268261: C2: assert(n != __null) failed: Bad immediate dominator info. |
48 |
- JDK-8251397: NPE on ClassValue.ClassValueMap.cacheArray |
- JDK-8268427: Improve AlgorithmConstraints:checkAlgorithm performance |
49 |
- JDK-8251859: sun/security/validator/PKIXValAndRevCheckTests.java fails |
- JDK-8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms |
50 |
- JDK-8253191: C2: Masked byte comparisons with large masks produce wrong result on x86 |
- JDK-8269297: Bump version numbers for JDK 17.0.1 |
51 |
- JDK-8253375: OSX build fails with Xcode 12.0 (12A7209) |
- JDK-8269478: Shenandoah: gc/shenandoah/mxbeans tests should be more resilient |
52 |
- JDK-8253566: clazz.isAssignableFrom will return false for interface implementors |
- JDK-8269574: C2: Avoid redundant uncommon traps in GraphKit::builtin_throw() for JVMTI exception events |
53 |
- JDK-8253756: C2 CompilerThread0 crash in Node::add_req(Node*) |
- JDK-8269763: The JEditorPane is blank after JDK-8265167 |
54 |
- JDK-8253791: Issue with useAppleColor check in CSystemColors.m |
- JDK-8269851: OperatingSystemMXBean getProcessCpuLoad reports incorrect process cpu usage in containers |
55 |
- JDK-8253960: Memory leak in Java_java_lang_ClassLoader_defineClass0() |
- JDK-8269882: stack-use-after-scope in NewObjectA |
56 |
- JDK-8254081: java/security/cert/PolicyNode/GetPolicyQualifiers.java fails due to an expired certificate |
- JDK-8269897: Shenandoah: Resolve UNKNOWN access strength, where possible |
57 |
- JDK-8254166: Zero: return-type warning in zeroInterpreter_zero.cpp |
- JDK-8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status |
58 |
- JDK-8254177: (tz) Upgrade time-zone data to tzdata2020b |
- JDK-8269993: [Test]: java/net/httpclient/DigestEchoClientSSL.java contains redundant @run tags |
59 |
- JDK-8254319: Shenandoah: Interpreter native-LRB needs to activate during HAS_FORWARDED |
- JDK-8270094: Shenandoah: Provide human-readable labels for test configurations |
60 |
- JDK-8254320: Shenandoah: C2 native LRB should activate for non-cset objects |
- JDK-8270096: Shenandoah: Optimize gc/shenandoah/TestRefprocSanity.java for interpreter mode |
61 |
- JDK-8254790: SIGSEGV in string_indexof_char and stringL_indexof_char intrinsics |
- JDK-8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert |
62 |
- JDK-8254854: [cgroups v1] Metric limits not properly detected on some join controller combinations |
- JDK-8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup |
63 |
- JDK-8254982: (tz) Upgrade time-zone data to tzdata2020c |
- JDK-8270280: security/infra/java/security/cert/CertPathValidator/certification/LetsEncryptCA.java OCSP response error |
64 |
- JDK-8255065: Zero: accessor_entry misses the IRIW case |
- JDK-8270344: Session resumption errors |
65 |
- JDK-8255067: Restore Copyright line in file modified by 8253191 |
- JDK-8271203: C2: assert(iff->Opcode() == Op_If || iff->Opcode() == Op_CountedLoopEnd || iff->Opcode() == Op_RangeCheck) failed: Check this code when new subtype is added |
66 |
- JDK-8255226: (tz) Upgrade time-zone data to tzdata2020d |
- JDK-8271276: C2: Wrong JVM state used for receiver null check |
67 |
- JDK-8255599: Change jdk 15.0.2 milestone to fcs for build b04 |
- JDK-8271335: Updating RE Configs for BUILD REQUEST 17.0.1+4 |
68 |
- JDK-8255603: Memory/Performance regression after JDK-8210985 |
- JDK-8271589: fatal error with variable shift count integer rotate operation. |
69 |
- JDK-8256051: nmethod_entry_barrier stub miscalculates xmm spill size on x86_32 |
- JDK-8271723: Unproblemlist runtime/InvocationTests/invokevirtualTests.java |
70 |
- JDK-8256427: Test com/sun/jndi/dns/ConfigTests/PortUnreachable.java does not work on AIX |
- JDK-8271730: Client authentication using RSASSA-PSS fails after correct certificate requests |
71 |
- JDK-8256618: Zero: Linux x86_32 build still fails |
- JDK-8271925: ZGC: Arraycopy stub passes invalid oop to load barrier |
72 |
- JDK-8257181: s390x builds are very noisy with gc-sections messages |
- JDK-8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon |
73 |
- JDK-8257641: Shenandoah: Query is_at_shenandoah_safepoint() from control thread should return false |
- JDK-8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj |
74 |
- JDK-8257701: Shenandoah: objArrayKlass metadata is not marked with chunked arrays |
- JDK-8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails |
75 |
|
- JDK-8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790 |
76 |
|
- JDK-8272472: StackGuardPages test doesn't build with glibc 2.34 |
77 |
|
- JDK-8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182 |
78 |
|
- JDK-8272602: [macos] not all KEY_PRESSED events sent when control modifier is used |
79 |
|
- JDK-8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848 |
80 |
|
- JDK-8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled |
81 |
|
- JDK-8272806: [macOS] "Apple AWT Internal Exception" when input method is changed |
82 |
|
- JDK-8273358: macOS Monterey does not have the font Times needed by Serif |
83 |
|
|
84 |
Notes on individual issues: |
Notes on individual issues: |
85 |
=========================== |
=========================== |
86 |
|
|
87 |
core-libs/java.time: |
security-libs/java.security: |
88 |
|
|
89 |
JDK-8254177: US/Pacific-New Zone name removed as part of tzdata2020b |
JDK-8271434: Removed IdenTrust Root Certificate |
90 |
==================================================================== |
=============================================== |
91 |
Following JDK's update to tzdata2020b, the long-obsolete files |
The following root certificate from IdenTrust has been removed from |
92 |
pacificnew and systemv have been removed. As a result, the |
the `cacerts` keystore: |
|
"US/Pacific-New" zone name declared in the pacificnew data file is no |
|
|
longer available for use. |
|
93 |
|
|
94 |
Information regarding the update can be viewed at |
Alias Name: identrustdstx3 [jdk] |
95 |
https://mm.icann.org/pipermail/tz-announce/2020-October/000059.html |
Distinguished Name: CN=DST Root CA X3, O=Digital Signature Trust Co. |
96 |
|
|
97 |
New in release OpenJDK 15.0.1 (2020-10-20): |
New in release OpenJDK 17.0.0 (2021-09-14): |
98 |
=========================================== |
=========================================== |
99 |
Live versions of these release notes can be found at: |
The full list of changes in the interim releases from 11u to 17u can be found at: |
100 |
* https://builds.shipilev.net/backports-monitor/release-notes-15.0.1.txt |
* https://builds.shipilev.net/backports-monitor/release-notes-12.txt |
101 |
|
* https://builds.shipilev.net/backports-monitor/release-notes-13.txt |
102 |
|
* https://builds.shipilev.net/backports-monitor/release-notes-14.txt |
103 |
|
* https://builds.shipilev.net/backports-monitor/release-notes-15.txt |
104 |
|
* https://builds.shipilev.net/backports-monitor/release-notes-16.txt |
105 |
|
* https://builds.shipilev.net/backports-monitor/release-notes-17.txt |
106 |
|
|
107 |
|
Major changes are listed below. Some changes may have been backported |
108 |
|
to earlier releases following their first appearance in OpenJDK 12 |
109 |
|
through to 17. |
110 |
|
|
111 |
|
NEW FEATURES |
112 |
|
============ |
113 |
|
|
114 |
|
Language Features |
115 |
|
================= |
116 |
|
|
117 |
|
Switch Expressions |
118 |
|
================== |
119 |
|
https://openjdk.java.net/jeps/325 |
120 |
|
https://openjdk.java.net/jeps/354 |
121 |
|
https://openjdk.java.net/jeps/361 |
122 |
|
|
123 |
|
Extend the `switch` statement so that it can be used as either a |
124 |
|
statement or an expression, and that both forms can use either a |
125 |
|
"traditional" or "simplified" scoping and control flow behavior. Both |
126 |
|
forms can use either traditional `case ... :` labels (with fall |
127 |
|
through) or new `case ... ->` labels (with no fall through), with a |
128 |
|
further new statement for yielding a value from a `switch` |
129 |
|
expression. These changes will simplify everyday coding, and also |
130 |
|
prepare the way for the use of pattern matching in `switch`. |
131 |
|
|
132 |
|
This was a preview feature (http://openjdk.java.net/jeps/12) in |
133 |
|
OpenJDK 12 & 13 and became final in OpenJDK 14. |
134 |
|
|
135 |
|
Text Blocks |
136 |
|
=========== |
137 |
|
https://openjdk.java.net/jeps/355 |
138 |
|
https://openjdk.java.net/jeps/368 |
139 |
|
https://openjdk.java.net/jeps/378 |
140 |
|
|
141 |
|
Add text blocks to the Java language. A text block is a multi-line |
142 |
|
string literal that avoids the need for most escape sequences, |
143 |
|
automatically formats the string in a predictable way, and gives the |
144 |
|
developer control over format when desired. |
145 |
|
|
146 |
|
This was a preview feature (http://openjdk.java.net/jeps/12) in |
147 |
|
OpenJDK 13 & 14 and became final in OpenJDK 15. |
148 |
|
|
149 |
|
Pattern Matching for instanceof |
150 |
|
=============================== |
151 |
|
https://openjdk.java.net/jeps/305 |
152 |
|
https://openjdk.java.net/jeps/375 |
153 |
|
https://openjdk.java.net/jeps/394 |
154 |
|
http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html |
155 |
|
|
156 |
|
Enhance the Java programming language with pattern matching for the |
157 |
|
`instanceof` operator. Pattern matching allows common logic in a |
158 |
|
program, namely the conditional extraction of components from objects, |
159 |
|
to be expressed more concisely and safely. |
160 |
|
|
161 |
|
This was a preview feature (http://openjdk.java.net/jeps/12) in |
162 |
|
OpenJDK 14 & 15 and became final in OpenJDK 16. |
163 |
|
|
164 |
|
Records |
165 |
|
======= |
166 |
|
https://openjdk.java.net/jeps/359 |
167 |
|
https://openjdk.java.net/jeps/384 |
168 |
|
https://openjdk.java.net/jeps/395 |
169 |
|
|
170 |
|
Enhance the Java programming language with records. Records provide a |
171 |
|
compact syntax for declaring classes which are transparent holders for |
172 |
|
shallowly immutable data. |
173 |
|
|
174 |
|
This was a preview feature (http://openjdk.java.net/jeps/12) in |
175 |
|
OpenJDK 14 & 15 and became final in OpenJDK 16. |
176 |
|
|
177 |
|
Sealed Classes |
178 |
|
============== |
179 |
|
https://openjdk.java.net/jeps/360 |
180 |
|
https://openjdk.java.net/jeps/397 |
181 |
|
https://openjdk.java.net/jeps/409 |
182 |
|
https://cr.openjdk.java.net/~briangoetz/amber/datum.html |
183 |
|
|
184 |
|
Enhance the Java programming language with sealed classes and |
185 |
|
interfaces. Sealed classes and interfaces restrict which other classes |
186 |
|
or interfaces may extend or implement them. |
187 |
|
|
188 |
|
This was a preview feature (http://openjdk.java.net/jeps/12) in |
189 |
|
OpenJDK 15 & 16 and became final in OpenJDK 17. |
190 |
|
|
191 |
|
Restore Always-Strict Floating-Point Semantics |
192 |
|
============================================== |
193 |
|
https://openjdk.java.net/jeps/306 |
194 |
|
|
195 |
|
Make floating-point operations consistently strict, rather than have |
196 |
|
both strict floating-point semantics (`strictfp`) and subtly different |
197 |
|
default floating-point semantics. This will restore the original |
198 |
|
floating-point semantics to the language and VM, matching the |
199 |
|
semantics before the introduction of strict and default floating-point |
200 |
|
modes in Java SE 1.2. |
201 |
|
|
202 |
* Security fixes |
Pattern Matching for switch |
203 |
- JDK-8233624: Enhance JNI linkage |
=========================== |
204 |
- JDK-8236196: Improve string pooling |
https://openjdk.java.net/jeps/406 |
|
- JDK-8236862, CVE-2020-14779: Enhance support of Proxy class |
|
|
- JDK-8237990, CVE-2020-14781: Enhanced LDAP contexts |
|
|
- JDK-8237995, CVE-2020-14782: Enhance certificate processing |
|
|
- JDK-8240124: Better VM Interning |
|
|
- JDK-8241114, CVE-2020-14792: Better range handling |
|
|
- JDK-8242680, CVE-2020-14796: Improved URI Support |
|
|
- JDK-8242685, CVE-2020-14797: Better Path Validation |
|
|
- JDK-8242695, CVE-2020-14798: Enhanced buffer support |
|
|
- JDK-8243302: Advanced class supports |
|
|
- JDK-8244136, CVE-2020-14803: Improved Buffer supports |
|
|
- JDK-8244479: Further constrain certificates |
|
|
- JDK-8244955: Additional Fix for JDK-8240124 |
|
|
- JDK-8245407: Enhance zoning of times |
|
|
- JDK-8245412: Better class definitions |
|
|
- JDK-8245417: Improve certificate chain handling |
|
|
- JDK-8248574: Improve jpeg processing |
|
|
- JDK-8249927: Specify limits of jdk.serialProxyInterfaceLimit |
|
|
- JDK-8253019: Enhanced JPEG decoding |
|
|
* Other changes |
|
|
- JDK-8232114: JVM crashed at imjpapi.dll in native code |
|
|
- JDK-8243470: [macos] bring back O2 opt level for unsafe.cpp |
|
|
- JDK-8247251: Assert '(_pcs_length == 0 || last_pc()->pc_offset() < pc_offset) failed: must specify a new, larger pc offset' failure |
|
|
- JDK-8248495: [macos] zerovm is broken due to libffi headers location |
|
|
- JDK-8248745: Add jarsigner and keytool tests for restricted algorithms |
|
|
- JDK-8249165: Remove unneeded nops introduced by 8234160 changes |
|
|
- JDK-8249183: JVM crash in "AwtFrame::WmSize" method |
|
|
- JDK-8249266: Bump release strings for JDK 15.0.1 |
|
|
- JDK-8249266: Change jdk 15.0.1 milestone to fcs for build b02 |
|
|
- JDK-8250612: jvmciCompilerToVM.cpp declares jio_printf with "void" return type, should be "int" |
|
|
- JDK-8250665: Wrong translation for the month name of May in ar_JO,LB,SY |
|
|
- JDK-8250861: Crash in MinINode::Ideal(PhaseGVN*, bool) |
|
|
- JDK-8250876: Fix issues with cross-compile on macos |
|
|
- JDK-8250928: JFR: Improve hash algorithm for stack traces |
|
|
- JDK-8251359: Shenandoah: filter null oops before calling enqueue/SATB barrier |
|
|
- JDK-8251458: Parse::do_lookupswitch fails with "assert(_cnt >= 0) failed" |
|
|
- JDK-8251859: sun/security/validator/PKIXValAndRevCheckTests.java fails |
|
|
- JDK-8251910: Shenandoah: Handshake threads between weak-roots and reset phases |
|
|
- JDK-8252120: compiler/oracle/TestCompileCommand.java misspells "occured" |
|
|
- JDK-8252292: 8240795 may cause anti-dependence to be missed |
|
|
- JDK-8252359: HotSpot Not Identifying it is Running in a Container |
|
|
- JDK-8252367: Undo JDK-8245000: Windows GDI functions don't support large pages |
|
|
- JDK-8252368: Undo JDK-8245002: Windows GDI functions don't support NUMA interleaving |
|
|
- JDK-8252470: java/awt/dnd/DisposeFrameOnDragCrash/DisposeFrameOnDragTest.java fails on Windows |
|
|
- JDK-8252660: Shenandoah: support manageable SoftMaxHeapSize option |
|
|
- JDK-8252754: Hash code calculation of JfrStackTrace is inconsistent |
|
|
- JDK-8253222: Shenandoah: unused AlwaysTrueClosure after JDK-8246591 |
|
|
- JDK-8253224: Shenandoah: ShenandoahStrDedupQueue destructor calls virtual num_queues() |
|
|
- JDK-8253226: Shenandoah: remove unimplemented ShenandoahStrDedupQueue::verify |
|
|
- JDK-8253284: Zero OrderAccess barrier mappings are incorrect |
|
|
- JDK-8253714: [cgroups v2] Soft memory limit incorrectly using memory.high |
|
|
- JDK-8253727: [cgroups v2] Memory and swap limits reported incorrectly |
|
|
- JDK-8253778: ShenandoahSafepoint::is_at_shenandoah_safepoint should not access VMThread state from other threads |
|
|
- JDK-8254144: Non-x86 Zero builds fail with return-type warning in os_linux_zero.cpp |
|
|
- JDK-8254560: Shenandoah: Concurrent Strong Roots logging is incorrect |
|
205 |
|
|
206 |
Notes on individual issues: |
Enhance the Java programming language with pattern matching for |
207 |
|
`switch` expressions and statements, along with extensions to the |
208 |
|
language of patterns. Extending pattern matching to `switch` allows an |
209 |
|
expression to be tested against a number of patterns, each with a |
210 |
|
specific action, so that complex data-oriented queries can be |
211 |
|
expressed concisely and safely. |
212 |
|
|
213 |
|
This is a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK |
214 |
|
17. |
215 |
|
|
216 |
|
Library Features |
217 |
|
================ |
218 |
|
|
219 |
|
JVM Constants API |
220 |
|
================= |
221 |
|
https://openjdk.java.net/jeps/334 |
222 |
|
|
223 |
|
Introduce an API to model nominal descriptions of key class-file and |
224 |
|
run-time artifacts, in particular constants that are loadable from the |
225 |
|
constant pool. |
226 |
|
|
227 |
|
Reimplement the Legacy Socket API |
228 |
|
================================= |
229 |
|
https://openjdk.java.net/jeps/353 |
230 |
|
|
231 |
|
Replace the underlying implementation used by the `java.net.Socket` |
232 |
|
and `java.net.ServerSocket` APIs with a simpler and more modern |
233 |
|
implementation that is easy to maintain and debug. The new |
234 |
|
implementation will be easy to adapt to work with user-mode threads, |
235 |
|
a.k.a. fibers, currently being explored in Project Loom |
236 |
|
(https://openjdk.java.net/projects/loom). |
237 |
|
|
238 |
|
JFR Event Streaming |
239 |
|
=================== |
240 |
|
https://openjdk.java.net/jeps/349 |
241 |
|
|
242 |
|
Expose JDK Flight Recorder data for continuous monitoring. |
243 |
|
|
244 |
|
Non-Volatile Mapped Byte Buffers |
245 |
|
================================ |
246 |
|
https://openjdk.java.net/jeps/352 |
247 |
|
|
248 |
|
Add new JDK-specific file mapping modes so that the `FileChannel` API |
249 |
|
can be used to create `MappedByteBuffer` instances that refer to |
250 |
|
non-volatile memory. |
251 |
|
|
252 |
|
Helpful NullPointerExceptions |
253 |
|
============================= |
254 |
|
https://openjdk.java.net/jeps/358 |
255 |
|
|
256 |
|
Improve the usability of `NullPointerException`s generated by the JVM |
257 |
|
by describing precisely which variable was `null`. |
258 |
|
|
259 |
|
Foreign-Memory Access API |
260 |
|
========================= |
261 |
|
https://openjdk.java.net/jeps/370 |
262 |
|
https://openjdk.java.net/jeps/383 |
263 |
|
https://openjdk.java.net/jeps/393 |
264 |
|
|
265 |
|
Introduce an API to allow Java programs to safely and efficiently |
266 |
|
access foreign memory outside of the Java heap. |
267 |
|
|
268 |
|
This was a incubation feature (https://openjdk.java.net/jeps/11) in |
269 |
|
OpenJDK 14, 15 & 16, now superseded by the Foreign Function & Memory |
270 |
|
API in OpenJDK 17 (see below). |
271 |
|
|
272 |
|
Edwards-Curve Digital Signature Algorithm (EdDSA) |
273 |
|
================================================= |
274 |
|
https://openjdk.java.net/jeps/339 |
275 |
|
|
276 |
|
Implement cryptographic signatures using the Edwards-Curve Digital |
277 |
|
Signature Algorithm (EdDSA) as described by RFC 8032 |
278 |
|
(https://tools.ietf.org/html/rfc8032). |
279 |
|
|
280 |
|
Hidden Classes |
281 |
|
============== |
282 |
|
https://openjdk.java.net/jeps/371 |
283 |
|
|
284 |
|
Introduce hidden classes, which are classes that cannot be used |
285 |
|
directly by the bytecode of other classes. Hidden classes are intended |
286 |
|
for use by frameworks that generate classes at run time and use them |
287 |
|
indirectly, via reflection. A hidden class may be defined as a member |
288 |
|
of an access control nest (https://openjdk.java.net/jeps/181), and may |
289 |
|
be unloaded independently of other classes. |
290 |
|
|
291 |
|
Reimplement the Legacy DatagramSocket API |
292 |
|
========================================= |
293 |
|
https://openjdk.java.net/jeps/373 |
294 |
|
|
295 |
|
Replace the underlying implementations of the |
296 |
|
`java.net.DatagramSocket` and `java.net.MulticastSocket` APIs with |
297 |
|
simpler and more modern implementations that are easy to maintain and |
298 |
|
debug. The new implementations will be easy to adapt to work with |
299 |
|
virtual threads, currently being explored in Project Loom |
300 |
|
(https://openjdk.java.net/projects/loom). This is a follow-on to JEP |
301 |
|
353 (see above), which already reimplemented the legacy Socket API. |
302 |
|
|
303 |
|
Vector API |
304 |
|
========== |
305 |
|
https://openjdk.java.net/jeps/338 |
306 |
|
https://openjdk.java.net/jeps/414 |
307 |
|
|
308 |
|
Provide an initial iteration of an incubator module, |
309 |
|
`jdk.incubator.vector`, to express vector computations that reliably |
310 |
|
compile at runtime to optimal vector hardware instructions on |
311 |
|
supported CPU architectures and thus achieve superior performance to |
312 |
|
equivalent scalar computations. |
313 |
|
|
314 |
|
This is an incubation feature (https://openjdk.java.net/jeps/11) |
315 |
|
introduced in OpenJDK 16. |
316 |
|
|
317 |
|
Unix-Domain Socket Channels |
318 |
=========================== |
=========================== |
319 |
|
https://openjdk.java.net/jeps/380 |
320 |
|
|
321 |
security-libs/java.security: |
Add Unix-domain (`AF_UNIX`) socket support to the socket channel and |
322 |
|
server-socket channel APIs in the `java.nio.channels` package. Extend |
323 |
|
the inherited channel mechanism to support Unix-domain socket channels |
324 |
|
and server socket channels. |
325 |
|
|
326 |
|
Foreign Linker API (Incubator) |
327 |
|
============================== |
328 |
|
https://openjdk.java.net/jeps/389 |
329 |
|
|
330 |
|
Introduce an API that offers statically-typed, pure-Java access to |
331 |
|
native code. This API, together with the Foreign-Memory API (see |
332 |
|
above), will considerably simplify the otherwise error-prone process |
333 |
|
of binding to a native library. |
334 |
|
|
335 |
|
This was an incubation feature (https://openjdk.java.net/jeps/11) |
336 |
|
introduced in OpenJDK 16, now superseded by the Foreign Function & |
337 |
|
Memory API in OpenJDK 17 (see below). |
338 |
|
|
339 |
|
Strongly Encapsulate JDK Internals by Default |
340 |
|
============================================= |
341 |
|
https://openjdk.java.net/jeps/396 |
342 |
|
https://openjdk.java.net/jeps/403 |
343 |
|
|
344 |
|
Strongly encapsulate all internal elements of the JDK by default, |
345 |
|
except for critical internal APIs such as `sun.misc.Unsafe`. It will |
346 |
|
no longer be possible to relax the strong encapsulation of internal |
347 |
|
elements via a single command-line option, as was possible in OpenJDK |
348 |
|
9 through 16. |
349 |
|
|
350 |
|
Enhanced Pseudo-Random Number Generators |
351 |
|
======================================== |
352 |
|
https://openjdk.java.net/jeps/356 |
353 |
|
|
354 |
|
Provide new interface types and implementations for pseudo-random |
355 |
|
number generators (PRNGs), including jumpable PRNGs and an additional |
356 |
|
class of splittable PRNG algorithms (LXM). |
357 |
|
|
358 |
|
Foreign Function & Memory API |
359 |
|
============================= |
360 |
|
https://openjdk.java.net/jeps/412 |
361 |
|
|
362 |
|
Introduce an API by which Java programs can interoperate with code and |
363 |
|
data outside of the Java runtime. By efficiently invoking foreign |
364 |
|
functions (i.e., code outside the JVM), and by safely accessing |
365 |
|
foreign memory (i.e., memory not managed by the JVM), the API enables |
366 |
|
Java programs to call native libraries and process native data without |
367 |
|
the brittleness and danger of JNI. |
368 |
|
|
369 |
|
This API is an incubation feature (https://openjdk.java.net/jeps/11) |
370 |
|
introduced in OpenJDK 17, and is an evolution of the Foreign Memory |
371 |
|
Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK |
372 |
|
16) (see above). |
373 |
|
|
374 |
|
Context-Specific Deserialization Filters |
375 |
|
======================================== |
376 |
|
https://openjdk.java.net/jeps/415 |
377 |
|
|
378 |
|
Allow applications to configure context-specific and |
379 |
|
dynamically-selected deserialization filters via a JVM-wide filter |
380 |
|
factory that is invoked to select a filter for each individual |
381 |
|
deserialization operation. |
382 |
|
|
383 |
|
Tools |
384 |
|
===== |
385 |
|
|
386 |
|
Packaging Tool |
387 |
|
============== |
388 |
|
https://openjdk.java.net/jeps/343 |
389 |
|
https://openjdk.java.net/jeps/392 |
390 |
|
|
391 |
|
Provide the `jpackage` tool, for packaging self-contained Java |
392 |
|
applications. |
393 |
|
|
394 |
|
JVM Features |
395 |
|
============ |
396 |
|
|
397 |
|
Shenandoah: A Low-Pause-Time Garbage Collector |
398 |
|
============================================== |
399 |
|
https://openjdk.java.net/jeps/189 |
400 |
|
https://openjdk.java.net/jeps/379 |
401 |
|
|
402 |
|
Add a new garbage collection (GC) algorithm named Shenandoah which |
403 |
|
reduces GC pause times by doing evacuation work concurrently with the |
404 |
|
running Java threads. Pause times with Shenandoah are independent of |
405 |
|
heap size, meaning you will have the same consistent pause times |
406 |
|
whether your heap is 200 MB or 200 GB. |
407 |
|
|
408 |
|
Shenandoah has been provided in Red Hat builds of OpenJDK 8 since |
409 |
|
8u131 in April 2017 and in all 11u builds. |
410 |
|
|
411 |
|
Upstream, it was introduced in OpenJDK 12 as an experimental feature |
412 |
|
and became a production feature in OpenJDK 15. It was backported to |
413 |
|
OpenJDK 11 with the 11.0.9 release in October 2020. |
414 |
|
|
415 |
|
Abortable Mixed Collections for G1 |
416 |
|
================================== |
417 |
|
https://openjdk.java.net/jeps/344 |
418 |
|
|
419 |
|
Make G1 mixed collections abortable if they might exceed the pause |
420 |
|
target. |
421 |
|
|
422 |
|
Promptly Return Unused Committed Memory from G1 |
423 |
|
=============================================== |
424 |
|
https://openjdk.java.net/jeps/346 |
425 |
|
|
426 |
|
Enhance the G1 garbage collector to automatically return Java heap |
427 |
|
memory to the operating system when idle. |
428 |
|
|
429 |
|
Dynamic CDS Archives |
430 |
|
==================== |
431 |
|
https://openjdk.java.net/jeps/310 |
432 |
|
https://openjdk.java.net/jeps/350 |
433 |
|
|
434 |
|
Extend application class-data sharing to allow the dynamic archiving |
435 |
|
of classes at the end of Java application execution. The archived |
436 |
|
classes will include all loaded application classes and library |
437 |
|
classes that are not present in the default, base-layer CDS archive. |
438 |
|
|
439 |
|
ZGC: Uncommit Unused Memory (Experimental) |
440 |
|
========================================== |
441 |
|
https://openjdk.java.net/jeps/351 |
442 |
|
|
443 |
|
Enhance ZGC to return unused heap memory to the operating system. |
444 |
|
|
445 |
|
NUMA-Aware Memory Allocation for G1 |
446 |
|
=================================== |
447 |
|
https://openjdk.java.net/jeps/345 |
448 |
|
|
449 |
|
Improve G1 performance on large machines by implementing NUMA-aware |
450 |
|
memory allocation. |
451 |
|
|
452 |
JDK-8250756: Added Entrust Root Certification Authority - G4 certificate |
ZGC on macOS (Experimental) |
453 |
======================================================================== |
=========================== |
454 |
The Entrust root certificate has been added to the cacerts truststore: |
https://openjdk.java.net/jeps/364 |
455 |
|
|
456 |
Alias Name: entrustrootcag4 |
Port the ZGC garbage collector to macOS. |
|
Distinguished Name: CN=Entrust Root Certification Authority - G4, OU="(c) 2015 Entrust, Inc. - for authorized use only", OU=See www.entrust.net/legal-terms, O="Entrust, Inc.", C=US |
|
457 |
|
|
458 |
JDK-8250860: Added 3 SSL Corporation Root CA Certificates |
ZGC on Windows (Experimental) |
459 |
========================================================= |
============================= |
460 |
The following root certificates have been added to the cacerts truststore for the SSL Corporation: |
https://openjdk.java.net/jeps/365 |
461 |
|
|
462 |
|
Port the ZGC garbage collector to Windows. |
463 |
|
|
464 |
|
ZGC: A Scalable Low-Latency Garbage Collector (Production) |
465 |
|
========================================================== |
466 |
|
https://openjdk.java.net/jeps/377 |
467 |
|
|
468 |
|
Change the Z Garbage Collector from an experimental feature into a |
469 |
|
product feature. |
470 |
|
|
471 |
Alias Name: sslrootrsaca |
ZGC: Concurrent Thread-Stack Processing |
472 |
Distinguished Name: CN=SSL.com Root Certification Authority RSA, O=SSL Corporation, L=Houston, ST=Texas, C=US |
======================================= |
473 |
|
https://openjdk.java.net/jeps/376 |
474 |
|
|
475 |
|
Move ZGC thread-stack processing from safepoints to a concurrent |
476 |
|
phase. |
477 |
|
|
478 |
|
Elastic Metaspace |
479 |
|
================= |
480 |
|
https://openjdk.java.net/jeps/387 |
481 |
|
|
482 |
|
Return unused HotSpot class-metadata (i.e., metaspace) memory to the |
483 |
|
operating system more promptly, reduce metaspace footprint, and |
484 |
|
simplify the metaspace code in order to reduce maintenance costs. |
485 |
|
|
486 |
|
Ports |
487 |
|
===== |
488 |
|
|
489 |
|
Alpine Linux Port |
490 |
|
================= |
491 |
|
https://openjdk.java.net/jeps/386 |
492 |
|
|
493 |
|
Port the JDK to Alpine Linux, and to other Linux distributions that |
494 |
|
use musl as their primary C library, on both the x64 and AArch64 |
495 |
|
architectures, |
496 |
|
|
497 |
|
Windows/AArch64 Port |
498 |
|
==================== |
499 |
|
https://openjdk.java.net/jeps/388 |
500 |
|
|
501 |
|
Port the JDK to Windows/AArch64. |
502 |
|
|
503 |
|
New macOS Rendering Pipeline |
504 |
|
============================ |
505 |
|
https://openjdk.java.net/jeps/382 |
506 |
|
|
507 |
|
Implement a Java 2D internal rendering pipeline for macOS using the |
508 |
|
Apple Metal API as alternative to the existing pipeline, which uses |
509 |
|
the deprecated Apple OpenGL API. |
510 |
|
|
511 |
|
macOS/AArch64 Port |
512 |
|
================== |
513 |
|
https://openjdk.java.net/jeps/391 |
514 |
|
|
515 |
|
Port the JDK to macOS/AArch64. |
516 |
|
|
517 |
|
DEPRECATIONS |
518 |
|
============ |
519 |
|
|
520 |
|
Deprecate the ParallelScavenge + SerialOld GC Combination |
521 |
|
========================================================= |
522 |
|
https://openjdk.java.net/jeps/366 |
523 |
|
|
524 |
Alias Name: sslrootevrsaca |
Deprecate the combination of the Parallel Scavenge and Serial Old |
525 |
Distinguished Name: CN=SSL.com EV Root Certification Authority RSA R2, O=SSL Corporation, L=Houston, ST=Texas, C=US |
garbage collection algorithms. |
526 |
|
|
527 |
Alias Name: sslrooteccca |
Deprecate and Disable Biased Locking |
528 |
Distinguished Name: CN=SSL.com Root Certification Authority ECC, O=SSL Corporation, L=Houston, ST=Texas, C=US |
==================================== |
529 |
|
https://openjdk.java.net/jeps/374 |
530 |
|
|
531 |
|
Disable biased locking by default, and deprecate all related |
532 |
|
command-line options. |
533 |
|
|
534 |
|
Warnings for Value-Based Classes |
535 |
|
================================ |
536 |
|
https://openjdk.java.net/jeps/390 |
537 |
|
|
538 |
|
Designate the primitive wrapper classes as value-based and deprecate |
539 |
|
their constructors for removal, prompting new deprecation |
540 |
|
warnings. Provide warnings about improper attempts to synchronize on |
541 |
|
instances of any value-based classes in the Java Platform. |
542 |
|
|
543 |
|
Deprecate the Applet API for Removal |
544 |
|
==================================== |
545 |
|
https://openjdk.java.net/jeps/398 |
546 |
|
|
547 |
|
Deprecate the Applet API for removal. It is essentially irrelevant |
548 |
|
since all web-browser vendors have either removed support for Java |
549 |
|
browser plug-ins or announced plans to do so. |
550 |
|
|
551 |
|
Deprecate the Security Manager for Removal |
552 |
|
========================================== |
553 |
|
https://openjdk.java.net/jeps/411 |
554 |
|
|
555 |
|
Deprecate the Security Manager for removal in a future release. The |
556 |
|
Security Manager dates from Java 1.0. It has not been the primary |
557 |
|
means of securing client-side Java code for many years, and it has |
558 |
|
rarely been used to secure server-side code. To move Java forward, we |
559 |
|
intend to deprecate the Security Manager for removal in concert with |
560 |
|
the legacy Applet API (see above). . |
561 |
|
|
562 |
|
REMOVALS |
563 |
|
======== |
564 |
|
|
565 |
|
Remove the Concurrent Mark Sweep (CMS) Garbage Collector |
566 |
|
======================================================== |
567 |
|
https://openjdk.java.net/jeps/363 |
568 |
|
|
569 |
|
Remove the Concurrent Mark Sweep (CMS) garbage collector. |
570 |
|
|
571 |
|
Remove the Pack200 Tools and API |
572 |
|
================================ |
573 |
|
https://openjdk.java.net/jeps/336 |
574 |
|
https://openjdk.java.net/jeps/367 |
575 |
|
|
576 |
|
Remove the `pack200` and `unpack200` tools, and the `Pack200` API in |
577 |
|
the `java.util.jar` package. These tools and API were deprecated for |
578 |
|
removal in OpenJDK 11 with the express intent to remove them in a |
579 |
|
future release. |
580 |
|
|
581 |
|
Remove the Nashorn JavaScript Engine |
582 |
|
==================================== |
583 |
|
https://openjdk.java.net/jeps/372 |
584 |
|
|
585 |
|
Remove the Nashorn JavaScript script engine and APIs, and the `jjs` |
586 |
|
tool. The engine, the APIs, and the tool were deprecated for removal |
587 |
|
in OpenJDK 11 with the express intent to remove them in a future |
588 |
|
release. |
589 |
|
|
590 |
|
Remove the Solaris and SPARC Ports |
591 |
|
================================== |
592 |
|
https://openjdk.java.net/jeps/362 |
593 |
|
https://openjdk.java.net/jeps/381 |
594 |
|
|
595 |
|
Remove the source code and build support for the Solaris/SPARC, |
596 |
|
Solaris/x64, and Linux/SPARC ports. These ports were deprecated for |
597 |
|
removal in OpenJDK 14 (JEP 362) and removed in OpenJDK 15 (JEP 381). |
598 |
|
|
599 |
|
Remove RMI Activation |
600 |
|
===================== |
601 |
|
https://openjdk.java.net/jeps/385 |
602 |
|
https://openjdk.java.net/jeps/407 |
603 |
|
https://docs.oracle.com/en/java/javase/14/docs/specs/rmi/activation.html |
604 |
|
|
605 |
|
Remove the Remote Method Invocation (RMI) Activation mechanism, while |
606 |
|
preserving the rest of RMI. RMI Activation is an obsolete part of RMI |
607 |
|
that has been optional since OpenJDK 8 and was deprecated in OpenJDK |
608 |
|
15. |
609 |
|
|
610 |
|
Remove the Experimental AOT and JIT Compiler |
611 |
|
============================================ |
612 |
|
https://openjdk.java.net/jeps/410 |
613 |
|
|
614 |
|
Remove the experimental Java-based ahead-of-time (AOT) and |
615 |
|
just-in-time (JIT) compiler. This compiler has seen little use since |
616 |
|
its introduction and the effort required to maintain it is |
617 |
|
significant. Retain the experimental Java-level JVM compiler |
618 |
|
interface (JVMCI) so that developers can continue to use |
619 |
|
externally-built versions of the compiler for JIT compilation. |