Blob Blame History Raw
Key:

JDK-X  - https://bugs.openjdk.java.net/browse/JDK-X
CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY

New in release OpenJDK 17.0.2 (2022-01-18):
===========================================
Live versions of these release notes can be found at:
  * https://bitly.com/openjdk1702
  * https://builds.shipilev.net/backports-monitor/release-notes-17.0.2.txt

* Security fixes
  - JDK-8251329: (zipfs) Files.walkFileTree walks infinitely if zip has dir named "." inside
  - JDK-8264934, CVE-2022-21248: Enhance cross VM serialization
  - JDK-8268488: More valuable DerValues
  - JDK-8268494: Better inlining of inlined interfaces
  - JDK-8268512: More content for ContentInfo
  - JDK-8268813, CVE-2022-21283: Better String matching
  - JDK-8269151: Better construction of EncryptedPrivateKeyInfo
  - JDK-8269944: Better HTTP transport redux
  - JDK-8270386, CVE-2022-21291: Better verification of scan methods
  - JDK-8270392, CVE-2022-21293: Improve String constructions
  - JDK-8270416, CVE-2022-21294: Enhance construction of Identity maps
  - JDK-8270492, CVE-2022-21282: Better resolution of URIs
  - JDK-8270498, CVE-2022-21296: Improve SAX Parser configuration management
  - JDK-8270646, CVE-2022-21299: Improved scanning of XML entities
  - JDK-8270952, CVE-2022-21277: Improve TIFF file handling
  - JDK-8271962: Better TrueType font loading
  - JDK-8271968: Better canonical naming
  - JDK-8271987: Manifest improved manifest entries
  - JDK-8272014, CVE-2022-21305: Better array indexing
  - JDK-8272026, CVE-2022-21340: Verify Jar Verification
  - JDK-8272236, CVE-2022-21341: Improve serial forms for transport
  - JDK-8272272: Enhance jcmd communication
  - JDK-8272462: Enhance image handling
  - JDK-8273290: Enhance sound handling
  - JDK-8273756, CVE-2022-21360: Enhance BMP image support
  - JDK-8273838, CVE-2022-21365: Enhanced BMP processing
  - JDK-8274096, CVE-2022-21366: Improve decoding of image files
* Other changes
  - JDK-4819544: SwingSet2 JTable Demo throws NullPointerException
  - JDK-8137101: [TEST_BUG] javax/swing/plaf/basic/BasicHTML/4251579/bug4251579.java failure due to timing
  - JDK-8140241: (fc) Data transfer from FileChannel to itself causes hang in case of overlap
  - JDK-8174819: java/nio/file/WatchService/LotsOfEvents.java fails intermittently
  - JDK-8190753: (zipfs): Accessing a large entry (> 2^31 bytes) leads to a negative initial size for ByteArrayOutputStream
  - JDK-8214761: Bug in parallel Kahan summation implementation
  - JDK-8223923: C2: Missing interference with mismatched unsafe accesses
  - JDK-8233020: (fs) UnixFileSystemProvider should use StaticProperty.userDir().
  - JDK-8238649: Call new Win32 API SetThreadDescription in os::set_native_thread_name
  - JDK-8244675: assert(IncrementalInline || (_late_inlines.length() == 0 && !has_mh_late_inlines()))
  - JDK-8261236: C2: ClhsdbJstackXcompStress test fails when StressGCM is enabled
  - JDK-8261579: AArch64: Support for weaker memory ordering in Atomic
  - JDK-8262031: Create implementation for NSAccessibilityNavigableStaticText protocol
  - JDK-8262095: NPE in Flow$FlowAnalyzer.visitApply: Cannot invoke getThrownTypes because tree.meth.type is null
  - JDK-8263059: security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java fails due to revoked cert
  - JDK-8263364: sun/net/www/http/KeepAliveStream/KeepAliveStreamCloseWithWrongContentLength.java wedged in getInputStream
  - JDK-8263375: Support stack watermarks in Zero VM
  - JDK-8263773: Reenable German localization for builds at Oracle
  - JDK-8264286: Create implementation for NSAccessibilityColumn protocol peer
  - JDK-8264287: Create implementation for NSAccessibilityComboBox protocol peer
  - JDK-8264291: Create implementation for NSAccessibilityCell protocol peer
  - JDK-8264292: Create implementation for NSAccessibilityList protocol peer
  - JDK-8264293: Create implementation for NSAccessibilityMenu protocol peer
  - JDK-8264294: Create implementation for NSAccessibilityMenuBar protocol peer
  - JDK-8264295: Create implementation for NSAccessibilityMenuItem protocol peer
  - JDK-8264296: Create implementation for NSAccessibilityPopUpButton protocol peer
  - JDK-8264297: Create implementation for NSAccessibilityProgressIndicator protocol peer
  - JDK-8264298: Create implementation for NSAccessibilityRow protocol peer
  - JDK-8264303: Create implementation for NSAccessibilityTabGroup protocol peer
  - JDK-8266239: Some duplicated javac command-line options have repeated effect
  - JDK-8266510: Nimbus JTree default tree cell renderer does not use selected text color
  - JDK-8266988: compiler/jvmci/compilerToVM/IsMatureTest.java fails with Unexpected isMature state for multiple times invoked method: expected false to equal true
  - JDK-8267256: Extend minimal retry for loopback connections on Windows to PlainSocketImpl
  - JDK-8267385: Create NSAccessibilityElement implementation for JavaComponentAccessibility
  - JDK-8267387: Create implementation for NSAccessibilityOutline protocol
  - JDK-8267388: Create implementation for NSAccessibilityTable protocol
  - JDK-8268284: javax/swing/JComponent/7154030/bug7154030.java fails with "Exception: Failed to hide opaque button"
  - JDK-8268294: Reusing HttpClient in a WebSocket.Listener hangs.
  - JDK-8268361: Fix the infinite loop in next_line
  - JDK-8268457: XML Transformer outputs Unicode supplementary character incorrectly to HTML
  - JDK-8268464: Remove dependancy of TestHttpsServer, HttpTransaction, HttpCallback from open/test/jdk/sun/net/www/protocol/https/ tests
  - JDK-8268626: Remove native pre-jdk9 support for jtreg  failure handler
  - JDK-8268860: Windows-Aarch64 build is failing in GitHub actions
  - JDK-8268882: C2: assert(n->outcnt() != 0 || C->top() == n || n->is_Proj()) failed: No dead instructions after post-alloc
  - JDK-8268885: duplicate checkcast when destination type is not first type of intersection type
  - JDK-8268893: jcmd to trim the glibc heap
  - JDK-8268894: forged ASTs can provoke an AIOOBE at com.sun.tools.javac.jvm.ClassWriter::writePosition
  - JDK-8268927: Windows: link error: unresolved external symbol "int __cdecl convert_to_unicode(char const *,wchar_t * *)"
  - JDK-8269031: linux x86_64 check for binutils 2.25 or higher after 8265783
  - JDK-8269113: Javac throws when compiling switch (null)
  - JDK-8269216: Useless initialization in com/sun/crypto/provider/PBES2Parameters.java
  - JDK-8269269: [macos11] SystemIconTest fails with ClassCastException
  - JDK-8269280: (bf) Replace StringBuffer in *Buffer.toString()
  - JDK-8269481: SctpMultiChannel never releases own file descriptor
  - JDK-8269637: javax/swing/JFileChooser/FileSystemView/SystemIconTest.java fails on windows
  - JDK-8269656: The test test/langtools/tools/javac/versions/Versions.java has duplicate test cycles
  - JDK-8269687: pauth_aarch64.hpp include name is incorrect
  - JDK-8269850: Most JDK releases report macOS version 12 as 10.16 instead of 12.0
  - JDK-8269924: Shenandoah: Introduce weak/strong marking asserts
  - JDK-8269951: [macos] Focus not painted in JButton when  setBorderPainted(false) is invoked
  - JDK-8270110: Shenandoah: Add test for JDK-8269661
  - JDK-8270116: Expand ButtonGroupLayoutTraversalTest.java to run in all LaFs, including Aqua on macOS
  - JDK-8270171: Shenandoah: Cleanup TestStringDedup and TestStringDedupStress tests
  - JDK-8270290: NTLM authentication fails if HEAD request is used
  - JDK-8270317: Large Allocation in CipherSuite
  - JDK-8270320: JDK-8270110 committed invalid copyright headers
  - JDK-8270517: Add Zero support for LoongArch
  - JDK-8270533: AArch64: size_fits_all_mem_uses should return false if its output is a CAS
  - JDK-8270886: Crash in PhaseIdealLoop::verify_strip_mined_scheduling
  - JDK-8270893: IndexOutOfBoundsException while reading large TIFF file
  - JDK-8270901: Typo PHASE_CPP in CompilerPhaseType
  - JDK-8270946: X509CertImpl.getFingerprint should not return the empty String
  - JDK-8271071: accessibility of a table on macOS lacks cell navigation
  - JDK-8271121: ZGC: stack overflow (segv) when -Xlog:gc+start=debug
  - JDK-8271142: package help is not displayed for missing X11/extensions/Xrandr.h
  - JDK-8271170: Add unit test for what jpackage app launcher puts in the environment
  - JDK-8271215: Fix data races in G1PeriodicGCTask
  - JDK-8271254: javac generates unreachable code when using empty semicolon statement
  - JDK-8271287: jdk/jshell/CommandCompletionTest.java fails with "lists don't have the same size expected"
  - JDK-8271308: (fc) FileChannel.transferTo() transfers no more than Integer.MAX_VALUE bytes in one call
  - JDK-8271315: Redo: Nimbus JTree renderer properties persist across L&F changes
  - JDK-8271323: [TESTBUG] serviceability/sa/ClhsdbCDSCore.java fails with -XX:TieredStopAtLevel=1
  - JDK-8271340: Crash PhaseIdealLoop::clone_outer_loop
  - JDK-8271341: Opcode() != Op_If && Opcode() != Op_RangeCheck) || outcnt() == 2 assert failure with Test7179138_1.java
  - JDK-8271459: C2: Missing NegativeArraySizeException when creating StringBuilder with negative capacity
  - JDK-8271463: Updating RE Configs for Upcoming CPU Release 17.0.2 on master branch for jdk17u-cpu and jdk17u-cpu-open repos.
  - JDK-8271490: [ppc] [s390]: Crash in JavaThread::pd_get_top_frame_for_profiling
  - JDK-8271560: sun/security/ssl/DHKeyExchange/LegacyDHEKeyExchange.java still fails due to "An established connection was aborted by the software in your host machine"
  - JDK-8271567: AArch64: AES Galois CounterMode (GCM) interleaved implementation using vector instructions
  - JDK-8271600: C2: CheckCastPP which should closely follow Allocate is sunk of a loop
  - JDK-8271605: Update JMH devkit to 1.32
  - JDK-8271718: Crash when during color transformation the color profile is replaced
  - JDK-8271722: [TESTBUG] gc/g1/TestMixedGCLiveThreshold.java can fail if G1 Full GC uses >1 workers
  - JDK-8271855: [TESTBUG] Wrong weakCompareAndSet assumption in UnsafeIntrinsicsTest
  - JDK-8271862: C2 intrinsic for Reference.refersTo() is often not used
  - JDK-8271868: Warn user when using mac-sign option with unsigned app-image.
  - JDK-8271895: UnProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK18
  - JDK-8271954: C2: assert(false) failed: Bad graph detected in build_loop_late
  - JDK-8272047: java/nio/channels/FileChannel/Transfer2GPlus.java failed with Unexpected transfer size: 2147418112
  - JDK-8272095: ProblemList java/nio/channels/FileChannel/Transfer2GPlus.java on linux-aarch64
  - JDK-8272114: Unused _last_state in osThread_windows
  - JDK-8272170: Missing memory barrier when checking active state for regions
  - JDK-8272305: several hotspot runtime/modules don't check exit codes
  - JDK-8272318: Improve performance of HeapDumpAllTest
  - JDK-8272328: java.library.path is not set properly by Windows jpackage app launcher
  - JDK-8272335: runtime/cds/appcds/MoveJDKTest.java doesn't check exit codes
  - JDK-8272342: [TEST_BUG] java/awt/print/PrinterJob/PageDialogMarginTest.java catches all exceptions
  - JDK-8272345: macos doesn't check `os::set_boot_path()` result
  - JDK-8272369: java/io/File/GetXSpace.java failed with "RuntimeException: java.nio.file.NoSuchFileException: /run/user/0"
  - JDK-8272391: Undeleted debug information
  - JDK-8272413: Incorrect num of element count calculation for vector cast
  - JDK-8272473: Parsing epoch seconds at a DST transition with a non-UTC parser is wrong
  - JDK-8272562: C2: assert(false) failed: Bad graph detected in build_loop_late
  - JDK-8272570: C2: crash in PhaseCFG::global_code_motion
  - JDK-8272574: C2: assert(false) failed: Bad graph detected in build_loop_late
  - JDK-8272639: jpackaged applications using microphone on mac
  - JDK-8272703: StressSeed should be set via FLAG_SET_ERGO
  - JDK-8272720: Fix the implementation of loop unrolling heuristic with LoopPercentProfileLimit
  - JDK-8272783: Epsilon: Refactor tests to improve performance
  - JDK-8272836: Limit run time for java/lang/invoke/LFCaching tests
  - JDK-8272838: Move CriticalJNI tests out of tier1
  - JDK-8272846: Move some runtime/Metaspace/elastic/ tests out of tier1
  - JDK-8272850: Drop zapping values in the Zap* option descriptions
  - JDK-8272854: split runtime/CommandLine/PrintTouchedMethods.java test
  - JDK-8272856: DoubleFlagWithIntegerValue uses G1GC-only flag
  - JDK-8272859: Javadoc external links should only have feature version number in URL
  - JDK-8272914: Create hotspot:tier2 and hotspot:tier3 test groups
  - JDK-8272970: Parallelize runtime/InvocationTests/
  - JDK-8272973: Incorrect compile command used by TestIllegalArrayCopyBeforeInfiniteLoop
  - JDK-8273021: C2: Improve Add and Xor ideal optimizations
  - JDK-8273026: Slow LoginContext.login() on multi threading application
  - JDK-8273135: java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java crashes in liblcms.dylib with NULLSeek+0x7
  - JDK-8273165: GraphKit::combine_exception_states fails with "matching stack sizes" assert
  - JDK-8273176: handle latest VS2019 in abstract_vm_version
  - JDK-8273229: Update OS detection code to recognize Windows Server 2022
  - JDK-8273234: extended 'for' with expression of type tvar causes the compiler to crash
  - JDK-8273235: tools/launcher/HelpFlagsTest.java Fails on Windows 32bit
  - JDK-8273278: Support XSLT on GraalVM Native Image--deterministic bytecode generation in XSLT
  - JDK-8273308: PatternMatchTest.java fails on CI
  - JDK-8273314: Add tier4 test groups
  - JDK-8273315: Parallelize and increase timeouts for java/foreign/TestMatrix.java test
  - JDK-8273318: Some containers/docker/TestJFREvents.java configs are running out of memory
  - JDK-8273333: Zero should warn about unimplemented -XX:+LogTouchedMethods
  - JDK-8273335: compiler/blackhole tests should not run with interpreter-only VMs
  - JDK-8273342: Null pointer dereference in classFileParser.cpp:2817
  - JDK-8273359: CI: ciInstanceKlass::get_canonical_holder() doesn't respect instance size
  - JDK-8273361: InfoOptsTest is failing in tier1
  - JDK-8273373: Zero: Cannot invoke JVM in primordial threads on Zero
  - JDK-8273375: Remove redundant 'new String' calls after concatenation in java.desktop
  - JDK-8273376: Zero: Disable vtable/itableStub gtests
  - JDK-8273378: Shenandoah: Remove the remaining uses of os::is_MP
  - JDK-8273408: java.lang.AssertionError: typeSig ERROR on generated class property of record
  - JDK-8273416: C2: assert(false) failed: bad AD file after JDK-8252372 with UseSSE={0,1}
  - JDK-8273440: Zero: Disable runtime/Unsafe/InternalErrorTest.java
  - JDK-8273450: Fix the copyright header of SVML files
  - JDK-8273451: Remove unreachable return in  mutexLocker::wait
  - JDK-8273483: Zero: Clear pending JNI exception check in native method handler
  - JDK-8273486: Zero: Handle DiagnoseSyncOnValueBasedClasses VM option
  - JDK-8273487: Zero: Handle "zero" variant in runtime tests
  - JDK-8273489: Zero: Handle UseHeavyMonitors on all monitorenter paths
  - JDK-8273498: compiler/c2/Test7179138_1.java timed out
  - JDK-8273505: runtime/cds/appcds/loaderConstraints/DynamicLoaderConstraintsTest.java#default-cl crashed with SIGSEGV in MetaspaceShared::link_shared_classes
  - JDK-8273514: java/util/DoubleStreamSums/CompensatedSums.java failure
  - JDK-8273575: memory leak in appendBootClassPath(), paths must be deallocated
  - JDK-8273592: Backout JDK-8271868
  - JDK-8273593: [REDO] Warn user when using mac-sign option with unsigned app-image.
  - JDK-8273595: tools/jpackage tests do not work on apt-based Linux distros like Debian
  - JDK-8273606: Zero: SPARC64 build fails with si_band type mismatch
  - JDK-8273614: Shenandoah: intermittent  timeout with ConcurrentGCBreakpoint tests
  - JDK-8273638: javax/swing/JTable/4235420/bug4235420.java fails in GTK L&F
  - JDK-8273646: Add openssl from path variable also in to Default System Openssl Path in OpensslArtifactFetcher
  - JDK-8273678: TableAccessibility and TableRowAccessibility miss autorelease
  - JDK-8273695: Safepoint deadlock on VMOperation_lock
  - JDK-8273790: Potential cyclic dependencies between Gregorian and CalendarSystem
  - JDK-8273806: compiler/cpuflags/TestSSE4Disabled.java should test for CPU feature explicitly
  - JDK-8273807: Zero: Drop incorrect test block from compiler/startup/NumCompilerThreadsCheck.java
  - JDK-8273808: Cleanup AddFontsToX11FontPath
  - JDK-8273826: Correct Manifest file name and NPE checks
  - JDK-8273887: [macos] java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java timed out
  - JDK-8273894: ConcurrentModificationException raised every time ReferralsCache drops referral
  - JDK-8273902: Memory leak in OopStorage due to bug in OopHandle::release()
  - JDK-8273924: ArrayIndexOutOfBoundsException thrown in java.util.JapaneseImperialCalendar.add()
  - JDK-8273935: (zipfs) Files.getFileAttributeView() throws UOE instead of returning null when view not supported
  - JDK-8273958: gtest/MetaspaceGtests executes unnecessary tests in debug builds
  - JDK-8273961: jdk/nio/zipfs/ZipFSTester.java fails if file path contains '+' character
  - JDK-8273965: some testlibrary_tests/ir_framework tests fail when c1 disabled
  - JDK-8273968: JCK javax_xml tests fail in CI
  - JDK-8274056: JavaAccessibilityUtilities leaks JNI objects
  - JDK-8274074: SIGFPE with C2 compiled code with -XX:+StressGCM
  - JDK-8274083: Update testing docs to mention tiered testing
  - JDK-8274087: Windows DLL path not set correctly.
  - JDK-8274145: C2: condition incorrectly made redundant with dominating main loop exit condition
  - JDK-8274205: Handle KDC_ERR_SVC_UNAVAILABLE error code from KDC
  - JDK-8274215: Remove globalsignr2ca root from 17.0.2
  - JDK-8274242: Implement fast-path for ASCII-compatible CharsetEncoders on x86
  - JDK-8274265: Suspicious string concatenation in logTestUtils.inline.hpp
  - JDK-8274293: Build failure on macOS with Xcode 13.0 as vfork is deprecated
  - JDK-8274325: C4819 warning at vm_version_x86.cpp on Windows after JDK-8234160
  - JDK-8274326: [macos] Ensure initialisation of sun/lwawt/macosx/CAccessibility in JavaComponentAccessibility.m
  - JDK-8274329: Fix non-portable HotSpot code in MethodMatcher::parse_method_pattern
  - JDK-8274338: com/sun/jdi/RedefineCrossEvent.java failed "assert(m != __null) failed: NULL mirror"
  - JDK-8274347: Passing a *nested* switch expression as a parameter causes an NPE during compile
  - JDK-8274349: ForkJoinPool.commonPool() does not work with 1 CPU
  - JDK-8274381: missing CAccessibility definitions in JNI code
  - JDK-8274383: JNI call of getAccessibleSelection on a wrong thread
  - JDK-8274401: C2: GraphKit::load_array_element bypasses Access API
  - JDK-8274406: RunThese30M.java failed "assert(!LCA_orig->dominates(pred_block) || early->dominates(pred_block)) failed: early is high enough"
  - JDK-8274407: (tz) Update Timezone Data to 2021c
  - JDK-8274435: EXCEPTION_ACCESS_VIOLATION in BFSClosure::closure_impl
  - JDK-8274467: TestZoneInfo310.java fails with tzdata2021b
  - JDK-8274468: TimeZoneTest.java fails with tzdata2021b
  - JDK-8274501: c2i entry barriers read int as long on AArch64
  - JDK-8274521: jdk/jfr/event/gc/detailed/TestGCLockerEvent.java fails when other GC is selected
  - JDK-8274522: java/lang/management/ManagementFactory/MXBeanException.java test fails with Shenandoah
  - JDK-8274523: java/lang/management/MemoryMXBean/MemoryTest.java test should handle Shenandoah
  - JDK-8274550: c2i entry barriers read int as long on PPC
  - JDK-8274560: JFR: Add test for OldObjectSample event when using Shenandoah
  - JDK-8274606: Fix jaxp/javax/xml/jaxp/unittest/transform/SurrogateTest.java test
  - JDK-8274642: jdk/jshell/CommandCompletionTest.java fails with NoSuchElementException after JDK-8271287
  - JDK-8274716: JDWP Spec: the description for the Dispose command confuses suspend with resume.
  - JDK-8274736: Concurrent read/close of SSLSockets causes SSLSessions to be invalidated unnecessarily
  - JDK-8274770: [PPC64] resolve_jobject needs a generic implementation to support load barriers
  - JDK-8274773: [TESTBUG] UnsafeIntrinsicsTest intermittently fails on weak memory model platform
  - JDK-8274779: HttpURLConnection: HttpClient and HttpsClient incorrectly check request method when set to POST
  - JDK-8274840: Update OS detection code to recognize Windows 11
  - JDK-8274848: LambdaMetaFactory::metafactory on REF_invokeSpecial impl method has incorrect behavior
  - JDK-8274851: [ppc64] Port zgc to linux on ppc64le
  - JDK-8274942: AssertionError at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
  - JDK-8275008: gtest build failure due to stringop-overflow warning with gcc11
  - JDK-8275049: [ZGC] missing null check in ZNMethod::log_register
  - JDK-8275051: Shenandoah: Correct ordering of requested gc cause and gc request flag
  - JDK-8275071: [macos] A11y cursor gets stuck when combobox is closed
  - JDK-8275104: IR framework does not handle client VM builds correctly
  - JDK-8275110: Correct RE Configs for CPU Release 17.0.2 on master branch for jdk17u-cpu and jdk17u-cpu-open repos.
  - JDK-8275131: Exceptions after a touchpad gesture on macOS
  - JDK-8275141: recover corrupted line endings for the version-numbers.conf
  - JDK-8275145: file.encoding system property has an incorrect value on Windows
  - JDK-8275226: Shenandoah: Relax memory constraint for worker claiming tasks/ranges
  - JDK-8275302: unexpected compiler error: cast, intersection types and sealed
  - JDK-8275426: PretouchTask num_chunks calculation can overflow
  - JDK-8275604: Zero: Reformat opclabels_data
  - JDK-8275666: serviceability/jvmti/GetObjectSizeClass.java shouldn't have vm.flagless
  - JDK-8275703: System.loadLibrary fails on Big Sur for libraries hidden from filesystem
  - JDK-8275720: CommonComponentAccessibility.createWithParent isWrapped causes mem leak
  - JDK-8275766: (tz) Update Timezone Data to 2021e
  - JDK-8275809: crash in [CommonComponentAccessibility getCAccessible:withEnv:]
  - JDK-8275811: Incorrect instance to dispose
  - JDK-8275819: [TableRowAccessibility accessibilityChildren] method is ineffective
  - JDK-8275849: TestZoneInfo310.java fails with tzdata2021e
  - JDK-8275863: Use encodeASCII for ASCII-compatible DoubleByte encodings
  - JDK-8275872: Sync J2DBench run and analyze Makefile targets with build.xml
  - JDK-8276025: Hotspot's libsvml.so may conflict with user dependency
  - JDK-8276066: Reset LoopPercentProfileLimit for x86 due to suboptimal performance
  - JDK-8276076: Updating RE Configs for BUILD REQUEST 17.0.2+3
  - JDK-8276105: C2: Conv(D|F)2(I|L)Nodes::Ideal should handle rounding correctly
  - JDK-8276112: Inconsistent scalar replacement debug info at safepoints
  - JDK-8276122: Change openjdk project in jcheck to jdk-updates
  - JDK-8276130: Fix Github Actions of JDK17u to account for update version scheme
  - JDK-8276139: TestJpsHostName.java not reliable, better to expand HostIdentifierCreate.java test
  - JDK-8276157: C2: Compiler stack overflow during escape analysis on Linux x86_32
  - JDK-8276201: Shenandoah: Race results degenerated GC to enter wrong entry point
  - JDK-8276205: Shenandoah: CodeCache_lock should always be held for initializing code cache iteration
  - JDK-8276306: jdk/jshell/CustomInputToolBuilder.java fails intermittently on storage acquisition
  - JDK-8276536: Update TimeZoneNames files to follow the changes made by JDK-8275766
  - JDK-8276550: Use SHA256 hash in build.tools.depend.Depend
  - JDK-8276572: Fake libsyslookup.so library causes tooling issues
  - JDK-8276774: Cookie stored in CookieHandler not sent if user headers contain cookie
  - JDK-8276801: gc/stress/CriticalNativeStress.java fails intermittently with Shenandoah
  - JDK-8276805: java/awt/print/PrinterJob/CheckPrivilege.java fails due to disabled SecurityManager
  - JDK-8276845: (fs) java/nio/file/spi/SetDefaultProvider.java fails on x86_32
  - JDK-8276846: JDK-8273416 is incomplete for UseSSE=1
  - JDK-8276854: Windows GHA builds fail due to broken Cygwin
  - JDK-8276864: Update boot JDKs to 17.0.1 in GHA
  - JDK-8276905: Use appropriate macosx_version_minimum value while compiling metal shaders
  - JDK-8276927: [ppc64] Port shenandoahgc to linux on ppc64le
  - JDK-8277029: JMM GetDiagnosticXXXInfo APIs should verify output array sizes
  - JDK-8277093: Vector should throw ClassNotFoundException for a missing class of an element
  - JDK-8277159: Fix java/nio/file/FileStore/Basic.java test by ignoring /run/user/* mount points
  - JDK-8277195: missing CAccessibility definition in [CommonComponentAccessibility accessibilityHitTest]
  - JDK-8277212: GC accidentally cleans valid megamorphic vtable inline caches
  - JDK-8277224: sun.security.pkcs.PKCS9Attributes.toString() throws NPE
  - JDK-8277529: SIGSEGV in C2 CompilerThread Node::rematerialize() compiling Packet::readUnsignedTrint
  - JDK-8277981: String Deduplication table is never cleaned up due to bad dead_factor_for_cleanup

Notes on individual issues:
===========================

core-libs/java.io:serialization:

JDK-8277157: Vector should throw ClassNotFoundException for a missing class of an element
=========================================================================================
`java.util.Vector` is updated to correctly report
`ClassNotFoundException that occurs during deserialization using
`java.io.ObjectInputStream.GetField.get(name, object)` when the class
of an element of the Vector is not found. Without this fix, a
`StreamCorruptedException` is thrown that does not provide information
about the missing class.

security-libs/java.security:

JDK-8272535: Removed Google's GlobalSign Root Certificate
=========================================================
The following root certificate from Google has been removed from the
`cacerts` keystore:

Alias Name: globalsignr2ca [jdk]
Distinguished Name: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2

core-libs/java.io:

JDK-8275343: file.encoding System Property Has an Incorrect Value on Windows
============================================================================
The initialization of the `file.encoding` system property on non macOS
platforms has been reverted to align with the behavior on or before
JDK 11.  This has been an issue especially on Windows where the system
and user's locales are not the same.

hotspot/gc:

JDK-8277533: ZGC: Fixed long Process Non-Strong References times
================================================================
A bug has been fixed that could cause long "Concurrent Process
Non-Strong References" times with ZGC. The bug blocked the GC from
making significant progress, and caused both latency and throughput
issues for the Java application.

The long times could be seen in the GC logs when running with `-Xlog:gc*` e.g.

[17606.140s][info][gc,phases ] GC(719) Concurrent Process Non-Strong References 25781.928ms

core-libs/java.time:

JDK-8274857:  Update Timezone Data to 2021c
===========================================
IANA Time Zone Database, on which JDK's Date/Time libraries are based,
has been updated to version 2021c
(https://mm.icann.org/pipermail/tz-announce/2021-October/000067.html). Note
that with this update, some of the time zone rules prior to the year
1970 have been modified according to the changes which were introduced
with 2021b. For more detail, refer to the announcement of 2021b
(https://mm.icann.org/pipermail/tz-announce/2021-September/000066.html)

New in release OpenJDK 17.0.1 (2021-10-19):
===========================================
Live versions of these release notes can be found at:
  * https://builds.shipilev.net/backports-monitor/release-notes-17.0.1.txt

* Security fixes
  - JDK-8263314: Enhance XML Dsig modes
  - JDK-8265167, CVE-2021-35556: Richer Text Editors
  - JDK-8265574: Improve handling of sheets
  - JDK-8265580, CVE-2021-35559: Enhanced style for RTF kit
  - JDK-8265776: Improve Stream handling for SSL
  - JDK-8266097, CVE-2021-35561: Better hashing support
  - JDK-8266103: Better specified spec values
  - JDK-8266109: More Resilient Classloading
  - JDK-8266115: More Manifest Jar Loading
  - JDK-8266137, CVE-2021-35564: Improve Keystore integrity
  - JDK-8266689, CVE-2021-35567: More Constrained Delegation
  - JDK-8267086: ArrayIndexOutOfBoundsException in java.security.KeyFactory.generatePublic
  - JDK-8267712: Better LDAP reference processing
  - JDK-8267729, CVE-2021-35578: Improve TLS client handshaking
  - JDK-8267735, CVE-2021-35586: Better BMP support
  - JDK-8268193: Improve requests of certificates
  - JDK-8268199: Correct certificate requests
  - JDK-8268205: Enhance DTLS client handshake
  - JDK-8268500: Better specified ParameterSpecs
  - JDK-8268506: More Manifest Digests
  - JDK-8269618, CVE-2021-35603: Better session identification
  - JDK-8269624: Enhance method selection support
  - JDK-8270398: Enhance canonicalization
  - JDK-8270404: Better canonicalization
* Other changes
  - JDK-8225082: Remove IdenTrust certificate that is expiring in September 2021
  - JDK-8243543: jtreg test security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java fails
  - JDK-8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked
  - JDK-8261088: Repeatable annotations without @Target cannot have containers that target module declarations
  - JDK-8262731: [macOS] Exception from "Printable.print" is swallowed during "PrinterJob.print"
  - JDK-8263531: Remove unused buffer int
  - JDK-8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java
  - JDK-8267625: AARCH64: typo in LIR_Assembler::emit_profile_type
  - JDK-8267666: Add option to jcmd GC.heap_dump to use existing file
  - JDK-8268019: C2: assert(no_dead_loop) failed: dead loop detected
  - JDK-8268261: C2: assert(n != __null) failed: Bad immediate dominator info.
  - JDK-8268427: Improve AlgorithmConstraints:checkAlgorithm performance
  - JDK-8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms
  - JDK-8269297: Bump version numbers for JDK 17.0.1
  - JDK-8269478: Shenandoah: gc/shenandoah/mxbeans tests should be more resilient
  - JDK-8269574: C2: Avoid redundant uncommon traps in GraphKit::builtin_throw() for JVMTI exception events
  - JDK-8269763: The JEditorPane is blank after JDK-8265167
  - JDK-8269851: OperatingSystemMXBean getProcessCpuLoad reports incorrect process cpu usage in containers
  - JDK-8269882: stack-use-after-scope in NewObjectA
  - JDK-8269897: Shenandoah: Resolve UNKNOWN access strength, where possible
  - JDK-8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status
  - JDK-8269993: [Test]: java/net/httpclient/DigestEchoClientSSL.java contains redundant @run tags
  - JDK-8270094: Shenandoah: Provide human-readable labels for test configurations
  - JDK-8270096: Shenandoah: Optimize gc/shenandoah/TestRefprocSanity.java for interpreter mode
  - JDK-8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert
  - JDK-8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup
  - JDK-8270280: security/infra/java/security/cert/CertPathValidator/certification/LetsEncryptCA.java  OCSP response error
  - JDK-8270344: Session resumption errors
  - 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
  - JDK-8271276: C2: Wrong JVM state used for receiver null check
  - JDK-8271335: Updating RE Configs for BUILD REQUEST 17.0.1+4
  - JDK-8271589: fatal error with variable shift count integer rotate operation.
  - JDK-8271723: Unproblemlist runtime/InvocationTests/invokevirtualTests.java
  - JDK-8271730: Client authentication using RSASSA-PSS fails after correct certificate requests
  - JDK-8271925: ZGC: Arraycopy stub passes invalid oop to load barrier
  - JDK-8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon
  - JDK-8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj
  - JDK-8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails
  - JDK-8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790
  - JDK-8272472: StackGuardPages test doesn't build with glibc 2.34
  - JDK-8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182
  - JDK-8272602: [macos] not all KEY_PRESSED events sent when control modifier is used
  - JDK-8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848
  - JDK-8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled
  - JDK-8272806: [macOS] "Apple AWT Internal Exception" when input method is changed
  - JDK-8273358: macOS Monterey does not have the font Times needed by Serif

Notes on individual issues:
===========================

security-libs/java.security:

JDK-8271434: Removed IdenTrust Root Certificate
===============================================
The following root certificate from IdenTrust has been removed from
the `cacerts` keystore:

Alias Name: identrustdstx3 [jdk]
Distinguished Name: CN=DST Root CA X3, O=Digital Signature Trust Co.

New in release OpenJDK 17.0.0 (2021-09-14):
===========================================
The full list of changes in the interim releases from 11u to 17u can be found at:
  * https://builds.shipilev.net/backports-monitor/release-notes-12.txt
  * https://builds.shipilev.net/backports-monitor/release-notes-13.txt
  * https://builds.shipilev.net/backports-monitor/release-notes-14.txt
  * https://builds.shipilev.net/backports-monitor/release-notes-15.txt
  * https://builds.shipilev.net/backports-monitor/release-notes-16.txt
  * https://builds.shipilev.net/backports-monitor/release-notes-17.txt

Major changes are listed below.  Some changes may have been backported
to earlier releases following their first appearance in OpenJDK 12
through to 17.

NEW FEATURES
============

Language Features
=================

Switch Expressions
==================
https://openjdk.java.net/jeps/325
https://openjdk.java.net/jeps/354
https://openjdk.java.net/jeps/361

Extend the `switch` statement so that it can be used as either a
statement or an expression, and that both forms can use either a
"traditional" or "simplified" scoping and control flow behavior.  Both
forms can use either traditional `case ... :` labels (with fall
through) or new `case ... ->` labels (with no fall through), with a
further new statement for yielding a value from a `switch`
expression. These changes will simplify everyday coding, and also
prepare the way for the use of pattern matching in `switch`.

This was a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 12 & 13 and became final in OpenJDK 14.

Text Blocks
===========
https://openjdk.java.net/jeps/355
https://openjdk.java.net/jeps/368
https://openjdk.java.net/jeps/378

Add text blocks to the Java language. A text block is a multi-line
string literal that avoids the need for most escape sequences,
automatically formats the string in a predictable way, and gives the
developer control over format when desired.

This was a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 13 & 14 and became final in OpenJDK 15.

Pattern Matching for instanceof
===============================
https://openjdk.java.net/jeps/305
https://openjdk.java.net/jeps/375
https://openjdk.java.net/jeps/394
http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html

Enhance the Java programming language with pattern matching for the
`instanceof` operator. Pattern matching allows common logic in a
program, namely the conditional extraction of components from objects,
to be expressed more concisely and safely.

This was a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 14 & 15 and became final in OpenJDK 16.

Records
=======
https://openjdk.java.net/jeps/359
https://openjdk.java.net/jeps/384
https://openjdk.java.net/jeps/395

Enhance the Java programming language with records.  Records provide a
compact syntax for declaring classes which are transparent holders for
shallowly immutable data.

This was a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 14 & 15 and became final in OpenJDK 16.

Sealed Classes
==============
https://openjdk.java.net/jeps/360
https://openjdk.java.net/jeps/397
https://openjdk.java.net/jeps/409
https://cr.openjdk.java.net/~briangoetz/amber/datum.html

Enhance the Java programming language with sealed classes and
interfaces. Sealed classes and interfaces restrict which other classes
or interfaces may extend or implement them.

This was a preview feature (http://openjdk.java.net/jeps/12) in
OpenJDK 15 & 16 and became final in OpenJDK 17.

Restore Always-Strict Floating-Point Semantics
==============================================
https://openjdk.java.net/jeps/306

Make floating-point operations consistently strict, rather than have
both strict floating-point semantics (`strictfp`) and subtly different
default floating-point semantics. This will restore the original
floating-point semantics to the language and VM, matching the
semantics before the introduction of strict and default floating-point
modes in Java SE 1.2.

Pattern Matching for switch
===========================
https://openjdk.java.net/jeps/406

Enhance the Java programming language with pattern matching for
`switch` expressions and statements, along with extensions to the
language of patterns. Extending pattern matching to `switch` allows an
expression to be tested against a number of patterns, each with a
specific action, so that complex data-oriented queries can be
expressed concisely and safely.

This is a preview feature (http://openjdk.java.net/jeps/12) in OpenJDK
17.

Library Features
================

JVM Constants API
=================
https://openjdk.java.net/jeps/334

Introduce an API to model nominal descriptions of key class-file and
run-time artifacts, in particular constants that are loadable from the
constant pool.

Reimplement the Legacy Socket API
=================================
https://openjdk.java.net/jeps/353

Replace the underlying implementation used by the `java.net.Socket`
and `java.net.ServerSocket` APIs with a simpler and more modern
implementation that is easy to maintain and debug. The new
implementation will be easy to adapt to work with user-mode threads,
a.k.a. fibers, currently being explored in Project Loom
(https://openjdk.java.net/projects/loom).

JFR Event Streaming
===================
https://openjdk.java.net/jeps/349

Expose JDK Flight Recorder data for continuous monitoring.

Non-Volatile Mapped Byte Buffers
================================
https://openjdk.java.net/jeps/352

Add new JDK-specific file mapping modes so that the `FileChannel` API
can be used to create `MappedByteBuffer` instances that refer to
non-volatile memory.

Helpful NullPointerExceptions
=============================
https://openjdk.java.net/jeps/358

Improve the usability of `NullPointerException`s generated by the JVM
by describing precisely which variable was `null`.

Foreign-Memory Access API
=========================
https://openjdk.java.net/jeps/370
https://openjdk.java.net/jeps/383
https://openjdk.java.net/jeps/393

Introduce an API to allow Java programs to safely and efficiently
access foreign memory outside of the Java heap.

This was a incubation feature (https://openjdk.java.net/jeps/11) in
OpenJDK 14, 15 & 16, now superseded by the Foreign Function & Memory
API in OpenJDK 17 (see below).

Edwards-Curve Digital Signature Algorithm (EdDSA)
=================================================
https://openjdk.java.net/jeps/339

Implement cryptographic signatures using the Edwards-Curve Digital
Signature Algorithm (EdDSA) as described by RFC 8032
(https://tools.ietf.org/html/rfc8032).

Hidden Classes
==============
https://openjdk.java.net/jeps/371

Introduce hidden classes, which are classes that cannot be used
directly by the bytecode of other classes. Hidden classes are intended
for use by frameworks that generate classes at run time and use them
indirectly, via reflection. A hidden class may be defined as a member
of an access control nest (https://openjdk.java.net/jeps/181), and may
be unloaded independently of other classes.

Reimplement the Legacy DatagramSocket API
=========================================
https://openjdk.java.net/jeps/373

Replace the underlying implementations of the
`java.net.DatagramSocket` and `java.net.MulticastSocket` APIs with
simpler and more modern implementations that are easy to maintain and
debug. The new implementations will be easy to adapt to work with
virtual threads, currently being explored in Project Loom
(https://openjdk.java.net/projects/loom). This is a follow-on to JEP
353 (see above), which already reimplemented the legacy Socket API.

Vector API
==========
https://openjdk.java.net/jeps/338
https://openjdk.java.net/jeps/414

Provide an initial iteration of an incubator module,
`jdk.incubator.vector`, to express vector computations that reliably
compile at runtime to optimal vector hardware instructions on
supported CPU architectures and thus achieve superior performance to
equivalent scalar computations.

This is an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 16.

Unix-Domain Socket Channels
===========================
https://openjdk.java.net/jeps/380

Add Unix-domain (`AF_UNIX`) socket support to the socket channel and
server-socket channel APIs in the `java.nio.channels` package. Extend
the inherited channel mechanism to support Unix-domain socket channels
and server socket channels.

Foreign Linker API (Incubator)
==============================
https://openjdk.java.net/jeps/389

Introduce an API that offers statically-typed, pure-Java access to
native code. This API, together with the Foreign-Memory API (see
above), will considerably simplify the otherwise error-prone process
of binding to a native library.

This was an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 16, now superseded by the Foreign Function &
Memory API in OpenJDK 17 (see below).

Strongly Encapsulate JDK Internals by Default
=============================================
https://openjdk.java.net/jeps/396
https://openjdk.java.net/jeps/403

Strongly encapsulate all internal elements of the JDK by default,
except for critical internal APIs such as `sun.misc.Unsafe`.  It will
no longer be possible to relax the strong encapsulation of internal
elements via a single command-line option, as was possible in OpenJDK
9 through 16.

Enhanced Pseudo-Random Number Generators
========================================
https://openjdk.java.net/jeps/356

Provide new interface types and implementations for pseudo-random
number generators (PRNGs), including jumpable PRNGs and an additional
class of splittable PRNG algorithms (LXM).

Foreign Function & Memory API
=============================
https://openjdk.java.net/jeps/412

Introduce an API by which Java programs can interoperate with code and
data outside of the Java runtime. By efficiently invoking foreign
functions (i.e., code outside the JVM), and by safely accessing
foreign memory (i.e., memory not managed by the JVM), the API enables
Java programs to call native libraries and process native data without
the brittleness and danger of JNI.

This API is an incubation feature (https://openjdk.java.net/jeps/11)
introduced in OpenJDK 17, and is an evolution of the Foreign Memory
Access API (OpenJDK 14 through 16) and Foreign Linker API (OpenJDK
16) (see above).

Context-Specific Deserialization Filters
========================================
https://openjdk.java.net/jeps/415

Allow applications to configure context-specific and
dynamically-selected deserialization filters via a JVM-wide filter
factory that is invoked to select a filter for each individual
deserialization operation.

Tools
=====

Packaging Tool
==============
https://openjdk.java.net/jeps/343
https://openjdk.java.net/jeps/392

Provide the `jpackage` tool, for packaging self-contained Java
applications.

JVM Features
============

Shenandoah: A Low-Pause-Time Garbage Collector
==============================================
https://openjdk.java.net/jeps/189
https://openjdk.java.net/jeps/379

Add a new garbage collection (GC) algorithm named Shenandoah which
reduces GC pause times by doing evacuation work concurrently with the
running Java threads.  Pause times with Shenandoah are independent of
heap size, meaning you will have the same consistent pause times
whether your heap is 200 MB or 200 GB.

Shenandoah has been provided in Red Hat builds of OpenJDK 8 since
8u131 in April 2017 and in all 11u builds.

Upstream, it was introduced in OpenJDK 12 as an experimental feature
and became a production feature in OpenJDK 15. It was backported to
OpenJDK 11 with the 11.0.9 release in October 2020.

Abortable Mixed Collections for G1
==================================
https://openjdk.java.net/jeps/344

Make G1 mixed collections abortable if they might exceed the pause
target.

Promptly Return Unused Committed Memory from G1
===============================================
https://openjdk.java.net/jeps/346

Enhance the G1 garbage collector to automatically return Java heap
memory to the operating system when idle.

Dynamic CDS Archives
====================
https://openjdk.java.net/jeps/310
https://openjdk.java.net/jeps/350

Extend application class-data sharing to allow the dynamic archiving
of classes at the end of Java application execution. The archived
classes will include all loaded application classes and library
classes that are not present in the default, base-layer CDS archive.

ZGC: Uncommit Unused Memory (Experimental)
==========================================
https://openjdk.java.net/jeps/351

Enhance ZGC to return unused heap memory to the operating system.

NUMA-Aware Memory Allocation for G1
===================================
https://openjdk.java.net/jeps/345

Improve G1 performance on large machines by implementing NUMA-aware
memory allocation.

ZGC on macOS (Experimental)
===========================
https://openjdk.java.net/jeps/364

Port the ZGC garbage collector to macOS.

ZGC on Windows (Experimental)
=============================
https://openjdk.java.net/jeps/365

Port the ZGC garbage collector to Windows.

ZGC: A Scalable Low-Latency Garbage Collector (Production)
==========================================================
https://openjdk.java.net/jeps/377

Change the Z Garbage Collector from an experimental feature into a
product feature.

ZGC: Concurrent Thread-Stack Processing
=======================================
https://openjdk.java.net/jeps/376

Move ZGC thread-stack processing from safepoints to a concurrent
phase.

Elastic Metaspace
=================
https://openjdk.java.net/jeps/387

Return unused HotSpot class-metadata (i.e., metaspace) memory to the
operating system more promptly, reduce metaspace footprint, and
simplify the metaspace code in order to reduce maintenance costs.

Ports
=====

Alpine Linux Port
=================
https://openjdk.java.net/jeps/386

Port the JDK to Alpine Linux, and to other Linux distributions that
use musl as their primary C library, on both the x64 and AArch64
architectures,

Windows/AArch64 Port
====================
https://openjdk.java.net/jeps/388

Port the JDK to Windows/AArch64.

New macOS Rendering Pipeline
============================
https://openjdk.java.net/jeps/382

Implement a Java 2D internal rendering pipeline for macOS using the
Apple Metal API as alternative to the existing pipeline, which uses
the deprecated Apple OpenGL API.

macOS/AArch64 Port
==================
https://openjdk.java.net/jeps/391

Port the JDK to macOS/AArch64.

DEPRECATIONS
============

Deprecate the ParallelScavenge + SerialOld GC Combination
=========================================================
https://openjdk.java.net/jeps/366

Deprecate the combination of the Parallel Scavenge and Serial Old
garbage collection algorithms.

Deprecate and Disable Biased Locking
====================================
https://openjdk.java.net/jeps/374

Disable biased locking by default, and deprecate all related
command-line options.

Warnings for Value-Based Classes
================================
https://openjdk.java.net/jeps/390

Designate the primitive wrapper classes as value-based and deprecate
their constructors for removal, prompting new deprecation
warnings. Provide warnings about improper attempts to synchronize on
instances of any value-based classes in the Java Platform.

Deprecate the Applet API for Removal
====================================
https://openjdk.java.net/jeps/398

Deprecate the Applet API for removal.  It is essentially irrelevant
since all web-browser vendors have either removed support for Java
browser plug-ins or announced plans to do so.

Deprecate the Security Manager for Removal
==========================================
https://openjdk.java.net/jeps/411

Deprecate the Security Manager for removal in a future release. The
Security Manager dates from Java 1.0. It has not been the primary
means of securing client-side Java code for many years, and it has
rarely been used to secure server-side code. To move Java forward, we
intend to deprecate the Security Manager for removal in concert with
the legacy Applet API (see above).  .

REMOVALS
========

Remove the Concurrent Mark Sweep (CMS) Garbage Collector
========================================================
https://openjdk.java.net/jeps/363

Remove the Concurrent Mark Sweep (CMS) garbage collector.

Remove the Pack200 Tools and API
================================
https://openjdk.java.net/jeps/336
https://openjdk.java.net/jeps/367

Remove the `pack200` and `unpack200` tools, and the `Pack200` API in
the `java.util.jar` package.  These tools and API were deprecated for
removal in OpenJDK 11 with the express intent to remove them in a
future release.

Remove the Nashorn JavaScript Engine
====================================
https://openjdk.java.net/jeps/372

Remove the Nashorn JavaScript script engine and APIs, and the `jjs`
tool. The engine, the APIs, and the tool were deprecated for removal
in OpenJDK 11 with the express intent to remove them in a future
release.

Remove the Solaris and SPARC Ports
==================================
https://openjdk.java.net/jeps/362
https://openjdk.java.net/jeps/381

Remove the source code and build support for the Solaris/SPARC,
Solaris/x64, and Linux/SPARC ports.  These ports were deprecated for
removal in OpenJDK 14 (JEP 362) and removed in OpenJDK 15 (JEP 381).

Remove RMI Activation
=====================
https://openjdk.java.net/jeps/385
https://openjdk.java.net/jeps/407
https://docs.oracle.com/en/java/javase/14/docs/specs/rmi/activation.html

Remove the Remote Method Invocation (RMI) Activation mechanism, while
preserving the rest of RMI.  RMI Activation is an obsolete part of RMI
that has been optional since OpenJDK 8 and was deprecated in OpenJDK
15.

Remove the Experimental AOT and JIT Compiler
============================================
https://openjdk.java.net/jeps/410

Remove the experimental Java-based ahead-of-time (AOT) and
just-in-time (JIT) compiler.  This compiler has seen little use since
its introduction and the effort required to maintain it is
significant.  Retain the experimental Java-level JVM compiler
interface (JVMCI) so that developers can continue to use
externally-built versions of the compiler for JIT compilation.