Blame SOURCES/NEWS

dee830
Key:
dee830
dee830
JDK-X  - https://bugs.openjdk.java.net/browse/JDK-X
dee830
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
dee830
dee830
New in release OpenJDK 17.0.2 (2022-01-18):
dee830
===========================================
dee830
Live versions of these release notes can be found at:
dee830
  * https://bitly.com/openjdk1702
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-17.0.2.txt
dee830
dee830
* Security fixes
dee830
  - JDK-8251329: (zipfs) Files.walkFileTree walks infinitely if zip has dir named "." inside
dee830
  - JDK-8264934, CVE-2022-21248: Enhance cross VM serialization
dee830
  - JDK-8268488: More valuable DerValues
dee830
  - JDK-8268494: Better inlining of inlined interfaces
dee830
  - JDK-8268512: More content for ContentInfo
dee830
  - JDK-8268813, CVE-2022-21283: Better String matching
dee830
  - JDK-8269151: Better construction of EncryptedPrivateKeyInfo
dee830
  - JDK-8269944: Better HTTP transport redux
dee830
  - JDK-8270386, CVE-2022-21291: Better verification of scan methods
dee830
  - JDK-8270392, CVE-2022-21293: Improve String constructions
dee830
  - JDK-8270416, CVE-2022-21294: Enhance construction of Identity maps
dee830
  - JDK-8270492, CVE-2022-21282: Better resolution of URIs
dee830
  - JDK-8270498, CVE-2022-21296: Improve SAX Parser configuration management
dee830
  - JDK-8270646, CVE-2022-21299: Improved scanning of XML entities
dee830
  - JDK-8270952, CVE-2022-21277: Improve TIFF file handling
dee830
  - JDK-8271962: Better TrueType font loading
dee830
  - JDK-8271968: Better canonical naming
dee830
  - JDK-8271987: Manifest improved manifest entries
dee830
  - JDK-8272014, CVE-2022-21305: Better array indexing
dee830
  - JDK-8272026, CVE-2022-21340: Verify Jar Verification
dee830
  - JDK-8272236, CVE-2022-21341: Improve serial forms for transport
dee830
  - JDK-8272272: Enhance jcmd communication
dee830
  - JDK-8272462: Enhance image handling
dee830
  - JDK-8273290: Enhance sound handling
dee830
  - JDK-8273756, CVE-2022-21360: Enhance BMP image support
dee830
  - JDK-8273838, CVE-2022-21365: Enhanced BMP processing
dee830
  - JDK-8274096, CVE-2022-21366: Improve decoding of image files
dee830
* Other changes
dee830
  - JDK-4819544: SwingSet2 JTable Demo throws NullPointerException
dee830
  - JDK-8137101: [TEST_BUG] javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java failure due to timing
dee830
  - JDK-8140241: (fc) Data transfer from FileChannel to itself causes hang in case of overlap
dee830
  - JDK-8174819: java/nio/file/WatchService/LotsOfEvents.java fails intermittently
dee830
  - JDK-8190753: (zipfs): Accessing a large entry (> 2^31 bytes) leads to a negative initial size for ByteArrayOutputStream
dee830
  - JDK-8214761: Bug in parallel Kahan summation implementation
dee830
  - JDK-8223923: C2: Missing interference with mismatched unsafe accesses
dee830
  - JDK-8233020: (fs) UnixFileSystemProvider should use StaticProperty.userDir().
dee830
  - JDK-8238649: Call new Win32 API SetThreadDescription in os::set_native_thread_name
dee830
  - JDK-8244675: assert(IncrementalInline || (_late_inlines.length() == 0 && !has_mh_late_inlines()))
dee830
  - JDK-8261236: C2: ClhsdbJstackXcompStress test fails when StressGCM is enabled
dee830
  - JDK-8261579: AArch64: Support for weaker memory ordering in Atomic
dee830
  - JDK-8262031: Create implementation for NSAccessibilityNavigableStaticText protocol
dee830
  - JDK-8262095: NPE in Flow$FlowAnalyzer.visitApply: Cannot invoke getThrownTypes because tree.meth.type is null
dee830
  - JDK-8263059: security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java fails due to revoked cert
dee830
  - JDK-8263364: sun/net/www/http/KeepAliveStream/KeepAliveStreamCloseWithWrongContentLength.java wedged in getInputStream
dee830
  - JDK-8263375: Support stack watermarks in Zero VM
dee830
  - JDK-8263773: Reenable German localization for builds at Oracle
dee830
  - JDK-8264286: Create implementation for NSAccessibilityColumn protocol peer
dee830
  - JDK-8264287: Create implementation for NSAccessibilityComboBox protocol peer
dee830
  - JDK-8264291: Create implementation for NSAccessibilityCell protocol peer
dee830
  - JDK-8264292: Create implementation for NSAccessibilityList protocol peer
dee830
  - JDK-8264293: Create implementation for NSAccessibilityMenu protocol peer
dee830
  - JDK-8264294: Create implementation for NSAccessibilityMenuBar protocol peer
dee830
  - JDK-8264295: Create implementation for NSAccessibilityMenuItem protocol peer
dee830
  - JDK-8264296: Create implementation for NSAccessibilityPopUpButton protocol peer
dee830
  - JDK-8264297: Create implementation for NSAccessibilityProgressIndicator protocol peer
dee830
  - JDK-8264298: Create implementation for NSAccessibilityRow protocol peer
dee830
  - JDK-8264303: Create implementation for NSAccessibilityTabGroup protocol peer
dee830
  - JDK-8266239: Some duplicated javac command-line options have repeated effect
dee830
  - JDK-8266510: Nimbus JTree default tree cell renderer does not use selected text color
dee830
  - JDK-8266988: compiler/jvmci/compilerToVM/IsMatureTest.java fails with Unexpected isMature state for multiple times invoked method: expected false to equal true
dee830
  - JDK-8267256: Extend minimal retry for loopback connections on Windows to PlainSocketImpl
dee830
  - JDK-8267385: Create NSAccessibilityElement implementation for JavaComponentAccessibility
dee830
  - JDK-8267387: Create implementation for NSAccessibilityOutline protocol
dee830
  - JDK-8267388: Create implementation for NSAccessibilityTable protocol
dee830
  - JDK-8268284: javax/swing/JComponent/7154030/bug7154030.java fails with "Exception: Failed to hide opaque button"
dee830
  - JDK-8268294: Reusing HttpClient in a WebSocket.Listener hangs.
dee830
  - JDK-8268361: Fix the infinite loop in next_line
dee830
  - JDK-8268457: XML Transformer outputs Unicode supplementary character incorrectly to HTML
dee830
  - JDK-8268464: Remove dependancy of TestHttpsServer, HttpTransaction, HttpCallback from open/test/jdk/sun/net/www/protocol/https/ tests
dee830
  - JDK-8268626: Remove native pre-jdk9 support for jtreg  failure handler
dee830
  - JDK-8268860: Windows-Aarch64 build is failing in GitHub actions
dee830
  - JDK-8268882: C2: assert(n->outcnt() != 0 || C->top() == n || n->is_Proj()) failed: No dead instructions after post-alloc
dee830
  - JDK-8268885: duplicate checkcast when destination type is not first type of intersection type
dee830
  - JDK-8268893: jcmd to trim the glibc heap
dee830
  - JDK-8268894: forged ASTs can provoke an AIOOBE at com.sun.tools.javac.jvm.ClassWriter::writePosition
dee830
  - JDK-8268927: Windows: link error: unresolved external symbol "int __cdecl convert_to_unicode(char const *,wchar_t * *)"
dee830
  - JDK-8269031: linux x86_64 check for binutils 2.25 or higher after 8265783
dee830
  - JDK-8269113: Javac throws when compiling switch (null)
dee830
  - JDK-8269216: Useless initialization in com/sun/crypto/provider/PBES2Parameters.java
dee830
  - JDK-8269269: [macos11] SystemIconTest fails with ClassCastException
dee830
  - JDK-8269280: (bf) Replace StringBuffer in *Buffer.toString()
dee830
  - JDK-8269481: SctpMultiChannel never releases own file descriptor
dee830
  - JDK-8269637: javax/swing/JFileChooser/FileSystemView/SystemIconTest.java fails on windows
dee830
  - JDK-8269656: The test test/langtools/tools/javac/versions/Versions.java has duplicate test cycles
dee830
  - JDK-8269687: pauth_aarch64.hpp include name is incorrect
dee830
  - JDK-8269850: Most JDK releases report macOS version 12 as 10.16 instead of 12.0
dee830
  - JDK-8269924: Shenandoah: Introduce weak/strong marking asserts
dee830
  - JDK-8269951: [macos] Focus not painted in JButton when  setBorderPainted(false) is invoked
dee830
  - JDK-8270110: Shenandoah: Add test for JDK-8269661
dee830
  - JDK-8270116: Expand ButtonGroupLayoutTraversalTest.java to run in all LaFs, including Aqua on macOS
dee830
  - JDK-8270171: Shenandoah: Cleanup TestStringDedup and TestStringDedupStress tests
dee830
  - JDK-8270290: NTLM authentication fails if HEAD request is used
dee830
  - JDK-8270317: Large Allocation in CipherSuite
dee830
  - JDK-8270320: JDK-8270110 committed invalid copyright headers
dee830
  - JDK-8270517: Add Zero support for LoongArch
dee830
  - JDK-8270533: AArch64: size_fits_all_mem_uses should return false if its output is a CAS
dee830
  - JDK-8270886: Crash in PhaseIdealLoop::verify_strip_mined_scheduling
dee830
  - JDK-8270893: IndexOutOfBoundsException while reading large TIFF file
dee830
  - JDK-8270901: Typo PHASE_CPP in CompilerPhaseType
dee830
  - JDK-8270946: X509CertImpl.getFingerprint should not return the empty String
dee830
  - JDK-8271071: accessibility of a table on macOS lacks cell navigation
dee830
  - JDK-8271121: ZGC: stack overflow (segv) when -Xlog:gc+start=debug
dee830
  - JDK-8271142: package help is not displayed for missing X11/extensions/Xrandr.h
dee830
  - JDK-8271170: Add unit test for what jpackage app launcher puts in the environment
dee830
  - JDK-8271215: Fix data races in G1PeriodicGCTask
dee830
  - JDK-8271254: javac generates unreachable code when using empty semicolon statement
dee830
  - JDK-8271287: jdk/jshell/CommandCompletionTest.java fails with "lists don't have the same size expected"
dee830
  - JDK-8271308: (fc) FileChannel.transferTo() transfers no more than Integer.MAX_VALUE bytes in one call
dee830
  - JDK-8271315: Redo: Nimbus JTree renderer properties persist across L&F changes
dee830
  - JDK-8271323: [TESTBUG] serviceability/sa/ClhsdbCDSCore.java fails with -XX:TieredStopAtLevel=1
dee830
  - JDK-8271340: Crash PhaseIdealLoop::clone_outer_loop
dee830
  - JDK-8271341: Opcode() != Op_If && Opcode() != Op_RangeCheck) || outcnt() == 2 assert failure with Test7179138_1.java
dee830
  - JDK-8271459: C2: Missing NegativeArraySizeException when creating StringBuilder with negative capacity
dee830
  - JDK-8271463: Updating RE Configs for Upcoming CPU Release 17.0.2 on master branch for jdk17u-cpu and jdk17u-cpu-open repos.
dee830
  - JDK-8271490: [ppc] [s390]: Crash in JavaThread::pd_get_top_frame_for_profiling
dee830
  - JDK-8271560: sun/security/ssl/DHKeyExchange/LegacyDHEKeyExchange.java still fails due to "An established connection was aborted by the software in your host machine"
dee830
  - JDK-8271567: AArch64: AES Galois CounterMode (GCM) interleaved implementation using vector instructions
dee830
  - JDK-8271600: C2: CheckCastPP which should closely follow Allocate is sunk of a loop
dee830
  - JDK-8271605: Update JMH devkit to 1.32
dee830
  - JDK-8271718: Crash when during color transformation the color profile is replaced
dee830
  - JDK-8271722: [TESTBUG] gc/g1/TestMixedGCLiveThreshold.java can fail if G1 Full GC uses >1 workers
dee830
  - JDK-8271855: [TESTBUG] Wrong weakCompareAndSet assumption in UnsafeIntrinsicsTest
dee830
  - JDK-8271862: C2 intrinsic for Reference.refersTo() is often not used
dee830
  - JDK-8271868: Warn user when using mac-sign option with unsigned app-image.
dee830
  - JDK-8271895: UnProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK18
dee830
  - JDK-8271954: C2: assert(false) failed: Bad graph detected in build_loop_late
dee830
  - JDK-8272047: java/nio/channels/FileChannel/Transfer2GPlus.java failed with Unexpected transfer size: 2147418112
dee830
  - JDK-8272095: ProblemList java/nio/channels/FileChannel/Transfer2GPlus.java on linux-aarch64
dee830
  - JDK-8272114: Unused _last_state in osThread_windows
dee830
  - JDK-8272170: Missing memory barrier when checking active state for regions
dee830
  - JDK-8272305: several hotspot runtime/modules don't check exit codes
dee830
  - JDK-8272318: Improve performance of HeapDumpAllTest
dee830
  - JDK-8272328: java.library.path is not set properly by Windows jpackage app launcher
dee830
  - JDK-8272335: runtime/cds/appcds/MoveJDKTest.java doesn't check exit codes
dee830
  - JDK-8272342: [TEST_BUG] java/awt/print/PrinterJob/PageDialogMarginTest.java catches all exceptions
dee830
  - JDK-8272345: macos doesn't check `os::set_boot_path()` result
dee830
  - JDK-8272369: java/io/File/GetXSpace.java failed with "RuntimeException: java.nio.file.NoSuchFileException: /run/user/0"
dee830
  - JDK-8272391: Undeleted debug information
dee830
  - JDK-8272413: Incorrect num of element count calculation for vector cast
dee830
  - JDK-8272473: Parsing epoch seconds at a DST transition with a non-UTC parser is wrong
dee830
  - JDK-8272562: C2: assert(false) failed: Bad graph detected in build_loop_late
dee830
  - JDK-8272570: C2: crash in PhaseCFG::global_code_motion
dee830
  - JDK-8272574: C2: assert(false) failed: Bad graph detected in build_loop_late
dee830
  - JDK-8272639: jpackaged applications using microphone on mac
dee830
  - JDK-8272703: StressSeed should be set via FLAG_SET_ERGO
dee830
  - JDK-8272720: Fix the implementation of loop unrolling heuristic with LoopPercentProfileLimit
dee830
  - JDK-8272783: Epsilon: Refactor tests to improve performance
dee830
  - JDK-8272836: Limit run time for java/lang/invoke/LFCaching tests
dee830
  - JDK-8272838: Move CriticalJNI tests out of tier1
dee830
  - JDK-8272846: Move some runtime/Metaspace/elastic/ tests out of tier1
dee830
  - JDK-8272850: Drop zapping values in the Zap* option descriptions
dee830
  - JDK-8272854: split runtime/CommandLine/PrintTouchedMethods.java test
dee830
  - JDK-8272856: DoubleFlagWithIntegerValue uses G1GC-only flag
dee830
  - JDK-8272859: Javadoc external links should only have feature version number in URL
dee830
  - JDK-8272914: Create hotspot:tier2 and hotspot:tier3 test groups
dee830
  - JDK-8272970: Parallelize runtime/InvocationTests/
dee830
  - JDK-8272973: Incorrect compile command used by TestIllegalArrayCopyBeforeInfiniteLoop
dee830
  - JDK-8273021: C2: Improve Add and Xor ideal optimizations
dee830
  - JDK-8273026: Slow LoginContext.login() on multi threading application
dee830
  - JDK-8273135: java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java crashes in liblcms.dylib with NULLSeek+0x7
dee830
  - JDK-8273165: GraphKit::combine_exception_states fails with "matching stack sizes" assert
dee830
  - JDK-8273176: handle latest VS2019 in abstract_vm_version
dee830
  - JDK-8273229: Update OS detection code to recognize Windows Server 2022
dee830
  - JDK-8273234: extended 'for' with expression of type tvar causes the compiler to crash
dee830
  - JDK-8273235: tools/launcher/HelpFlagsTest.java Fails on Windows 32bit
dee830
  - JDK-8273278: Support XSLT on GraalVM Native Image--deterministic bytecode generation in XSLT
dee830
  - JDK-8273308: PatternMatchTest.java fails on CI
dee830
  - JDK-8273314: Add tier4 test groups
dee830
  - JDK-8273315: Parallelize and increase timeouts for java/foreign/TestMatrix.java test
dee830
  - JDK-8273318: Some containers/docker/TestJFREvents.java configs are running out of memory
dee830
  - JDK-8273333: Zero should warn about unimplemented -XX:+LogTouchedMethods
dee830
  - JDK-8273335: compiler/blackhole tests should not run with interpreter-only VMs
dee830
  - JDK-8273342: Null pointer dereference in classFileParser.cpp:2817
dee830
  - JDK-8273359: CI: ciInstanceKlass::get_canonical_holder() doesn't respect instance size
dee830
  - JDK-8273361: InfoOptsTest is failing in tier1
dee830
  - JDK-8273373: Zero: Cannot invoke JVM in primordial threads on Zero
dee830
  - JDK-8273375: Remove redundant 'new String' calls after concatenation in java.desktop
dee830
  - JDK-8273376: Zero: Disable vtable/itableStub gtests
dee830
  - JDK-8273378: Shenandoah: Remove the remaining uses of os::is_MP
dee830
  - JDK-8273408: java.lang.AssertionError: typeSig ERROR on generated class property of record
dee830
  - JDK-8273416: C2: assert(false) failed: bad AD file after JDK-8252372 with UseSSE={0,1}
dee830
  - JDK-8273440: Zero: Disable runtime/Unsafe/InternalErrorTest.java
dee830
  - JDK-8273450: Fix the copyright header of SVML files
dee830
  - JDK-8273451: Remove unreachable return in  mutexLocker::wait
dee830
  - JDK-8273483: Zero: Clear pending JNI exception check in native method handler
dee830
  - JDK-8273486: Zero: Handle DiagnoseSyncOnValueBasedClasses VM option
dee830
  - JDK-8273487: Zero: Handle "zero" variant in runtime tests
dee830
  - JDK-8273489: Zero: Handle UseHeavyMonitors on all monitorenter paths
dee830
  - JDK-8273498: compiler/c2/Test7179138_1.java timed out
dee830
  - JDK-8273505: runtime/cds/appcds/loaderConstraints/DynamicLoaderConstraintsTest.java#default-cl crashed with SIGSEGV in MetaspaceShared::link_shared_classes
dee830
  - JDK-8273514: java/util/DoubleStreamSums/CompensatedSums.java failure
dee830
  - JDK-8273575: memory leak in appendBootClassPath(), paths must be deallocated
dee830
  - JDK-8273592: Backout JDK-8271868
dee830
  - JDK-8273593: [REDO] Warn user when using mac-sign option with unsigned app-image.
dee830
  - JDK-8273595: tools/jpackage tests do not work on apt-based Linux distros like Debian
dee830
  - JDK-8273606: Zero: SPARC64 build fails with si_band type mismatch
dee830
  - JDK-8273614: Shenandoah: intermittent  timeout with ConcurrentGCBreakpoint tests
dee830
  - JDK-8273638: javax/swing/JTable/4235420/bug4235420.java fails in GTK L&F
dee830
  - JDK-8273646: Add openssl from path variable also in to Default System Openssl Path in OpensslArtifactFetcher
dee830
  - JDK-8273678: TableAccessibility and TableRowAccessibility miss autorelease
dee830
  - JDK-8273695: Safepoint deadlock on VMOperation_lock
dee830
  - JDK-8273790: Potential cyclic dependencies between Gregorian and CalendarSystem
dee830
  - JDK-8273806: compiler/cpuflags/TestSSE4Disabled.java should test for CPU feature explicitly
dee830
  - JDK-8273807: Zero: Drop incorrect test block from compiler/startup/NumCompilerThreadsCheck.java
dee830
  - JDK-8273808: Cleanup AddFontsToX11FontPath
dee830
  - JDK-8273826: Correct Manifest file name and NPE checks
dee830
  - JDK-8273887: [macos] java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java timed out
dee830
  - JDK-8273894: ConcurrentModificationException raised every time ReferralsCache drops referral
dee830
  - JDK-8273902: Memory leak in OopStorage due to bug in OopHandle::release()
dee830
  - JDK-8273924: ArrayIndexOutOfBoundsException thrown in java.util.JapaneseImperialCalendar.add()
dee830
  - JDK-8273935: (zipfs) Files.getFileAttributeView() throws UOE instead of returning null when view not supported
dee830
  - JDK-8273958: gtest/MetaspaceGtests executes unnecessary tests in debug builds
dee830
  - JDK-8273961: jdk/nio/zipfs/ZipFSTester.java fails if file path contains '+' character
dee830
  - JDK-8273965: some testlibrary_tests/ir_framework tests fail when c1 disabled
dee830
  - JDK-8273968: JCK javax_xml tests fail in CI
dee830
  - JDK-8274056: JavaAccessibilityUtilities leaks JNI objects
dee830
  - JDK-8274074: SIGFPE with C2 compiled code with -XX:+StressGCM
dee830
  - JDK-8274083: Update testing docs to mention tiered testing
dee830
  - JDK-8274087: Windows DLL path not set correctly.
dee830
  - JDK-8274145: C2: condition incorrectly made redundant with dominating main loop exit condition
dee830
  - JDK-8274205: Handle KDC_ERR_SVC_UNAVAILABLE error code from KDC
dee830
  - JDK-8274215: Remove globalsignr2ca root from 17.0.2
dee830
  - JDK-8274242: Implement fast-path for ASCII-compatible CharsetEncoders on x86
dee830
  - JDK-8274265: Suspicious string concatenation in logTestUtils.inline.hpp
dee830
  - JDK-8274293: Build failure on macOS with Xcode 13.0 as vfork is deprecated
dee830
  - JDK-8274325: C4819 warning at vm_version_x86.cpp on Windows after JDK-8234160
dee830
  - JDK-8274326: [macos] Ensure initialisation of sun/lwawt/macosx/CAccessibility in JavaComponentAccessibility.m
dee830
  - JDK-8274329: Fix non-portable HotSpot code in MethodMatcher::parse_method_pattern
dee830
  - JDK-8274338: com/sun/jdi/RedefineCrossEvent.java failed "assert(m != __null) failed: NULL mirror"
dee830
  - JDK-8274347: Passing a *nested* switch expression as a parameter causes an NPE during compile
dee830
  - JDK-8274349: ForkJoinPool.commonPool() does not work with 1 CPU
dee830
  - JDK-8274381: missing CAccessibility definitions in JNI code
dee830
  - JDK-8274383: JNI call of getAccessibleSelection on a wrong thread
dee830
  - JDK-8274401: C2: GraphKit::load_array_element bypasses Access API
dee830
  - JDK-8274406: RunThese30M.java failed "assert(!LCA_orig->dominates(pred_block) || early->dominates(pred_block)) failed: early is high enough"
dee830
  - JDK-8274407: (tz) Update Timezone Data to 2021c
dee830
  - JDK-8274435: EXCEPTION_ACCESS_VIOLATION in BFSClosure::closure_impl
dee830
  - JDK-8274467: TestZoneInfo310.java fails with tzdata2021b
dee830
  - JDK-8274468: TimeZoneTest.java fails with tzdata2021b
dee830
  - JDK-8274501: c2i entry barriers read int as long on AArch64
dee830
  - JDK-8274521: jdk/jfr/event/gc/detailed/TestGCLockerEvent.java fails when other GC is selected
dee830
  - JDK-8274522: java/lang/management/ManagementFactory/MXBeanException.java test fails with Shenandoah
dee830
  - JDK-8274523: java/lang/management/MemoryMXBean/MemoryTest.java test should handle Shenandoah
dee830
  - JDK-8274550: c2i entry barriers read int as long on PPC
dee830
  - JDK-8274560: JFR: Add test for OldObjectSample event when using Shenandoah
dee830
  - JDK-8274606: Fix jaxp/javax/xml/jaxp/unittest/transform/SurrogateTest.java test
dee830
  - JDK-8274642: jdk/jshell/CommandCompletionTest.java fails with NoSuchElementException after JDK-8271287
dee830
  - JDK-8274716: JDWP Spec: the description for the Dispose command confuses suspend with resume.
dee830
  - JDK-8274736: Concurrent read/close of SSLSockets causes SSLSessions to be invalidated unnecessarily
dee830
  - JDK-8274770: [PPC64] resolve_jobject needs a generic implementation to support load barriers
dee830
  - JDK-8274773: [TESTBUG] UnsafeIntrinsicsTest intermittently fails on weak memory model platform
dee830
  - JDK-8274779: HttpURLConnection: HttpClient and HttpsClient incorrectly check request method when set to POST
dee830
  - JDK-8274840: Update OS detection code to recognize Windows 11
dee830
  - JDK-8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior
dee830
  - JDK-8274851: [ppc64] Port zgc to linux on ppc64le
dee830
  - JDK-8274942: AssertionError at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
dee830
  - JDK-8275008: gtest build failure due to stringop-overflow warning with gcc11
dee830
  - JDK-8275049: [ZGC] missing null check in ZNMethod::log_register
dee830
  - JDK-8275051: Shenandoah: Correct ordering of requested gc cause and gc request flag
dee830
  - JDK-8275071: [macos] A11y cursor gets stuck when combobox is closed
dee830
  - JDK-8275104: IR framework does not handle client VM builds correctly
dee830
  - JDK-8275110: Correct RE Configs for CPU Release 17.0.2 on master branch for jdk17u-cpu and jdk17u-cpu-open repos.
dee830
  - JDK-8275131: Exceptions after a touchpad gesture on macOS
dee830
  - JDK-8275141: recover corrupted line endings for the version-numbers.conf
dee830
  - JDK-8275145: file.encoding system property has an incorrect value on Windows
dee830
  - JDK-8275226: Shenandoah: Relax memory constraint for worker claiming tasks/ranges
dee830
  - JDK-8275302: unexpected compiler error: cast, intersection types and sealed
dee830
  - JDK-8275426: PretouchTask num_chunks calculation can overflow
dee830
  - JDK-8275604: Zero: Reformat opclabels_data
dee830
  - JDK-8275666: serviceability/jvmti/GetObjectSizeClass.java shouldn't have vm.flagless
dee830
  - JDK-8275703: System.loadLibrary fails on Big Sur for libraries hidden from filesystem
dee830
  - JDK-8275720: CommonComponentAccessibility.createWithParent isWrapped causes mem leak
dee830
  - JDK-8275766: (tz) Update Timezone Data to 2021e
dee830
  - JDK-8275809: crash in [CommonComponentAccessibility getCAccessible:withEnv:]
dee830
  - JDK-8275811: Incorrect instance to dispose
dee830
  - JDK-8275819: [TableRowAccessibility accessibilityChildren] method is ineffective
dee830
  - JDK-8275849: TestZoneInfo310.java fails with tzdata2021e
dee830
  - JDK-8275863: Use encodeASCII for ASCII-compatible DoubleByte encodings
dee830
  - JDK-8275872: Sync J2DBench run and analyze Makefile targets with build.xml
dee830
  - JDK-8276025: Hotspot's libsvml.so may conflict with user dependency
dee830
  - JDK-8276066: Reset LoopPercentProfileLimit for x86 due to suboptimal performance
dee830
  - JDK-8276076: Updating RE Configs for BUILD REQUEST 17.0.2+3
dee830
  - JDK-8276105: C2: Conv(D|F)2(I|L)Nodes::Ideal should handle rounding correctly
dee830
  - JDK-8276112: Inconsistent scalar replacement debug info at safepoints
dee830
  - JDK-8276122: Change openjdk project in jcheck to jdk-updates
dee830
  - JDK-8276130: Fix Github Actions of JDK17u to account for update version scheme
dee830
  - JDK-8276139: TestJpsHostName.java not reliable, better to expand HostIdentifierCreate.java test
dee830
  - JDK-8276157: C2: Compiler stack overflow during escape analysis on Linux x86_32
dee830
  - JDK-8276201: Shenandoah: Race results degenerated GC to enter wrong entry point
dee830
  - JDK-8276205: Shenandoah: CodeCache_lock should always be held for initializing code cache iteration
dee830
  - JDK-8276306: jdk/jshell/CustomInputToolBuilder.java fails intermittently on storage acquisition
dee830
  - JDK-8276536: Update TimeZoneNames files to follow the changes made by JDK-8275766
dee830
  - JDK-8276550: Use SHA256 hash in build.tools.depend.Depend
dee830
  - JDK-8276572: Fake libsyslookup.so library causes tooling issues
dee830
  - JDK-8276774: Cookie stored in CookieHandler not sent if user headers contain cookie
dee830
  - JDK-8276801: gc/stress/CriticalNativeStress.java fails intermittently with Shenandoah
dee830
  - JDK-8276805: java/awt/print/PrinterJob/CheckPrivilege.java fails due to disabled SecurityManager
dee830
  - JDK-8276845: (fs) java/nio/file/spi/SetDefaultProvider.java fails on x86_32
dee830
  - JDK-8276846: JDK-8273416 is incomplete for UseSSE=1
dee830
  - JDK-8276854: Windows GHA builds fail due to broken Cygwin
dee830
  - JDK-8276864: Update boot JDKs to 17.0.1 in GHA
dee830
  - JDK-8276905: Use appropriate macosx_version_minimum value while compiling metal shaders
dee830
  - JDK-8276927: [ppc64] Port shenandoahgc to linux on ppc64le
dee830
  - JDK-8277029: JMM GetDiagnosticXXXInfo APIs should verify output array sizes
dee830
  - JDK-8277093: Vector should throw ClassNotFoundException for a missing class of an element
dee830
  - JDK-8277159: Fix java/nio/file/FileStore/Basic.java test by ignoring /run/user/* mount points
dee830
  - JDK-8277195: missing CAccessibility definition in [CommonComponentAccessibility accessibilityHitTest]
dee830
  - JDK-8277212: GC accidentally cleans valid megamorphic vtable inline caches
dee830
  - JDK-8277224: sun.security.pkcs.PKCS9Attributes.toString() throws NPE
dee830
  - JDK-8277529: SIGSEGV in C2 CompilerThread Node::rematerialize() compiling Packet::readUnsignedTrint
dee830
  - JDK-8277981: String Deduplication table is never cleaned up due to bad dead_factor_for_cleanup
dee830
dee830
Notes on individual issues:
dee830
===========================
dee830
dee830
core-libs/java.io:serialization:
dee830
dee830
JDK-8277157: Vector should throw ClassNotFoundException for a missing class of an element
dee830
=========================================================================================
dee830
`java.util.Vector` is updated to correctly report
dee830
`ClassNotFoundException that occurs during deserialization using
dee830
`java.io.ObjectInputStream.GetField.get(name, object)` when the class
dee830
of an element of the Vector is not found. Without this fix, a
dee830
`StreamCorruptedException` is thrown that does not provide information
dee830
about the missing class.
dee830
dee830
security-libs/java.security:
dee830
dee830
JDK-8272535: Removed Google's GlobalSign Root Certificate
dee830
=========================================================
dee830
The following root certificate from Google has been removed from the
dee830
`cacerts` keystore:
dee830
dee830
Alias Name: globalsignr2ca [jdk]
dee830
Distinguished Name: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2
dee830
dee830
core-libs/java.io:
dee830
dee830
JDK-8275343: file.encoding System Property Has an Incorrect Value on Windows
dee830
============================================================================
dee830
The initialization of the `file.encoding` system property on non macOS
dee830
platforms has been reverted to align with the behavior on or before
dee830
JDK 11.  This has been an issue especially on Windows where the system
dee830
and user's locales are not the same.
dee830
dee830
hotspot/gc:
dee830
dee830
JDK-8277533: ZGC: Fixed long Process Non-Strong References times
dee830
================================================================
dee830
A bug has been fixed that could cause long "Concurrent Process
dee830
Non-Strong References" times with ZGC. The bug blocked the GC from
dee830
making significant progress, and caused both latency and throughput
dee830
issues for the Java application.
dee830
dee830
The long times could be seen in the GC logs when running with `-Xlog:gc*` e.g.
dee830
dee830
[17606.140s][info][gc,phases ] GC(719) Concurrent Process Non-Strong References 25781.928ms
dee830
dee830
core-libs/java.time:
dee830
dee830
JDK-8274857:  Update Timezone Data to 2021c
dee830
===========================================
dee830
IANA Time Zone Database, on which JDK's Date/Time libraries are based,
dee830
has been updated to version 2021c
dee830
(https://mm.icann.org/pipermail/tz-announce/2021-October/000067.html). Note
dee830
that with this update, some of the time zone rules prior to the year
dee830
1970 have been modified according to the changes which were introduced
dee830
with 2021b. For more detail, refer to the announcement of 2021b
dee830
(https://mm.icann.org/pipermail/tz-announce/2021-September/000066.html)
dee830
dee830
New in release OpenJDK 17.0.1 (2021-10-19):
dee830
===========================================
dee830
Live versions of these release notes can be found at:
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-17.0.1.txt
dee830
dee830
* Security fixes
dee830
  - JDK-8263314: Enhance XML Dsig modes
dee830
  - JDK-8265167, CVE-2021-35556: Richer Text Editors
dee830
  - JDK-8265574: Improve handling of sheets
dee830
  - JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit
dee830
  - JDK-8265776: Improve Stream handling for SSL
dee830
  - JDK-8266097, CVE-2021-35561: Better hashing support
dee830
  - JDK-8266103: Better specified spec values
dee830
  - JDK-8266109: More Resilient Classloading
dee830
  - JDK-8266115: More Manifest Jar Loading
dee830
  - JDK-8266137, CVE-2021-35564: Improve Keystore integrity
dee830
  - JDK-8266689, CVE-2021-35567: More Constrained Delegation
dee830
  - JDK-8267086: ArrayIndexOutOfBoundsException in java.security.KeyFactory.generatePublic
dee830
  - JDK-8267712: Better LDAP reference processing
dee830
  - JDK-8267729, CVE-2021-35578: Improve TLS client handshaking
dee830
  - JDK-8267735, CVE-2021-35586: Better BMP support
dee830
  - JDK-8268193: Improve requests of certificates
dee830
  - JDK-8268199: Correct certificate requests
dee830
  - JDK-8268205: Enhance DTLS client handshake
dee830
  - JDK-8268500: Better specified ParameterSpecs
dee830
  - JDK-8268506: More Manifest Digests
dee830
  - JDK-8269618, CVE-2021-35603: Better session identification
dee830
  - JDK-8269624: Enhance method selection support
dee830
  - JDK-8270398: Enhance canonicalization
dee830
  - JDK-8270404: Better canonicalization
dee830
* Other changes
dee830
  - JDK-8225082: Remove IdenTrust certificate that is expiring in September 2021
dee830
  - JDK-8243543: jtreg test security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java fails
dee830
  - JDK-8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked
dee830
  - JDK-8261088: Repeatable annotations without @Target cannot have containers that target module declarations
dee830
  - JDK-8262731: [macOS] Exception from "Printable.print" is swallowed during "PrinterJob.print"
dee830
  - JDK-8263531: Remove unused buffer int
dee830
  - JDK-8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java
dee830
  - JDK-8267625: AARCH64: typo in LIR_Assembler::emit_profile_type
dee830
  - JDK-8267666: Add option to jcmd GC.heap_dump to use existing file
dee830
  - JDK-8268019: C2: assert(no_dead_loop) failed: dead loop detected
dee830
  - JDK-8268261: C2: assert(n != __null) failed: Bad immediate dominator info.
dee830
  - JDK-8268427: Improve AlgorithmConstraints:checkAlgorithm performance
dee830
  - JDK-8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms
dee830
  - JDK-8269297: Bump version numbers for JDK 17.0.1
dee830
  - JDK-8269478: Shenandoah: gc/shenandoah/mxbeans tests should be more resilient
dee830
  - JDK-8269574: C2: Avoid redundant uncommon traps in GraphKit::builtin_throw() for JVMTI exception events
dee830
  - JDK-8269763: The JEditorPane is blank after JDK-8265167
dee830
  - JDK-8269851: OperatingSystemMXBean getProcessCpuLoad reports incorrect process cpu usage in containers
dee830
  - JDK-8269882: stack-use-after-scope in NewObjectA
dee830
  - JDK-8269897: Shenandoah: Resolve UNKNOWN access strength, where possible
dee830
  - JDK-8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status
dee830
  - JDK-8269993: [Test]: java/net/httpclient/DigestEchoClientSSL.java contains redundant @run tags
dee830
  - JDK-8270094: Shenandoah: Provide human-readable labels for test configurations
dee830
  - JDK-8270096: Shenandoah: Optimize gc/shenandoah/TestRefprocSanity.java for interpreter mode
dee830
  - JDK-8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert
dee830
  - JDK-8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup
dee830
  - JDK-8270280: security/infra/java/security/cert/CertPathValidator/certification/LetsEncryptCA.java  OCSP response error
dee830
  - JDK-8270344: Session resumption errors
dee830
  - 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
dee830
  - JDK-8271276: C2: Wrong JVM state used for receiver null check
dee830
  - JDK-8271335: Updating RE Configs for BUILD REQUEST 17.0.1+4
dee830
  - JDK-8271589: fatal error with variable shift count integer rotate operation.
dee830
  - JDK-8271723: Unproblemlist runtime/InvocationTests/invokevirtualTests.java
dee830
  - JDK-8271730: Client authentication using RSASSA-PSS fails after correct certificate requests
dee830
  - JDK-8271925: ZGC: Arraycopy stub passes invalid oop to load barrier
dee830
  - JDK-8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon
dee830
  - JDK-8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj
dee830
  - JDK-8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails
dee830
  - JDK-8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790
dee830
  - JDK-8272472: StackGuardPages test doesn't build with glibc 2.34
dee830
  - JDK-8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182
dee830
  - JDK-8272602: [macos] not all KEY_PRESSED events sent when control modifier is used
dee830
  - JDK-8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848
dee830
  - JDK-8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled
dee830
  - JDK-8272806: [macOS] "Apple AWT Internal Exception" when input method is changed
dee830
  - JDK-8273358: macOS Monterey does not have the font Times needed by Serif
dee830
dee830
Notes on individual issues:
dee830
===========================
dee830
dee830
security-libs/java.security:
dee830
dee830
JDK-8271434: Removed IdenTrust Root Certificate
dee830
===============================================
dee830
The following root certificate from IdenTrust has been removed from
dee830
the `cacerts` keystore:
dee830
dee830
Alias Name: identrustdstx3 [jdk]
dee830
Distinguished Name: CN=DST Root CA X3, O=Digital Signature Trust Co.
dee830
dee830
New in release OpenJDK 17.0.0 (2021-09-14):
dee830
===========================================
dee830
The full list of changes in the interim releases from 11u to 17u can be found at:
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-12.txt
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-13.txt
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-14.txt
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-15.txt
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-16.txt
dee830
  * https://builds.shipilev.net/backports-monitor/release-notes-17.txt
dee830
dee830
Major changes are listed below.  Some changes may have been backported
dee830
to earlier releases following their first appearance in OpenJDK 12
dee830
through to 17.
dee830
dee830
NEW FEATURES
dee830
============
dee830
dee830
Language Features
dee830
=================
dee830
dee830
Switch Expressions
dee830
==================
dee830
https://openjdk.java.net/jeps/325
dee830
https://openjdk.java.net/jeps/354
dee830
https://openjdk.java.net/jeps/361
dee830
dee830
Extend the `switch` statement so that it can be used as either a
dee830
statement or an expression, and that both forms can use either a
dee830
"traditional" or "simplified" scoping and control flow behavior.  Both
dee830
forms can use either traditional `case ... :` labels (with fall
dee830
through) or new `case ... ->` labels (with no fall through), with a
dee830
further new statement for yielding a value from a `switch`
dee830
expression. These changes will simplify everyday coding, and also
dee830
prepare the way for the use of pattern matching in `switch`.
dee830
dee830
This was a preview feature (http://openjdk.java.net/jeps/12) in
dee830
OpenJDK 12 & 13 and became final in OpenJDK 14.
dee830
dee830
Text Blocks
dee830
===========
dee830
https://openjdk.java.net/jeps/355
dee830
https://openjdk.java.net/jeps/368
dee830
https://openjdk.java.net/jeps/378
dee830
dee830
Add text blocks to the Java language. A text block is a multi-line
dee830
string literal that avoids the need for most escape sequences,
dee830
automatically formats the string in a predictable way, and gives the
dee830
developer control over format when desired.
dee830
dee830
This was a preview feature (http://openjdk.java.net/jeps/12) in
dee830
OpenJDK 13 & 14 and became final in OpenJDK 15.
dee830
dee830
Pattern Matching for instanceof
dee830
===============================
dee830
https://openjdk.java.net/jeps/305
dee830
https://openjdk.java.net/jeps/375
dee830
https://openjdk.java.net/jeps/394
dee830
http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html
dee830
dee830
Enhance the Java programming language with pattern matching for the
dee830
`instanceof` operator. Pattern matching allows common logic in a
dee830
program, namely the conditional extraction of components from objects,
dee830
to be expressed more concisely and safely.
dee830
dee830
This was a preview feature (http://openjdk.java.net/jeps/12) in
dee830
OpenJDK 14 & 15 and became final in OpenJDK 16.
dee830
dee830
Records
dee830
=======
dee830
https://openjdk.java.net/jeps/359
dee830
https://openjdk.java.net/jeps/384
dee830
https://openjdk.java.net/jeps/395
dee830
dee830
Enhance the Java programming language with records.  Records provide a
dee830
compact syntax for declaring classes which are transparent holders for
dee830
shallowly immutable data.
dee830
dee830
This was a preview feature (http://openjdk.java.net/jeps/12) in
dee830
OpenJDK 14 & 15 and became final in OpenJDK 16.
dee830
dee830
Sealed Classes
dee830
==============
dee830
https://openjdk.java.net/jeps/360
dee830
https://openjdk.java.net/jeps/397
dee830
https://openjdk.java.net/jeps/409
dee830
https://cr.openjdk.java.net/~briangoetz/amber/datum.html
dee830
dee830
Enhance the Java programming language with sealed classes and
dee830
interfaces. Sealed classes and interfaces restrict which other classes
dee830
or interfaces may extend or implement them.
dee830
dee830
This was a preview feature (http://openjdk.java.net/jeps/12) in
dee830
OpenJDK 15 & 16 and became final in OpenJDK 17.
dee830
dee830
Restore Always-Strict Floating-Point Semantics
dee830
==============================================
dee830
https://openjdk.java.net/jeps/306
dee830
dee830
Make floating-point operations consistently strict, rather than have
dee830
both strict floating-point semantics (`strictfp`) and subtly different
dee830
default floating-point semantics. This will restore the original
dee830
floating-point semantics to the language and VM, matching the
dee830
semantics before the introduction of strict and default floating-point
dee830
modes in Java SE 1.2.
dee830
dee830
Pattern Matching for switch
dee830
===========================
dee830
https://openjdk.java.net/jeps/406
dee830
dee830
Enhance the Java programming language with pattern matching for
dee830
`switch` expressions and statements, along with extensions to the
dee830
language of patterns. Extending pattern matching to `switch` allows an
dee830
expression to be tested against a number of patterns, each with a
dee830
specific action, so that complex data-oriented queries can be
dee830
expressed concisely and safely.
dee830
dee830
This is a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK
dee830
17.
dee830
dee830
Library Features
dee830
================
dee830
dee830
JVM Constants API
dee830
=================
dee830
https://openjdk.java.net/jeps/334
dee830
dee830
Introduce an API to model nominal descriptions of key class-file and
dee830
run-time artifacts, in particular constants that are loadable from the
dee830
constant pool.
dee830
dee830
Reimplement the Legacy Socket API
dee830
=================================
dee830
https://openjdk.java.net/jeps/353
dee830
dee830
Replace the underlying implementation used by the `java.net.Socket`
dee830
and `java.net.ServerSocket` APIs with a simpler and more modern
dee830
implementation that is easy to maintain and debug. The new
dee830
implementation will be easy to adapt to work with user-mode threads,
dee830
a.k.a. fibers, currently being explored in Project Loom
dee830
(https://openjdk.java.net/projects/loom).
dee830
dee830
JFR Event Streaming
dee830
===================
dee830
https://openjdk.java.net/jeps/349
dee830
dee830
Expose JDK Flight Recorder data for continuous monitoring.
dee830
dee830
Non-Volatile Mapped Byte Buffers
dee830
================================
dee830
https://openjdk.java.net/jeps/352
dee830
dee830
Add new JDK-specific file mapping modes so that the `FileChannel` API
dee830
can be used to create `MappedByteBuffer` instances that refer to
dee830
non-volatile memory.
dee830
dee830
Helpful NullPointerExceptions
dee830
=============================
dee830
https://openjdk.java.net/jeps/358
dee830
dee830
Improve the usability of `NullPointerException`s generated by the JVM
dee830
by describing precisely which variable was `null`.
dee830
dee830
Foreign-Memory Access API
dee830
=========================
dee830
https://openjdk.java.net/jeps/370
dee830
https://openjdk.java.net/jeps/383
dee830
https://openjdk.java.net/jeps/393
dee830
dee830
Introduce an API to allow Java programs to safely and efficiently
dee830
access foreign memory outside of the Java heap.
dee830
dee830
This was a incubation feature (https://openjdk.java.net/jeps/11) in
dee830
OpenJDK 14, 15 & 16, now superseded by the Foreign Function & Memory
dee830
API in OpenJDK 17 (see below).
dee830
dee830
Edwards-Curve Digital Signature Algorithm (EdDSA)
dee830
=================================================
dee830
https://openjdk.java.net/jeps/339
dee830
dee830
Implement cryptographic signatures using the Edwards-Curve Digital
dee830
Signature Algorithm (EdDSA) as described by RFC 8032
dee830
(https://tools.ietf.org/html/rfc8032).
dee830
dee830
Hidden Classes
dee830
==============
dee830
https://openjdk.java.net/jeps/371
dee830
dee830
Introduce hidden classes, which are classes that cannot be used
dee830
directly by the bytecode of other classes. Hidden classes are intended
dee830
for use by frameworks that generate classes at run time and use them
dee830
indirectly, via reflection. A hidden class may be defined as a member
dee830
of an access control nest (https://openjdk.java.net/jeps/181), and may
dee830
be unloaded independently of other classes.
dee830
dee830
Reimplement the Legacy DatagramSocket API
dee830
=========================================
dee830
https://openjdk.java.net/jeps/373
dee830
dee830
Replace the underlying implementations of the
dee830
`java.net.DatagramSocket` and `java.net.MulticastSocket` APIs with
dee830
simpler and more modern implementations that are easy to maintain and
dee830
debug. The new implementations will be easy to adapt to work with
dee830
virtual threads, currently being explored in Project Loom
dee830
(https://openjdk.java.net/projects/loom). This is a follow-on to JEP
dee830
353 (see above), which already reimplemented the legacy Socket API.
dee830
dee830
Vector API
dee830
==========
dee830
https://openjdk.java.net/jeps/338
dee830
https://openjdk.java.net/jeps/414
dee830
dee830
Provide an initial iteration of an incubator module,
dee830
`jdk.incubator.vector`, to express vector computations that reliably
dee830
compile at runtime to optimal vector hardware instructions on
dee830
supported CPU architectures and thus achieve superior performance to
dee830
equivalent scalar computations.
dee830
dee830
This is an incubation feature (https://openjdk.java.net/jeps/11)
dee830
introduced in OpenJDK 16.
dee830
dee830
Unix-Domain Socket Channels
dee830
===========================
dee830
https://openjdk.java.net/jeps/380
dee830
dee830
Add Unix-domain (`AF_UNIX`) socket support to the socket channel and
dee830
server-socket channel APIs in the `java.nio.channels` package. Extend
dee830
the inherited channel mechanism to support Unix-domain socket channels
dee830
and server socket channels.
dee830
dee830
Foreign Linker API (Incubator)
dee830
==============================
dee830
https://openjdk.java.net/jeps/389
dee830
dee830
Introduce an API that offers statically-typed, pure-Java access to
dee830
native code. This API, together with the Foreign-Memory API (see
dee830
above), will considerably simplify the otherwise error-prone process
dee830
of binding to a native library.
dee830
dee830
This was an incubation feature (https://openjdk.java.net/jeps/11)
dee830
introduced in OpenJDK 16, now superseded by the Foreign Function &
dee830
Memory API in OpenJDK 17 (see below).
dee830
dee830
Strongly Encapsulate JDK Internals by Default
dee830
=============================================
dee830
https://openjdk.java.net/jeps/396
dee830
https://openjdk.java.net/jeps/403
dee830
dee830
Strongly encapsulate all internal elements of the JDK by default,
dee830
except for critical internal APIs such as `sun.misc.Unsafe`.  It will
dee830
no longer be possible to relax the strong encapsulation of internal
dee830
elements via a single command-line option, as was possible in OpenJDK
dee830
9 through 16.
dee830
dee830
Enhanced Pseudo-Random Number Generators
dee830
========================================
dee830
https://openjdk.java.net/jeps/356
dee830
dee830
Provide new interface types and implementations for pseudo-random
dee830
number generators (PRNGs), including jumpable PRNGs and an additional
dee830
class of splittable PRNG algorithms (LXM).
dee830
dee830
Foreign Function & Memory API
dee830
=============================
dee830
https://openjdk.java.net/jeps/412
dee830
dee830
Introduce an API by which Java programs can interoperate with code and
dee830
data outside of the Java runtime. By efficiently invoking foreign
dee830
functions (i.e., code outside the JVM), and by safely accessing
dee830
foreign memory (i.e., memory not managed by the JVM), the API enables
dee830
Java programs to call native libraries and process native data without
dee830
the brittleness and danger of JNI.
dee830
dee830
This API is an incubation feature (https://openjdk.java.net/jeps/11)
dee830
introduced in OpenJDK 17, and is an evolution of the Foreign Memory
dee830
Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK
dee830
16) (see above).
dee830
dee830
Context-Specific Deserialization Filters
dee830
========================================
dee830
https://openjdk.java.net/jeps/415
dee830
dee830
Allow applications to configure context-specific and
dee830
dynamically-selected deserialization filters via a JVM-wide filter
dee830
factory that is invoked to select a filter for each individual
dee830
deserialization operation.
dee830
dee830
Tools
dee830
=====
dee830
dee830
Packaging Tool
dee830
==============
dee830
https://openjdk.java.net/jeps/343
dee830
https://openjdk.java.net/jeps/392
dee830
dee830
Provide the `jpackage` tool, for packaging self-contained Java
dee830
applications.
dee830
dee830
JVM Features
dee830
============
dee830
dee830
Shenandoah: A Low-Pause-Time Garbage Collector
dee830
==============================================
dee830
https://openjdk.java.net/jeps/189
dee830
https://openjdk.java.net/jeps/379
dee830
dee830
Add a new garbage collection (GC) algorithm named Shenandoah which
dee830
reduces GC pause times by doing evacuation work concurrently with the
dee830
running Java threads.  Pause times with Shenandoah are independent of
dee830
heap size, meaning you will have the same consistent pause times
dee830
whether your heap is 200 MB or 200 GB.
dee830
dee830
Shenandoah has been provided in Red Hat builds of OpenJDK 8 since
dee830
8u131 in April 2017 and in all 11u builds.
dee830
dee830
Upstream, it was introduced in OpenJDK 12 as an experimental feature
dee830
and became a production feature in OpenJDK 15. It was backported to
dee830
OpenJDK 11 with the 11.0.9 release in October 2020.
dee830
dee830
Abortable Mixed Collections for G1
dee830
==================================
dee830
https://openjdk.java.net/jeps/344
dee830
dee830
Make G1 mixed collections abortable if they might exceed the pause
dee830
target.
dee830
dee830
Promptly Return Unused Committed Memory from G1
dee830
===============================================
dee830
https://openjdk.java.net/jeps/346
dee830
dee830
Enhance the G1 garbage collector to automatically return Java heap
dee830
memory to the operating system when idle.
dee830
dee830
Dynamic CDS Archives
dee830
====================
dee830
https://openjdk.java.net/jeps/310
dee830
https://openjdk.java.net/jeps/350
dee830
dee830
Extend application class-data sharing to allow the dynamic archiving
dee830
of classes at the end of Java application execution. The archived
dee830
classes will include all loaded application classes and library
dee830
classes that are not present in the default, base-layer CDS archive.
dee830
dee830
ZGC: Uncommit Unused Memory (Experimental)
dee830
==========================================
dee830
https://openjdk.java.net/jeps/351
dee830
dee830
Enhance ZGC to return unused heap memory to the operating system.
dee830
dee830
NUMA-Aware Memory Allocation for G1
dee830
===================================
dee830
https://openjdk.java.net/jeps/345
dee830
dee830
Improve G1 performance on large machines by implementing NUMA-aware
dee830
memory allocation.
dee830
dee830
ZGC on macOS (Experimental)
dee830
===========================
dee830
https://openjdk.java.net/jeps/364
dee830
dee830
Port the ZGC garbage collector to macOS.
dee830
dee830
ZGC on Windows (Experimental)
dee830
=============================
dee830
https://openjdk.java.net/jeps/365
dee830
dee830
Port the ZGC garbage collector to Windows.
dee830
dee830
ZGC: A Scalable Low-Latency Garbage Collector (Production)
dee830
==========================================================
dee830
https://openjdk.java.net/jeps/377
dee830
dee830
Change the Z Garbage Collector from an experimental feature into a
dee830
product feature.
dee830
dee830
ZGC: Concurrent Thread-Stack Processing
dee830
=======================================
dee830
https://openjdk.java.net/jeps/376
dee830
dee830
Move ZGC thread-stack processing from safepoints to a concurrent
dee830
phase.
dee830
dee830
Elastic Metaspace
dee830
=================
dee830
https://openjdk.java.net/jeps/387
dee830
dee830
Return unused HotSpot class-metadata (i.e., metaspace) memory to the
dee830
operating system more promptly, reduce metaspace footprint, and
dee830
simplify the metaspace code in order to reduce maintenance costs.
dee830
dee830
Ports
dee830
=====
dee830
dee830
Alpine Linux Port
dee830
=================
dee830
https://openjdk.java.net/jeps/386
dee830
dee830
Port the JDK to Alpine Linux, and to other Linux distributions that
dee830
use musl as their primary C library, on both the x64 and AArch64
dee830
architectures,
dee830
dee830
Windows/AArch64 Port
dee830
====================
dee830
https://openjdk.java.net/jeps/388
dee830
dee830
Port the JDK to Windows/AArch64.
dee830
dee830
New macOS Rendering Pipeline
dee830
============================
dee830
https://openjdk.java.net/jeps/382
dee830
dee830
Implement a Java 2D internal rendering pipeline for macOS using the
dee830
Apple Metal API as alternative to the existing pipeline, which uses
dee830
the deprecated Apple OpenGL API.
dee830
dee830
macOS/AArch64 Port
dee830
==================
dee830
https://openjdk.java.net/jeps/391
dee830
dee830
Port the JDK to macOS/AArch64.
dee830
dee830
DEPRECATIONS
dee830
============
dee830
dee830
Deprecate the ParallelScavenge + SerialOld GC Combination
dee830
=========================================================
dee830
https://openjdk.java.net/jeps/366
dee830
dee830
Deprecate the combination of the Parallel Scavenge and Serial Old
dee830
garbage collection algorithms.
dee830
dee830
Deprecate and Disable Biased Locking
dee830
====================================
dee830
https://openjdk.java.net/jeps/374
dee830
dee830
Disable biased locking by default, and deprecate all related
dee830
command-line options.
dee830
dee830
Warnings for Value-Based Classes
dee830
================================
dee830
https://openjdk.java.net/jeps/390
dee830
dee830
Designate the primitive wrapper classes as value-based and deprecate
dee830
their constructors for removal, prompting new deprecation
dee830
warnings. Provide warnings about improper attempts to synchronize on
dee830
instances of any value-based classes in the Java Platform.
dee830
dee830
Deprecate the Applet API for Removal
dee830
====================================
dee830
https://openjdk.java.net/jeps/398
dee830
dee830
Deprecate the Applet API for removal.  It is essentially irrelevant
dee830
since all web-browser vendors have either removed support for Java
dee830
browser plug-ins or announced plans to do so.
dee830
dee830
Deprecate the Security Manager for Removal
dee830
==========================================
dee830
https://openjdk.java.net/jeps/411
dee830
dee830
Deprecate the Security Manager for removal in a future release. The
dee830
Security Manager dates from Java 1.0. It has not been the primary
dee830
means of securing client-side Java code for many years, and it has
dee830
rarely been used to secure server-side code. To move Java forward, we
dee830
intend to deprecate the Security Manager for removal in concert with
dee830
the legacy Applet API (see above).  .
dee830
dee830
REMOVALS
dee830
========
dee830
dee830
Remove the Concurrent Mark Sweep (CMS) Garbage Collector
dee830
========================================================
dee830
https://openjdk.java.net/jeps/363
dee830
dee830
Remove the Concurrent Mark Sweep (CMS) garbage collector.
dee830
dee830
Remove the Pack200 Tools and API
dee830
================================
dee830
https://openjdk.java.net/jeps/336
dee830
https://openjdk.java.net/jeps/367
dee830
dee830
Remove the `pack200` and `unpack200` tools, and the `Pack200` API in
dee830
the `java.util.jar` package.  These tools and API were deprecated for
dee830
removal in OpenJDK 11 with the express intent to remove them in a
dee830
future release.
dee830
dee830
Remove the Nashorn JavaScript Engine
dee830
====================================
dee830
https://openjdk.java.net/jeps/372
dee830
dee830
Remove the Nashorn JavaScript script engine and APIs, and the `jjs`
dee830
tool. The engine, the APIs, and the tool were deprecated for removal
dee830
in OpenJDK 11 with the express intent to remove them in a future
dee830
release.
dee830
dee830
Remove the Solaris and SPARC Ports
dee830
==================================
dee830
https://openjdk.java.net/jeps/362
dee830
https://openjdk.java.net/jeps/381
dee830
dee830
Remove the source code and build support for the Solaris/SPARC,
dee830
Solaris/x64, and Linux/SPARC ports.  These ports were deprecated for
dee830
removal in OpenJDK 14 (JEP 362) and removed in OpenJDK 15 (JEP 381).
dee830
dee830
Remove RMI Activation
dee830
=====================
dee830
https://openjdk.java.net/jeps/385
dee830
https://openjdk.java.net/jeps/407
dee830
https://docs.oracle.com/en/java/javase/14/docs/specs/rmi/activation.html
dee830
dee830
Remove the Remote Method Invocation (RMI) Activation mechanism, while
dee830
preserving the rest of RMI.  RMI Activation is an obsolete part of RMI
dee830
that has been optional since OpenJDK 8 and was deprecated in OpenJDK
dee830
15.
dee830
dee830
Remove the Experimental AOT and JIT Compiler
dee830
============================================
dee830
https://openjdk.java.net/jeps/410
dee830
dee830
Remove the experimental Java-based ahead-of-time (AOT) and
dee830
just-in-time (JIT) compiler.  This compiler has seen little use since
dee830
its introduction and the effort required to maintain it is
dee830
significant.  Retain the experimental Java-level JVM compiler
dee830
interface (JVMCI) so that developers can continue to use
dee830
externally-built versions of the compiler for JIT compilation.