[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"package:cask:oracle-jdk:en":3,"releases:stats:cask:oracle-jdk:en":462,"releases:cask:oracle-jdk:1:false:false:en":463,"releases-count:cask:oracle-jdk:true:en":587},{"artifacts":4,"autoUpdates":23,"categories":24,"caveats":30,"conflictsWith":31,"dependsOn":34,"deprecated":23,"description":42,"descriptionEn":43,"developer":44,"disabled":23,"displayName":45,"downloadSha256":46,"downloadSize":47,"downloadUrl":48,"editorChoice":23,"formulaeUrl":49,"homepage":50,"installCommand":51,"installs":52,"installs30d":53,"isFont":23,"isLibrary":23,"kegOnly":23,"kind":56,"latestRelease":57,"machineTranslated":23,"name":79,"names":80,"platforms":82,"primaryCategory":441,"rank30d":442,"releaseCount":443,"releaseStats":444,"screenshots":450,"sourceLocale":73,"sourceUrl":451,"summary":452,"summaryTranslation":453,"supports":454,"tags":456,"tap":461,"token":81,"version":78,"versionChangedAt":62},{"apps":5,"binaries":6,"entries":7,"pkgs":22},[],[],[8,15],{"declaration":9,"phase":13,"sources":14,"type":13},{"uninstall":10},[11],{"pkgutil":12},"com.oracle.jdk-27","uninstall",[],{"declaration":16,"phase":19,"sources":20,"type":21},{"pkg":17},[18],"JDK 27.pkg","install",[18],"pkg",[18],false,[25],{"icon":26,"machineTranslated":23,"name":27,"slug":28,"sourceLocale":29},"lucide:braces","Languages & Runtimes","languages","zh-CN","Installing oracle-jdk means you have AGREED to the license at:\n  https:\u002F\u002Fwww.oracle.com\u002Fdownloads\u002Flicenses\u002Fno-fee-license.html\n",{"casks":32,"formulae":33},[],[],{"arch":35,"casks":38,"formulae":39,"requirements":40},[36,37],"arm64","x86_64",[],[],{"macos":41},{},"Oracle JDK is Oracle’s implementation of the Java Standard Edition Development Kit. It supplies the Java runtime and development tools for building, running, debugging and monitoring Java applications; it is a developer runtime, not a standalone Mac desktop editor.\n\n## macOS installation\nOracle documents both Intel x64 and Apple-silicon AArch64 installations. Homebrew’s oracle-jdk cask installs a versioned Oracle DMG containing a JDK package. The recorded default artifact is the Apple-silicon JDK 27 installer. The JDK is installed under \u002FLibrary\u002FJava\u002FJavaVirtualMachines. Use `java -version` to check the default runtime and `\u002Fusr\u002Flibexec\u002Fjava_home` to select an installed JDK for command-line development.\n\n## Version selection and updates\nThe unversioned cask follows the current feature release; it is not a pinned long-term-support JDK. Oracle’s download page identifies JDK 27 as the latest feature release and JDK 25 as its latest LTS line. Installers allow only one update of the same feature-release family at a time: installing a newer update replaces the older one. Oracle advises stopping Java processes before replacing a JDK installation.\n\n## Licensing\nHomebrew links the Oracle No-Fee Terms and Conditions. Oracle states that JDK 27 binaries can be used in production and redistributed at no cost under these terms until March 2027, when JDK 28 supersedes this release. Licensing and support arrangements vary by release line; do not assume older Oracle JDK versions have identical production-use terms.\n\n## Visual assets\nThis package installs a JDK, not an application with a standalone editor window. The official macOS installation guide documents installer steps and terminal commands; no genuine JDK application screenshot or distinct raster app icon was established.\n\nSources:\n- https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\n- https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\n- https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\n","JDK from Oracle","Oracle","Oracle JDK","26b9066743fa14737ceea7edca42f7fde40651c64b8e1085865795bc588ca7e0",212297917,"https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-aarch64_bin.dmg","https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Foracle-jdk","https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F","brew install --cask oracle-jdk",{"d30":53,"d365":54,"d90":55},146,6233,703,"cask",{"bodyMarkdown":58,"brewCommittedAt":59,"hasNotes":60,"id":61,"isLatest":60,"isPrerelease":23,"machineTranslated":23,"publishedAt":62,"sections":63,"source":72,"sourceLocale":73,"summary":74,"title":75,"translation":76,"version":78},"Java Development Kit 27 Release Notes\nJDK 27 Release Notes\nPublication Date: 15 September 2026\nThe following sections are included in these Release Notes:\nJava™ SE Development Kit 27\nMajor New Functionality\nNew Features\nRemoved Features and Options\nNotable Issues Resolved\nOther Notes\nDifferences Between Oracle JDK and OpenJDK\nJava™ SE Development Kit 27\nThese notes describe important changes, enhancements, removed APIs and features, deprecated APIs and features, and\nother information about JDK 27. In some cases, the descriptions provide links to additional detailed\ninformation about an issue or a change. This page does not duplicate the descriptions provided by the\nJava SE 27 ( JSR 402) Platform Specification\n,\nwhich provides informative background for all specification changes and might also include the identification of\nremoved or deprecated APIs and features not described here. The Java SE 27 ( JSR 402) specification provides links to:\nAnnex 1:\nThe complete\nJava SE 27 API Specification\n.\nAnnex 2:\nAn\nannotated API specification\nshowing the exact differences between Java SE 26 and Java SE 27. Informative background for these changes may be\nfound in the list of approved Change Specification Requests for this release.\nAnnex 3:\nJava SE 27 Editions of\nThe Java Language Specification\nand\nThe Java Virtual Machine Specification\n.\nThe Java SE 27 Editions contain all corrections and clarifications made since the Java SE 26 Editions, as well\nas additions for new features.\nYou should be aware of the content in the Java SE 27 ( JSR 402) specification as well as the items described in this page.\nThe descriptions on this Release Notes page also identify potential compatibility issues that you might encounter\nwhen migrating to JDK 27. The\nKinds of Compatibility\npage on the OpenJDK wiki identifies the following three types of potential compatibility issues for Java programs that\nmight be used in these release notes:\nSource:\nSource compatibility preserves the ability to compile existing source code without error.\nBinary:\nBinary compatibility is defined in The Java Language Specification as preserving the ability to link\nexisting class files without error.\nBehavioral:\nBehavioral compatibility includes the semantics of the code that is executed at runtime.\nSee\nCSRs Approved for JDK 27\nfor the list of CSRs closed in JDK\n27 and the\nCompatibility & Specification Review (CSR)\npage on\nthe OpenJDK wiki for general information about compatibility.\nThe full version string for this release is build 27+35 (where \"+\" means \"build\"). The version number is 27.\nIANA Data 2026b\nJDK 27 contains IANA time zone data version 2026b. For more information, refer to\nTimezone Data Versions in Java Runtimes\n.\nTOP\nMajor New Functionality\n1. Language\n➜\nPrimitive Types in Patterns, instanceof, and switch (Fifth Preview)\nEnhance pattern matching by allowing primitive types in all pattern contexts,\nand extend\ninstanceof\nand\nswitch\nto work with all primitive types. This is a\npreview language feature\n.\nSee JEP 532\n2. Libraries\n➜\nLazy Constants (Third Preview)\nIntroduce an API for\nlazy constants\n, which are objects that hold unmodifiable data. Lazy constants are treated as true constants by the JVM, enabling the same performance optimizations that are enabled by declaring a field\nfinal\n. Compared to\nfinal\nfields, however, lazy constants offer greater flexibility as to the timing of their initialization. This is a\npreview API\n.\nSee JEP 531\n➜\nStructured Concurrency (Seventh Preview)\nSimplify concurrent programming by introducing an API for\nstructured concurrency\n. Structured concurrency treats groups of related tasks running in different threads as single units of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability. This is a\npreview API\n.\nSee JEP 533\n➜\nVector API (Twelfth Incubator)\nIntroduce an API to express vector computations that reliably compile at run\ntime to optimal vector instructions on supported CPUs, thus achieving\nperformance superior to equivalent scalar computations. This is an\nincubating\nAPI\n.\nSee JEP 537\n2.1 Security Libraries\n➜\nPost-Quantum Hybrid Key Exchange for TLS 1.3\nEnhance the security of Java applications that require secure network communication by implementing\nhybrid key exchange\nalgorithms for TLS 1.3. Such algorithms defend against future quantum computing attacks by combining a quantum-resistant algorithm with a traditional algorithm. Applications that use the\njavax.net.ssl\nAPIs will benefit from these improved algorithms by default, without change to existing code.\nSee JEP 527\n➜\nPEM Encodings of Cryptographic Objects (Third Preview)\nIntroduce an API for encoding objects that represent cryptographic keys, certificates, and certificate revocation lists into the widely-used\nPrivacy-Enhanced Mail\n(PEM) transport format, and for decoding from that format back into objects. This is a\npreview API\n.\nSee JEP 538\n3. Performance\n➜\nMake G1 the Default Garbage Collector in All Environments\nMake the Garbage-First (G1) garbage collector the default collector in all environments, rather than just server environments.\nSee JEP 523\n➜\nCompact Object Headers by Default\nMake compact object headers the default object header layout in the HotSpot JVM. Compact object headers reduce object headers from 96 bits down to 64 bits on 64-bit architectures, thereby reducing heap size, improving deployment density, and increasing data locality.\nSee JEP 534\n4. Monitoring\n➜\nJFR In-Process Data Redaction\nEnhance\nJDK Flight Recorder\n(JFR) to redact command-line arguments and the initial values of environment variables and system properties in recordings. Redact this data before it leaves the process, so that sensitive information does not leak.\nSee JEP 536\nTOP\nNew Features\nThis section describes some of the enhancements in Java SE 27 and JDK 27. In some cases, the descriptions provide\nlinks to additional detailed information about an issue or a change. The APIs described here are provided with\nthe Oracle JDK. It includes a complete implementation of the Java SE 27 Platform and additional Java APIs to\nsupport developing, debugging, and monitoring Java applications. Another source of information about important\nenhancements and new features in Java SE 27 and JDK 27 is the\nJava SE 27 ( JSR 402)\nPlatform Specification, which\ndocuments the changes to the specification made between Java SE 26 and Java SE 27. This document includes\ndescriptions of those new features and enhancements that are also changes to the specification. The descriptions\nalso identify potential compatibility issues that you might encounter when migrating to JDK 27.\ncore-libs\u002Fjava.lang.foreign\n➜\nAllow Execution State Initialization Before Foreign Function Downcalls\n(\nJDK-8378559\n)\nThe Foreign Function and Memory API now supports initializing the thread-local execution state before downcalls. This complements the preexisting call state capturing mechanism, which can already be used to read thread-local execution state after downcalls. The structure and contents of the execution state are platform-dependent and described by\nLinker.Option.captureStateLayout()\n.\nWhen call state capturing is enabled through\nLinker.Option.captureCallState(String... capturedState)\n, a memory segment acts as a buffer for the thread-local data. Prior to the downcall, the contents of the buffer are used to initialize thread-local data. Immediately after the downcall, the thread-local data is copied into the buffer.\nSee\nLinker.Option.captureCallState(String... capturedState)\nin the JavaDoc API documentation for further information and a usage example\ncore-svc\u002Ftools\n➜\nAdded Bash Autocompletion Script for the jcmd Tool\n(\nJDK-8357439\n)\nA Bash autocompletion script for the\njcmd\ndiagnostic tool has been added.\nOn Linux, to enable autocompletion, run\nsource \u003CJDK_HOME>\u002Fconf\u002Fbash-completion\u002Fjcmd\nat a Bash prompt. For system-wide availability, place the script in the\n\u002Fusr\u002Fshare\u002Fbash-completion\u002Fcompletions\u002F\ndirectory.\nhotspot\u002Fjfr\n➜\nAdded Help for -XX:FlightRecorderOptions\n(\nJDK-8367584\n)\nThe JVM option\n-XX:FlightRecorderOptions\nhas been extended with a\nhelp\noption that lists the available suboptions. Usage:\njava -XX:FlightRecorderOptions:help\nhotspot\u002Fjfr\n➜\nAdded -XX:FlightRecorderOptions:redact-key and redact-argument Options\n(\nJDK-8367584\n)\nStarting with JDK 27, JFR redacts sensitive command-line arguments and the initial values of environment variables and system properties by default. You can explicitly select the information that JFR should redact by adding application-specific filters with\n-XX:FlightRecorderOptions:redact-key=+\u003Cfilter>\nand\n-XX:FlightRecorderOptions:redact-argument=+\u003Cfilter>\n.\nUse\n-XX:FlightRecorderOptions:redact-key=none,redact-argument=none\nto disable the default redaction filters.\nSee\nJEP 536: JFR In-Process Data Redaction\nfor more information.\nhotspot\u002Fruntime\n➜\n-XX:AOTMode=required as alias for -XX:AOTMode=on\n(\nJDK-8374348\n)\nThe JVM option\n-XX:AOTMode=required\nhas been added as an alias to\n-XX:AOTMode=on\nin order to clarify the purpose and effects of this option.\n-XX:AOTMode=required\nshould be used instead of\n-XX:AOTMode=on\n, which will be eventually be deprecated and removed.\nhotspot\u002Fsvc\n➜\nNew jcmd Command VM.security_properties Displays Active Security Properties at Runtime\n(\nJDK-8364182\n)\nA new diagnostic command,\nVM.security_properties\n, has been added to the\njcmd\ntool. This command prints the current set of Java security properties for a running JVM process, similar to the existing\nVM.system_properties\ncommand for system properties. This enhancement provides an easy and scriptable way to diagnose and troubleshoot security-related configuration issues in production and development environments.\nhotspot\u002Fsvc\n➜\nVM.info and hs_err_pid Logs Now Report Current Open File Descriptors\n(\nJDK-8359706\n)\nThe output of the\njcmd\nVM.info\ndiagnostic command and HotSpot fatal error logs (\nhs_err_pid\n) now include the current number of open file descriptors for the running Java process. On supported platforms, the new output displays the active file descriptor count in the\nSYSTEM\nsection (for example,\nOpen File Descriptors: 52\n). This enhancement helps diagnose and troubleshoot resource exhaustion and\nToo many open files\nissues on UNIX platforms.\nNote that the maximum file descriptor limit for the process is already reported in the same output as the\nNOFILE\nvalue (for example,\nNOFILE 10240\u002Finfinity\n).\nsecurity-libs\u002Fjava.security\n➜\nAdded the Security Property jdk.security.password.allowSystemIn to Restrict the Java Platform from Reading from the Standard Input Stream\n(\nJDK-8368692\n)\nA new security property,\njdk.security.password.allowSystemIn\n, has been added to control whether the Java platform can read passwords from the standard input stream if a console is not available. This typically occurs when standard input is redirected from a redirected file or connected to an interprocess pipe. If the property is set to\nfalse\n, then attempting to read passwords from the standard input stream without a console throws an exception. The default value is\ntrue\n. This default may change in a future release.\nThe property applies to tools that prompt for passwords such as\nkeytool\nand\njarsigner\nas well as\nPasswordCallback\nobjects processed by\nTextCallbackHandler\n.\nsecurity-libs\u002Fjava.security\n➜\nNew KeyStore and KeyStoreSpi Methods to Retrieve Creation Date as an Instant\n(\nJDK-8374808\n)\nNew methods have been added to the\nKeyStore\nand\nKeyStoreSpi\nclasses that return the creation dates of alias entries as\njava.time.Instant\nvalues:\nKeyStore.getCreationInstant\nand\nKeyStoreSpi.engineGetCreationInstant\n.\nsecurity-libs\u002Fjava.security\n➜\nAdded Support for the Latest ML-KEM and ML-DSA Private Key Encodings\n(\nJDK-8347938\n)\nThe JDK now encodes ML-KEM and ML-DSA private keys in PKCS #8 format using the DER-encoded ASN.1 CHOICE formats defined in\nSection 6, \"Private Key Format\"\nof RFC 9935 and\nSection 6, \"Private Key Format\"\nof RFC 9881. Two new security properties,\njdk.mlkem.pkcs8.encoding\nand\njdk.mldsa.pkcs8.encoding\n, control the encoding used when generating new keys with a\nKeyPairGenerator\nor when translating keys with a\nKeyFactory\n. Valid values are\nseed\n,\nexpandedKey\n, and\nboth\n(case-insensitive). If a system property of the same name is also specified, it supersedes the security property value. All three formats are supported when decoding previously encoded private keys with a\nKeyFactory\n.\nWhen these algorithms were introduced in JDK 24, the encoding format was equivalent to the\nexpandedKey\nvalue. This release changes the default value to\nseed\n. As a result, ML-KEM and ML-DSA private keys generated by this JDK release will not be accepted by older releases by default, although keys generated by older releases are still readable by this release. To enable older JDK releases to accept ML-KEM and ML-DSA private keys generated by this JDK release, set the\njdk.mlkem.pkcs8.encoding\nor\njdk.mldsa.pkcs8.encoding\nproperty (whichever property is relevant to your use case) to\nexpandedKey\n, and use\nKeyFactory.translateKey\nto convert the key to the older format.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nAdded Support for ZLIB TLS Certificate Compression\n(\nJDK-8372526\n)\nThe JDK now supports TLS 1.3 certificate compression with the\nzlib\ncompression algorithm as specified in\nRFC 8879\n. This feature can reduce the size of certificate chains exchanged during TLS handshakes. The\nbrotli\nand\nzstd\ncompression algorithms are not supported.\nTLS certificate compression is enabled by default. To disable it, add the\ncompress_certificate\nextension to the\njdk.tls.client.disableExtensions\nand\njdk.tls.server.disableExtensions\nsystem properties. For example, the following Java command-line options disable TLS certificate compression for both the client and the server:\n-Djdk.tls.client.disableExtensions=compress_certificate -Djdk.tls.server.disableExtensions=compress_certificate\nTOP\nRemoved Features and Options\nThis section describes the APIs, features, and options that were removed in Java SE 27 and JDK 27. The APIs described\nhere are those that are provided with the Oracle JDK. It includes a complete implementation of the Java SE 27 Platform\nand additional Java APIs to support developing, debugging, and monitoring Java applications. Another source of\ninformation about important enhancements and new features in Java SE 27 and JDK 27 is the\nJava SE 27 ( JSR 402)\nPlatform Specification, which\ndocuments changes to the specification made between Java SE 26 and Java SE 27. This document includes the\nidentification of removed APIs and features not described here. The descriptions below might also identify\npotential compatibility issues that you could encounter when migrating to JDK 27.\nSee\nCSRs Approved for JDK 27\nfor the list of CSRs closed in JDK 27.\ncore-libs\u002Fjava.lang\n➜\nRemoved VFORK Launch Mechanism from Process Implementation (Linux)\n(\nJDK-8357089\n)\nOn Linux, the\n-Djdk.lang.Process.launchMechanism=VFORK\ncommand-line option has been removed because the\nVFORK\nlaunch mechanism is inherently dangerous. Customers should stop using it and instead either rely on the default\nPOSIX_SPAWN\nlaunch mechanism or replace it with\n-Djdk.lang.Process.launchMechanism=FORK\n.\ncore-libs\u002Fjava.util.concurrent\n➜\nRemoved ThreadPoolExecutor.finalize()\n(\nJDK-8371748\n)\nThe\nfinalize()\nmethod has been removed from\njava.util.concurrent.ThreadPoolExecutor\n.\nThreadPoolExecutor.finalize()\nwas deprecated in JDK 9 as part of deprecating finalization for removal. See\nJEP 421\n. The method was re-specified in JDK 11 to \"do nothing\" and deprecated for removal in JDK 18.\nThe removal of this method means that any existing code that extends\nThreadPoolExecutor\nand overrides\nfinalize()\nto call\nsuper.finalize()\n(or calls\nfinalize()\ndirectly) will now call\nObject.finalize()\n. Such code might no longer compile because\nObject.finalize()\ndeclares\nthrows Throwable\n, whereas the removed\nThreadPoolExecutor.finalize()\nmethod declared no checked exceptions. Developers are strongly encouraged to stop using finalization. If necessary, however, the source compatibility issue can be worked around by using with a\ntry\n-\ncatch\nblock.\ncore-libs\u002Fjava.util:i18n\n➜\nRemoval of the\njava.locale.useOldISOCodes\nSystem Property\n(\nJDK-8355522\n)\nSupport for the\njava.locale.useOldISOCodes\nsystem property in the\njava.util.Locale\nclass has been removed. Originally introduced in JDK 17, this property allowed applications to revert to legacy ISO 639 language codes (\niw\nfor Hebrew,\nji\nfor Yiddish, and\nin\nfor Indonesian). It was deprecated in JDK 25 and, starting with JDK 27, specifying this property has no effect and triggers a warning at runtime. Users who still rely on the old codes are encouraged to transition to the current standard codes:\nhe\nfor Hebrew,\nyi\nfor Yiddish, and\nid\nfor Indonesian.\ncore-libs\u002Fjavax.naming\n➜\njava.naming.factory.control, java.naming.factory.object and java.naming.factory.state Standard JNDI Properties Are No Longer Set by Default by the LDAP Service Provider in the JDK\n(\nJDK-8296183\n)\nThe JNDI\u002FLDAP service provider, belonging to the\njava.naming\nmodule in the JDK, will no longer have any values set by default for the\njava.naming.factory.control\n,\njava.naming.factory.object\nand\njava.naming.factory.state\nstandard JNDI properties.\nThese standard JNDI properties that specify lists of JNDI factories were previously being set by the LDAP service provider to class names of classes that did not belong to the JDK. Those classes may have been part of the application classpath. With this change, such applications will no longer see those factories being used.\nApplications that may have been relying on these three JNDI properties being set by the LDAP service provider are expected to set these values themselves as described in the section\nProvider Resource Files Link icon\nin\njavax.naming.Context\n.\nglobalization\u002Ftranslation\n➜\nRemove Obsolete Translation Resources\n(\nJDK-8381436\n)\nObsolete localized resource have been removed from the JDK source repository.\nThe JDK includes localized resource files for a number of components. However, apart from English, Japanese, German, and Simplified Chinese, the other localized resource files are unmaintained. Over time, these files are falling out of sync with their English counterparts. For example, in builds that include these unmaintained resource files, the output of the\njava\nlauncher's\n--help\noption would not contain information for\n--enable-preview\nin unmaintained languages.\nThese localized resource files have been removed. The exception to this change is the\njava.desktop\nmodule, whose unmaintained localized resource files will remain available. As a result, users of builds that previously exposed messages in an unmaintained language may see English output instead.\nhotspot\u002Fcompiler\n➜\nRemoval of the JVM Compiler Interface (JVMCI)\n(\nJDK-8382582\n)\nThe experimental JVM Compiler Interface (JVMCI) has been removed in this release. These changes include the removal of JVMCI code from the HotSpot JVM; modules\njdk.internal.vm.ci\n,\njdk.graal.compiler\n, and\njdk.graal.compiler.management\n; JVMCI-specific JIT-compilation policies; configure feature-selection flags; and all flags containing the string\nJVMCI\nas well as\n-XX:+UseGraalJIT\n.\ntools\u002Flauncher\n➜\nRemoval of -noclassgc, -noverify, -verifyremote and -Xverify:none Options\n(\nJDK-8373481\n)\nThe\njava\nlauncher options\n-noclassgc\n,\n-noverify\n,\n-verifyremote\n, and the\n-Xverify:none\nHotSpot VM option which had been deprecated, have been removed.\nApplications that were using\n-noclassgc\nwhen launching\njava\nmay consider using its equivalent\n-Xnoclassgc\ninstead. Similarly, applications that were using\n-verifyremote\nmay consider using\n-Xverify:remote\ninstead.\nThere's no replacement for the\n-noverify\nor\n-Xverify:none\noptions, and applications should no longer use them.\nTOP\nNotable Issues Resolved\ncore-libs\u002Fjava.util:i18n\n➜\nTimeZone.getDefault() Returns Obsolete ID on Windows (Asia\u002FCalcutta)\n(\nJDK-8377013\n)\nThe default time zone returned by\nTimeZone.getDefault()\non Windows now reflects the latest IANA TZ database IDs, aligning with current IANA definitions. Previously, for some regions, such as India, the method returned obsolete IDs (for example, \"Asia\u002FCalcutta\"), but it now correctly returns the current IDs (for example, \"Asia\u002FKolkata\").\nhotspot\u002Fgc\n➜\nChange the Default Values of MinHeapFreeRatio and MaxHeapFreeRatio for G1\n(\nJDK-8238686\n)\nThe G1 garbage collector changes the default values of the\n-XX:MinHeapFreeRatio\nand\n-XX:MaxHeapFreeRatio\noptions from 40 and 70 to 0 and 100, respectively. As a result, G1 heap resizing due to these constraints is effectively disabled by default.\nThe previous default values could trigger heap expansion or shrinkage after a Full GC, potentially causing unnecessary heap resizing. In particular, for applications that frequently invoke\nSystem.gc()\n, a Full GC could change the heap size because of these options, and the regular heap sizing algorithm could immediately undo these modifications.\nApplications that explicitly set\n-XX:MinHeapFreeRatio\nor\n-XX:MaxHeapFreeRatio\nretain the heap resizing behavior based on their specified settings.\nTOP\nOther Notes\nThe following notes describe additional changes and information about this release. In some cases, the following\ndescriptions provide links to additional detailed information about an issue or a change.\ncore-libs\u002Fjava.net\n➜\nBehavior Change of HttpServer from String Prefix Matching to Path Prefix Matching\n(\nJDK-8272758\n)\nThe behavior of the JDK built-in\ncom.sun.net.httpserver.HttpServer\nimplementation, when matching an incoming request path to an\nHttpContext\npath, is switched from\nstring prefix matching\nto\npath prefix matching\n. This means the request path must begin with the context path, and all matching path segments must be identical. For instance, the context path\n\u002Ffoo\nwould match request paths\n\u002Ffoo\n,\n\u002Ffoo\u002F\n, and\n\u002Ffoo\u002Fbar\n, but not\n\u002Ffoobar\n. The old behavior,\nstring prefix matching\n, can be enabled using the newly introduced\nsun.net.httpserver.pathMatcher\nsystem property. This property and the ability to restore the old behavior may be removed in a future release.\ncore-libs\u002Fjava.time\n➜\nPredefined ISO-8601 Formatters Support Short Zone Offsets\n(\nJDK-8210336\n)\nPredefined ISO-8601 based formatters in the\nDateTimeFormatter\nclass that accept zone offsets (for example,\nISO_DATE\n) now support short zone offsets for parsing. In previous releases, parsing offsets without seconds or nanoseconds (for example,\n+01\n) resulted in a\nDateTimeParseException\nwith some ISO formatters. These offsets are now parsed successfully by all predefined ISO formatters that accept zone offsets.\ncore-libs\u002Fjava.util\n➜\nServiceLoader Changed to Throw ServiceConfigurationError When a Linkage Error Is Encountered\n(\nJDK-8196182\n)\nServiceLoader\nhas been changed so that iteration over service providers now consistently throws\nServiceConfigurationError\nwhen\nNoClassDefFoundError\nor other linkage errors are encountered.\nServiceConfigurationError\nis also thrown when consuming a stream of service providers and a linkage error is encountered.\ncore-libs\u002Fjava.util.jar\n➜\nGZIPInputStream Restores Pre-JDK 23 Read-Ahead Behavior\n(\nJDK-8385924\n)\nTo determine whether additional GZIP members follow the current member,\njava.util.zip.GZIPInputStream\nchecks for another member after reading the current member's trailer.\nIn releases prior to JDK 23,\nGZIPInputStream\ncalled\nInputStream.available()\non the underlying stream before attempting to read the next member header. JDK 23 changed this behavior (see\nJDK-7036144\n) to skip the\navailable()\ncall and instead attempt the read directly.\nBecause this change introduced compatibility issues for some applications,\nGZIPInputStream\nhas been restored to its pre-JDK 23 behavior. It once again calls\nInputStream.available()\nbefore attempting to read the next member header.\nA new system property,\njdk.util.gzip.tryReadAheadAfterTrailer\n, has been added. Setting this property to\ntrue\nrestores the pre-JDK 23 behavior:\nGZIPInputStream\nattempts to read the next member header without first calling\nInputStream.available()\n. This property is intended for applications that depend on that behavior.\ncore-libs\u002Fjava.util.jar\n➜\nZipOutputStream.putNextEntry Now Throws ZipException When an Entry Name or Comment Cannot Be Encoded\n(\nJDK-8380452\n)\nZipOutputStream.putNextEntry\nnow throws\nZipException\nwhen a\nZipEntry\nname or comment string contains unmappable characters and cannot be encoded using the charset of the\nZipOutputStream\n.\nBefore this release, an unmappable name would cause\nZipOutputStream.putNextEntry\nto throw an\nIllegalArgumentException\n. Similarly, an unmappable comment would cause an\nIllegalArgumentException\nto be thrown from\nZipOutputStream.finish\nor\nZipOutputStream.close\n.\nAny code catching\nIllegalArgumentException\nfor such format errors should be updated to instead catch the specified\nZipException\n.\ncore-libs\u002Fjava.util:collections\n➜\nNullPointerException Thrown for Empty TreeMap and TreeSet Subsets from Spliterator and Stream\n(\nJDK-8376698\n)\nEmpty subsets of\nTreeMap\nand\nTreeSet\nnow throw\nNullPointerException\nwhen passing a null action to\nStream.forEach\n,\nSpliterator.forEachRemaining\nor\nSpliterator.tryAdvance\n. In prior releases, implementations of\nSpliterator\nand\nStream\nfor subsets of\nTreeMap\nand\nTreeSet\nreturned\nfalse\nor completed normally when passed a null action if the subset was empty, instead of throwing\nNullPointerException\nas required by the specification.\ncore-libs\u002Fjava.util:i18n\n➜\nSupport for CLDR Version 48.2\n(\nJDK-8371842\n)\nThe locale data based on the Unicode Consortium's CLDR has been upgraded to version 48.2. Besides the usual addition of new locale data and translation changes, there are notable changes from the upstream CLDR, affecting Date\u002FTime\u002FNumber formats:\nCLDR-19106\nUnreadable date + times in zh_Hant and yue\nCLDR-13986\nfr_CH: Formatting should be CHF XXX'XXX.00 in my opinion\nCLDR-19280\nBC moving to permanent DST\nNote that locale data is subject to change in a future release of the CLDR. Although not all locale data changes affect the JDK, users should not assume stability across releases. For more information, see the\nUnicode Consortium's CLDR release notes\nand search\nhttps:\u002F\u002Funicode-org.atlassian.net\nfor locale data deltas.\ncore-libs\u002Fjavax.naming\n➜\nThread Delivering Implementations of javax.naming.event.NamingEvent Will Use the System ClassLoader for its Context Class Loader\n(\nJDK-8273874\n)\nThe\nThread\ndelivering events to implementations of\njavax.naming.event.NamingListener\n, enrolled with a\njavax.naming.ldap.LdapContext\n, will now have its thread context class loader (see\nThread.getContextClassLoader\n) set to the system class loader. See\nRun-time Built-in Class Loaders\n.\ncore-svc\u002Fjava.lang.management\n➜\nThe JSON Format Thread Dump Now Generates Thread Identifiers, Thread Counts, and the Process Identifier as Numbers\n(\nJDK-8381002\n)\nThe JSON format thread dump generated by\ncom.sun.management.HotSpotDiagnosticMXBean.dumpThreads\n, and the\njcmd\nThread.dump_to_file\ncommand, now generate the JSON values for thread identifiers, thread counts, and the process identifier as numbers, for example,\n{ \"tid\": 3, ...  }\n. The values were previously generated as strings. Programs that parse the JSON format thread dump may need to be updated.\nAs part of the change, the\nthreadDump\nobject now has a member named\nformatVersion\nfor the thread dump format (with a value of 2), which will be updated as the thread dump format evolves.\ncore-svc\u002Fjava.lang.management\n➜\nThe RuntimeMXBean.getInputArguments() Method Now Adds the -XX Prefix for Arguments from a Settings File\n(\nJDK-8378110\n)\nRuntimeMXBean.getInputArguments()\nnow adds the\n-XX:\nprefix for arguments passed through a settings file.\nRuntimeMXBean.getInputArguments()\nreturns arguments passed on the command line as well as any given through settings files (\n-XX:Flags=\u003Cpath>\n). Previously, arguments from a settings file were returned without the\n-XX:\nprefix, for example,\n+UseG1GC\n. Now, these arguments are returned with the\n-XX:\nprefix, for example,\n-XX:+UseG1GC\n.\nhotspot\u002Fgc\n➜\nRename -XX:InitiatingHeapOccupancyPercent to -XX:G1IHOP\n(\nJDK-8227106\n)\nThe command line option\n-XX:InitiatingHeapOccupancyPercent\nhas been renamed to\n-XX:G1IHOP\nto reflect its usage with the G1 garbage collector.\nThe old option\n-XX:InitiatingHeapOccupancyPercent\nis still available for backward compatibility; this alias is now deprecated.\nhotspot\u002Fjfr\n➜\nJFR jdk.SystemProcess Event No Longer Emits Command-Line Arguments\n(\nJDK-8384164\n)\nTo avoid leaking sensitive information from processes running on the same computer, the\njdk.SystemProcess\nevent no longer emits command-line arguments. The process ID and the name of the process are still part of the event, which is typically sufficient for troubleshooting.\nhotspot\u002Fjfr\n➜\nJFR Event jdk.OldObjectSample Disabled for Generational ZGC\n(\nJDK-8382740\n)\nThe JFR event\njdk.OldObjectSample\nis disabled when using generational ZGC.\nThe combination results in unacceptable performance overhead because the implementation relies on weak handles that, in generational ZGC, are processed only in the old generation.\nhotspot\u002Fruntime\n➜\nCompact Object Headers Are Enabled by Default\n(\nJDK-8360700\n)\nCompact Object Headers was introduced in JDK 24 through\nJEP 450\n. This feature is now enabled by default, which reduces the Java heap footprint of applications and potentially improves performance.\nYou can still disable this feature with the\n-XX:-UseCompactObjectHeaders\nflag, which is planned for deprecation and removal in a future release.\nThe CDS archives for the JDK image,\nclasses_coh.jsa\nand\nclasses_nocoops_coh.jsa\n, provide equivalent startup performance and are configured with the default\nUseCompactObjectHeaders\nturned on. Alternate CDS archives are provided if the feature is turned off.\nhotspot\u002Fruntime\n➜\nThe UseCompressedClassPointers Option Is Now Obsolete\n(\nJDK-8363996\n)\nThe HotSpot JVM option\nUseCompressedClassPointers\nwas deprecated in JDK 25 and is now obsolete in JDK 27. If you use this option on the Java command line, either to use compressed class pointer mode or uncompressed class pointer mode, you will get a warning:\nIgnoring option UseCompressedClassPointers; support was removed in 27.0\n.\nThe JVM now always compresses class pointers in Java objects.\nhotspot\u002Fsvc-agent\n➜\nRemove Serviceability Agent Support for Printing MethodData and the printmdo Command\n(\nJDK-8377797\n)\nThe Serviceability Agent (SA)\nprintmdo\ncommand has been removed. The 'printmdo' is a subcommand of the\nclhsdb\ntool used for displaying\nMethodData\n, which is JVM internal compiler information.\nsecurity-libs\u002Fjava.security\n➜\nAdded WISeKey Global GB and GC Root CA Certificates\n(\nJDK-8372351\n)\nThe following root certificates have been added to the\ncacerts\ntruststore:\n+ WISeKey\n\n  + wisekeyglobalrootgbca\n    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\n\n+ WISeKey\n  + wisekeyglobalrootgcca\n    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\nsecurity-libs\u002Fjava.security\n➜\nAdditional Parameter Sets for HSS\u002FLMS\n(\nJDK-8369917\n)\nThe HSS\u002FLMS signature algorithm now supports the additional parameter sets defined in\nRFC 9858\n, in addition to those originally defined in\nRFC 8554\n. These new parameter sets can produce smaller signatures.\nsecurity-libs\u002Fjava.security\n➜\nLimiting the Size of Certificate Revocation List (CRL) Downloads\n(JDK-8381796 (not public))\nA new system and security property,\ncom.sun.security.crl.maxSize\n, has been added to limit the maximum length of a CRL that is downloaded through URIs in the CRL Distribution Points certificate extension during path validation. The value of these properties is the size in bytes of the DER-encoded CRL. For protocols that can return multivalue responses, such as LDAP, the size threshold is the sum of all CRLs downloaded from a single search query. CRLs that exceed this length will not be processed during certificate path validation. This size limit does not apply to CRLs that are imported through non-network-based means. A negative value disables this size limitation. A non-numeric value will be ignored, and the default size will be used instead. The default size limit is 20 MiB. For cases where both the security and system properties are set, the system property takes precedence. Enabling certificate path logging by setting\njava.security.debug=certpath\nwill output the current size limit and note any discarded CRLs.\nsecurity-libs\u002Fjavax.crypto\n➜\nSignificant Performance Gains in X25519 Key Agreement and Ed25519 Signature Algorithms\n(\nJDK-8378893\n)\nCurve25519 field operations have been optimized in this release, which has resulted in noticeable performance improvements for X25519 key generation and key agreement, and for Ed25519 key generation and signing.  As a result, the following gains were measured:\nAArch64 architecture\nX25519 key generation: +55%\nX25519 key agreement: +51%\nTLS handshake with X25519 - resumption: +36%\nTLS handshake with X25519 - no resumption: +17%\nEd25519 key generation: +48%\nEd25519 signing: +49%\nx86_64 architecture\nX25519 key generation: +50%\nX25519 key agreement: +50%\nTLS handshake with X25519 - resumption: +28%\nTLS handshake with X25519 - no resumption: +14%\nEd25519 key generation: +46%\nEd25519 signing: +46%\nThe following benchmarks were used to measure performance:\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KeyAgreementBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.JSSE_DHasKEM\nmicro:org.openjdk.bench.java.security.SSLHandshake\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.EdDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.EdDSA\nsecurity-libs\u002Fjavax.crypto\n➜\nSignificant Performance Gains in ML-KEM and ML-DSA Algorithms\n(\nJDK-8384353\n)\nSHA-3 intrinsics have been optimized in this release for x86_64 systems that support AVX-512.  The ML-KEM and ML-DSA algorithms extensively use SHA-3.  This has resulted in noticeable performance improvements for ML-KEM in key generation, decapsulation, and encapsulation, and ML-DSA key generation, signing, and verification as follows:\nAVX-512\nML-KEM\nkey generation: +48%\nML-KEM\ndecapsulation: +47%\nML-KEM\nencapsulation: +46%\nML-DSA\nkey generation: +60%\nML-DSA\nsigning: +38%\nML-DSA\nverification: +74%\nThe following benchmarks were used to measure performance:\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.MLDSA\nsecurity-libs\u002Fjavax.net.ssl\n➜\nRemoval of ffdhe6144 and ffdhe8192 from the Default List of TLS Named Groups\n(\nJDK-8373426\n)\nffdhe6144 and ffdhe8192 were removed from the default list of TLS named groups, as they are almost never used in practice and require additional host resources to process. You can add them to the default list of named groups by setting the system property\njdk.tls.namedGroups\nor by calling the\nSSLParameters.setNamedGroups\nmethod when configuring a TLS socket connection.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nEnforcement Of Valid javax.net.debug Option Combinations In TLS\n(\nJDK-8044609\n)\nThe parsing of the\njavax.net.debug\nsystem property for TLS\u002FSSL debug logging has been updated to strictly enforce documented option and suboption relationships. Suboptions such as\nverbose\n,\npacket\n, and\nplaintext\nnow require their respective parent options, and only valid combinations have an effect. Invalid or unsupported combinations are silently ignored.\nPreviously, some suboptions could be used independently or in incorrect combinations, contrary to the intended design. The help message (\n-Djavax.net.debug=help\n) has also been updated to accurately reflect all supported and obsolete entries.\nUsers who previously relied on undocumented or invalid combinations (for example, specifying only\n-Djavax.net.debug=verbose\n) will need to update their configurations to match the documented usage. Please refer to the updated help output for the current list of valid options and examples of correct usage.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nTLS 1.3 Key Agreement Now Uses the Generic Key Algorithm\n(\nJDK-8377550\n)\nTLS 1.3 key agreement has been changed to use the\nGeneric\nkey algorithm for Diffie-Hellman shared secrets instead of the\nTlsPremasterSecret\nalgorithm. This implementation detail should be transparent to the users of the SunJSSE provider. Users of JCE providers that do not support\nGeneric\nkeys may observe TLS 1.3 handshakes failing with an\nSSLHandshakeException\nwith the message \"Could not generate secret\".\nIn case of compatibility issues, the original behavior can be restored by setting the system property\njdk.tls.t13KeyDerivationAlgorithm\nto\nTlsPremasterSecret\n.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nPost-Quantum Hybrid Key Exchange for TLS 1.3\n(\nJDK-8314323\n)\nHybrid key exchange algorithms for TLS 1.3 have been implemented, enhancing the security of Java applications that require secure network communication. These algorithms defend against future quantum computing attacks by combining a quantum-resistant algorithm with a traditional algorithm. Applications that use the\njavax.net.ssl\nAPIs will benefit from these improved algorithms by default, without requiring any code changes.\nThe following three new hybrid key exchange algorithms are supported:\nX25519MLKEM768\n,\nSecP256r1MLKEM768\n, and\nSecP384r1MLKEM1024\n. Of these, only\nX25519MLKEM768\nis placed at the front of the default named groups list, making it the most preferred group.\nFor more details, see\nJEP 527: Post-Quantum Hybrid Key Exchange for TLS 1.3\n.\ntools\u002Fjavac\n➜\nJava Launcher No Longer Allows Inheriting a Package-Private main Method from Another Package\n(\nJDK-8377004\n)\nThe\njava\nlauncher now correctly determines which\nmain\nmethod to invoke when a package-private\nmain\nmethod is defined in a different package from the class being launched. The\njava\nlauncher no longer invokes such a\nmain\nmethod.\ntools\u002Fjavac\n➜\nAST Model for var Variables Adheres More Closely to Source Code\n(\nJDK-8268850\n)\nThe Compiler Tree API, which models Java source code with abstract trees (ASTs), has been changed to more precisely model variables with inferred types. See\ncom.sun.source.tree.VariableTree.getType()\nfor more information.\ntools\u002Fjavac\n➜\nDocTrees.getElement Is Now More Consistent with the javax.lang.model API\n(\nJDK-8284315\n)\nThe implementation of\nDocTrees.getElement(DocTreePath)\nhas been updated to align more closely with the\njavax.lang.model\nAPI. In particular, the method now returns\nnull\nwhen the argument refers to a primitive or array type. Previously, it returned an invalid\nTypeElement\nfor primitive types and the component type for array types.\nYou can use\nDocTrees.getType(DocTreePath)\nto obtain valid\nTypeMirror\ninstances for\nDocTreePath\ninstances referring to primitive or array types.\ntools\u002Fjavac\n➜\nThe Java Compiler Now Correctly Rejects Characters That Appear in Source Code After an ASCII SUB Character\n(\nJDK-8371873\n)\njavac\nnow enforces JLS rules for trailing ASCII SUB (\nU+001A\n, control-Z) characters in source files. If\nU+001A\nappears and any additional characters follow it, then those trailing characters are no longer silently ignored; they are treated as illegal input.\ntools\u002Fjavac\n➜\nTYPE_USE Annotations on a var Lambda Parameter Are Rejected\n(\nJDK-8371683\n)\nType annotations—in particular, annotations that have\n@Target(TYPE_USE)\nand are not applicable for local variables and parameter declarations—will now be consistently rejected for all variables with inferred types (that is, using\nvar\n). This includes lambda parameters and for-each variables.\ntools\u002Fjavadoc(tool)\n➜\nThe javadoc Tool Copies Subdirectories of doc-files by Default\n(\nJDK-8347112\n)\nThe\njavadoc\ntool now recursively copies subdirectories of\ndoc-files\ndirectories to the generated output. The\n-docfilessubdirs\noption, which was previously used to enable this behavior, is no longer required and may be removed in a future release.\nThe\n-excludedocfilessubdir\noption now supports\n*\nas an argument to exclude all\ndoc-files\nsubdirectories from being copied, thereby restoring the previous default behavior.\nTOP\nDifferences Between Oracle JDK and OpenJDK\nAlthough we have stated the goal to have Oracle JDK and OpenJDK binaries be as close to each other as possible, there remain several differences between the two options.\nThe current differences are:\nOracle JDK offers \"installers\" (\nmsi\n,\nrpm\n,\ndeb\n, etc.) which not only place the JDK binaries in your system but also contain update rules and in some cases handle some common configurations like set common environmental variables (such as, JAVA_HOME in Windows) and establish file associations (such as, use\njava\nto launch\n.jar\nfiles). OpenJDK is offered only as compressed archive (\ntar.gz\nor\n.zip\n).\nUsage Logging is only available in Oracle JDK.\nOracle JDK requires that third-party cryptographic providers be signed with a Java Cryptography Extension (JCE) Code Signing Certificate. OpenJDK continues allowing the use of unsigned third-party crypto providers.\nThe output of\njava -version\nis different. Oracle JDK returns java and includes the Oracle-specific identifier. OpenJDK returns OpenJDK and does not include the Oracle-specific identifier.\nOracle JDK will be released under the\nOracle No-Fee Terms and Conditions License\n. OpenJDK is released under\nGPLv2wCP\n. License files included with each will therefore be different.\nOracle JDK distributes FreeType under the FreeType license and OpenJDK does so under GPLv2. The contents of\n\\legal\\java.desktop\\freetype.md\nis therefore different.\nOracle JDK has Java cup and steam icons and OpenJDK has Duke icons.\nOracle JDK source code includes \"ORACLE PROPRIETARY\u002FCONFIDENTIAL. Use is subject to license terms.\" Source code distributed with OpenJDK refers to the GPL license terms instead.\n\nOfficial source: https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjavase\u002F27-relnote-issues.html\n","2026-09-15T16:50:12Z",true,3527,"2026-10-07T09:38:40.131182Z",[64],{"area":65,"items":66},"Features",[67,68,69,70,71],"Post-quantum hybrid key exchange for TLS 1.3.","Compact object headers enabled by default.","G1 becomes the default garbage collector in all environments.","JFR redacts sensitive data before it leaves the process.","Primitive pattern matching remains a preview feature.","editorial","en-US","JDK 27 introduces post-quantum hybrid TLS key exchange, compact object headers by default, universal G1 defaults and JFR in-process data redaction.","",{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},"source","27","Oracle Java Standard Edition Development Kit",[79,81],"oracle-jdk",[83,110,135,161,186,212,237,263,288,314,339,365,390,416],{"arch":37,"artifacts":84,"conflictsWith":98,"dependsOn":101,"downloadSha256":107,"downloadUrl":108,"macos":78,"requiresRosetta":23,"tag":109,"version":78},{"apps":85,"binaries":86,"entries":87,"pkgs":97},[],[],[88,93],{"declaration":89,"phase":13,"sources":92,"type":13},{"uninstall":90},[91],{"pkgutil":12},[],{"declaration":94,"phase":19,"sources":96,"type":21},{"pkg":95},[18],[18],[18],{"casks":99,"formulae":100},[],[],{"arch":102,"casks":103,"formulae":104,"requirements":105},[37],[],[],{"macos":106},{},"4f875ea6a8c198f42ada6aa9adafe9cc670cf6cb2c5fdd59e5158679c21efef2","https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-x64_bin.dmg","golden_gate",{"arch":36,"artifacts":111,"conflictsWith":125,"dependsOn":128,"downloadSha256":46,"downloadUrl":48,"macos":78,"requiresRosetta":23,"tag":134,"version":78},{"apps":112,"binaries":113,"entries":114,"pkgs":124},[],[],[115,120],{"declaration":116,"phase":13,"sources":119,"type":13},{"uninstall":117},[118],{"pkgutil":12},[],{"declaration":121,"phase":19,"sources":123,"type":21},{"pkg":122},[18],[18],[18],{"casks":126,"formulae":127},[],[],{"arch":129,"casks":130,"formulae":131,"requirements":132},[36],[],[],{"macos":133},{},"arm64_golden_gate",{"arch":37,"artifacts":136,"conflictsWith":150,"dependsOn":153,"downloadSha256":107,"downloadUrl":108,"macos":159,"requiresRosetta":23,"tag":160,"version":78},{"apps":137,"binaries":138,"entries":139,"pkgs":149},[],[],[140,145],{"declaration":141,"phase":13,"sources":144,"type":13},{"uninstall":142},[143],{"pkgutil":12},[],{"declaration":146,"phase":19,"sources":148,"type":21},{"pkg":147},[18],[18],[18],{"casks":151,"formulae":152},[],[],{"arch":154,"casks":155,"formulae":156,"requirements":157},[37],[],[],{"macos":158},{},"26","tahoe",{"arch":36,"artifacts":162,"conflictsWith":176,"dependsOn":179,"downloadSha256":46,"downloadUrl":48,"macos":159,"requiresRosetta":23,"tag":185,"version":78},{"apps":163,"binaries":164,"entries":165,"pkgs":175},[],[],[166,171],{"declaration":167,"phase":13,"sources":170,"type":13},{"uninstall":168},[169],{"pkgutil":12},[],{"declaration":172,"phase":19,"sources":174,"type":21},{"pkg":173},[18],[18],[18],{"casks":177,"formulae":178},[],[],{"arch":180,"casks":181,"formulae":182,"requirements":183},[36],[],[],{"macos":184},{},"arm64_tahoe",{"arch":37,"artifacts":187,"conflictsWith":201,"dependsOn":204,"downloadSha256":107,"downloadUrl":108,"macos":210,"requiresRosetta":23,"tag":211,"version":78},{"apps":188,"binaries":189,"entries":190,"pkgs":200},[],[],[191,196],{"declaration":192,"phase":13,"sources":195,"type":13},{"uninstall":193},[194],{"pkgutil":12},[],{"declaration":197,"phase":19,"sources":199,"type":21},{"pkg":198},[18],[18],[18],{"casks":202,"formulae":203},[],[],{"arch":205,"casks":206,"formulae":207,"requirements":208},[37],[],[],{"macos":209},{},"15","sequoia",{"arch":36,"artifacts":213,"conflictsWith":227,"dependsOn":230,"downloadSha256":46,"downloadUrl":48,"macos":210,"requiresRosetta":23,"tag":236,"version":78},{"apps":214,"binaries":215,"entries":216,"pkgs":226},[],[],[217,222],{"declaration":218,"phase":13,"sources":221,"type":13},{"uninstall":219},[220],{"pkgutil":12},[],{"declaration":223,"phase":19,"sources":225,"type":21},{"pkg":224},[18],[18],[18],{"casks":228,"formulae":229},[],[],{"arch":231,"casks":232,"formulae":233,"requirements":234},[36],[],[],{"macos":235},{},"arm64_sequoia",{"arch":37,"artifacts":238,"conflictsWith":252,"dependsOn":255,"downloadSha256":107,"downloadUrl":108,"macos":261,"requiresRosetta":23,"tag":262,"version":78},{"apps":239,"binaries":240,"entries":241,"pkgs":251},[],[],[242,247],{"declaration":243,"phase":13,"sources":246,"type":13},{"uninstall":244},[245],{"pkgutil":12},[],{"declaration":248,"phase":19,"sources":250,"type":21},{"pkg":249},[18],[18],[18],{"casks":253,"formulae":254},[],[],{"arch":256,"casks":257,"formulae":258,"requirements":259},[37],[],[],{"macos":260},{},"14","sonoma",{"arch":36,"artifacts":264,"conflictsWith":278,"dependsOn":281,"downloadSha256":46,"downloadUrl":48,"macos":261,"requiresRosetta":23,"tag":287,"version":78},{"apps":265,"binaries":266,"entries":267,"pkgs":277},[],[],[268,273],{"declaration":269,"phase":13,"sources":272,"type":13},{"uninstall":270},[271],{"pkgutil":12},[],{"declaration":274,"phase":19,"sources":276,"type":21},{"pkg":275},[18],[18],[18],{"casks":279,"formulae":280},[],[],{"arch":282,"casks":283,"formulae":284,"requirements":285},[36],[],[],{"macos":286},{},"arm64_sonoma",{"arch":37,"artifacts":289,"conflictsWith":303,"dependsOn":306,"downloadSha256":107,"downloadUrl":108,"macos":312,"requiresRosetta":23,"tag":313,"version":78},{"apps":290,"binaries":291,"entries":292,"pkgs":302},[],[],[293,298],{"declaration":294,"phase":13,"sources":297,"type":13},{"uninstall":295},[296],{"pkgutil":12},[],{"declaration":299,"phase":19,"sources":301,"type":21},{"pkg":300},[18],[18],[18],{"casks":304,"formulae":305},[],[],{"arch":307,"casks":308,"formulae":309,"requirements":310},[37],[],[],{"macos":311},{},"13","ventura",{"arch":36,"artifacts":315,"conflictsWith":329,"dependsOn":332,"downloadSha256":46,"downloadUrl":48,"macos":312,"requiresRosetta":23,"tag":338,"version":78},{"apps":316,"binaries":317,"entries":318,"pkgs":328},[],[],[319,324],{"declaration":320,"phase":13,"sources":323,"type":13},{"uninstall":321},[322],{"pkgutil":12},[],{"declaration":325,"phase":19,"sources":327,"type":21},{"pkg":326},[18],[18],[18],{"casks":330,"formulae":331},[],[],{"arch":333,"casks":334,"formulae":335,"requirements":336},[36],[],[],{"macos":337},{},"arm64_ventura",{"arch":37,"artifacts":340,"conflictsWith":354,"dependsOn":357,"downloadSha256":107,"downloadUrl":108,"macos":363,"requiresRosetta":23,"tag":364,"version":78},{"apps":341,"binaries":342,"entries":343,"pkgs":353},[],[],[344,349],{"declaration":345,"phase":13,"sources":348,"type":13},{"uninstall":346},[347],{"pkgutil":12},[],{"declaration":350,"phase":19,"sources":352,"type":21},{"pkg":351},[18],[18],[18],{"casks":355,"formulae":356},[],[],{"arch":358,"casks":359,"formulae":360,"requirements":361},[37],[],[],{"macos":362},{},"12","monterey",{"arch":36,"artifacts":366,"conflictsWith":380,"dependsOn":383,"downloadSha256":46,"downloadUrl":48,"macos":363,"requiresRosetta":23,"tag":389,"version":78},{"apps":367,"binaries":368,"entries":369,"pkgs":379},[],[],[370,375],{"declaration":371,"phase":13,"sources":374,"type":13},{"uninstall":372},[373],{"pkgutil":12},[],{"declaration":376,"phase":19,"sources":378,"type":21},{"pkg":377},[18],[18],[18],{"casks":381,"formulae":382},[],[],{"arch":384,"casks":385,"formulae":386,"requirements":387},[36],[],[],{"macos":388},{},"arm64_monterey",{"arch":37,"artifacts":391,"conflictsWith":405,"dependsOn":408,"downloadSha256":107,"downloadUrl":108,"macos":414,"requiresRosetta":23,"tag":415,"version":78},{"apps":392,"binaries":393,"entries":394,"pkgs":404},[],[],[395,400],{"declaration":396,"phase":13,"sources":399,"type":13},{"uninstall":397},[398],{"pkgutil":12},[],{"declaration":401,"phase":19,"sources":403,"type":21},{"pkg":402},[18],[18],[18],{"casks":406,"formulae":407},[],[],{"arch":409,"casks":410,"formulae":411,"requirements":412},[37],[],[],{"macos":413},{},"11","big_sur",{"arch":36,"artifacts":417,"conflictsWith":431,"dependsOn":434,"downloadSha256":46,"downloadUrl":48,"macos":414,"requiresRosetta":23,"tag":440,"version":78},{"apps":418,"binaries":419,"entries":420,"pkgs":430},[],[],[421,426],{"declaration":422,"phase":13,"sources":425,"type":13},{"uninstall":423},[424],{"pkgutil":12},[],{"declaration":427,"phase":19,"sources":429,"type":21},{"pkg":428},[18],[18],[18],{"casks":432,"formulae":433},[],[],{"arch":435,"casks":436,"formulae":437,"requirements":438},[36],[],[],{"macos":439},{},"arm64_big_sur",{"icon":26,"machineTranslated":23,"name":27,"slug":28,"sourceLocale":29},628,20,{"brewLag":445,"cadence":449,"count30d":447},{"compared":446,"earlierCount":447,"medianMinutes":448},3,1,153722867,"irregular",[],"https:\u002F\u002Fgithub.com\u002Fhomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fo\u002Foracle-jdk.rb","Oracle’s Java Standard Edition runtime and development kit for compiling, running, debugging and monitoring Java applications on macOS.",{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},{"arm64":60,"requiresRosetta":23,"status":455,"x86_64":60},"known",[457,458,459,460],"Java","JDK","Runtime","Development","homebrew\u002Fcask",null,{"current":447,"records":464,"size":443,"stats":585,"total":443},[465,470,484,499,506,510,515,520,525,530,535,540,545,550,555,560,565,570,575,580],{"bodyMarkdown":58,"brewCommittedAt":59,"hasNotes":60,"id":61,"isLatest":60,"isPrerelease":23,"machineTranslated":23,"publishedAt":62,"sections":466,"source":72,"sourceLocale":73,"summary":74,"title":75,"translation":469,"version":78},[467],{"area":65,"items":468},[67,68,69,70,71],{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},{"bodyMarkdown":471,"brewCommittedAt":472,"hasNotes":60,"id":473,"isLatest":23,"isPrerelease":23,"machineTranslated":23,"publishedAt":474,"sections":475,"source":72,"sourceLocale":73,"summary":481,"title":75,"translation":482,"version":483},"Java™ SE Development Kit 26, Update 26.0.2.1 (JDK 26.0.2.1)\nAugust 18, 2026\nThe full version string for this update release is 26.0.2.1+1 (where \"+\" means \"build\").\nThe version number is 26.0.2.1. This JDK conforms to version 26 of the Java SE Specification\n(\nJSR 401\n2026-03-17).\nIANA TZ Data 2026b\nFor more information, refer to\nTimezone Data Versions in the JRE Software\n.\nSecurity Baselines\nThe security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 26.0.2.1 are specified in the following table:\nJava Family Version\nSecurity Baseline (Full Version String)\n26\n26.0.2.1+1\n25\n25.0.4.1+1\n21\n21.0.12.1+1\n17\n17.0.20.1+1\n11\n11.0.32.1+1\n8\n1.8.0_503-b01\nKeeping the JDK up to Date\nOracle recommends that the JDK is updated with each Critical Patch Update. In order to determine if a release is the latest, the\nSecurity Baseline\npage can be used.\nCritical patch updates, which contain security vulnerability fixes, are announced one year in advance on\nCritical Patch Updates, Security Alerts and Bulletins. It is not recommended that this JDK (version 26.0.2.1)\nbe used after the next critical patch update scheduled for October 20, 2026.\nJava Management Service, available to all users, can help you find vulnerable Java versions in your systems.\nJava SE Subscribers\nand customers running in Oracle Cloud can use Java Management Service to update Java Runtimes and to do further security reviews like identifying potentially vulnerable third party libraries used by your Java programs. Existing Java Management Service user\nclick here\nto log in to your dashboard.\nThe Java Management Service Documentation\nprovides a list of features available to everyone and those available only to customers.\nLearn more about using Java Management Service\nto monitor and secure your Java Installations.\nFixes\nThis release contains fixes for security vulnerabilities described in the\nOracle Critical Patch Update\n.\n\nOfficial source: https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjavase\u002F26-0-2-1-relnotes.html\n","2026-08-18T16:25:28Z",3523,"0001-01-01T00:00:00Z",[476],{"area":477,"items":478},"Changes",[479,480],"Security fixes documented in the Oracle Critical Patch Update.","Official build string: 26.0.2.1+1.","Security update 26.0.2.1+1; Oracle links the Critical Patch Update for vulnerability details.",{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},"26.0.2.1",{"bodyMarkdown":485,"brewCommittedAt":486,"hasNotes":60,"id":487,"isLatest":23,"isPrerelease":23,"machineTranslated":23,"publishedAt":474,"sections":488,"source":72,"sourceLocale":73,"summary":496,"title":75,"translation":497,"version":498},"Java™ SE Development Kit 26, Update 26.0.2 (JDK 26.0.2)\nJuly 21, 2026\nThe full version string for this update release is 26.0.2+10 (where \"+\" means \"build\").\nThe version number is 26.0.2. This JDK conforms to version 26 of the Java SE Specification\n(\nJSR 401\n2026-03-17).\nIANA TZ Data 2026b\nJDK 26.0.2 contains IANA time zone data\n2026b\nwhich contains the following changes:\nBritish Columbia last daylight saving time change was 2026-03-08 spring forward.\nFor more information, refer to\nTimezone Data Versions in the JRE Software\n.\nSecurity Baselines\nThe security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 26.0.2 are specified in the following table:\nJava Family Version\nSecurity Baseline (Full Version String)\n26\n26.0.2+10\n25\n25.0.4+7\n21\n21.0.12+7\n17\n17.0.20+7\n11\n11.0.32+7\n8\n1.8.0_501-b08\nKeeping the JDK up to Date\nOracle recommends that the JDK is updated with each Critical Patch Update. In order to determine if a release is the latest, the\nSecurity Baseline\npage can be used.\nCritical patch updates, which contain security vulnerability fixes, are announced one year in advance on\nCritical Patch Updates, Security Alerts and Bulletins. It is not recommended that this JDK (version 26.0.2)\nbe used after the next Critical Security Patch Update scheduled for August 18, 2026. Oracle is transitioning to more frequent security updates, see the\nrecently published blog\nfor more information.\nJava Management Service, available to all users, can help you find vulnerable Java versions in your systems.\nJava SE Subscribers\nand customers running in Oracle Cloud can use Java Management Service to update Java Runtimes and to do further security reviews like identifying potentially vulnerable third party libraries used by your Java programs. Existing Java Management Service user\nclick here\nto log in to your dashboard.\nThe Java Management Service Documentation\nprovides a list of features available to everyone and those available only to customers.\nLearn more about using Java Management Service\nto monitor and secure your Java Installations.\nNew Features\nsecurity-libs\u002Fjava.security\n➜\nAdd Support for the Latest ML-KEM and ML-DSA Private Key Encodings\n(\nJDK-8347938\n)\nThe JDK now encodes ML-KEM and ML-DSA private keys in PKCS #8 format using the DER-encoded ASN.1 CHOICE formats defined in\nSection 6, \"Private Key Format\"\nof RFC 9935 and\nSection 6, \"Private Key Format\"\nof RFC 9881. Two new security properties,\njdk.mlkem.pkcs8.encoding\nand\njdk.mldsa.pkcs8.encoding\n, control the encoding used when generating new keys with a\nKeyPairGenerator\nor when translating keys with a\nKeyFactory\n. Valid values are\nseed\n,\nexpandedKey\n, and\nboth\n(case-insensitive). If a system property of the same name is also specified, it supersedes the security property value. All three formats are supported when decoding previously encoded private keys with a\nKeyFactory\n.\nWhen these algorithms were introduced in JDK 24, the encoding format was equivalent to the\nexpandedKey\nvalue. This release changes the default value to\nseed\n. As a result, ML-KEM and ML-DSA private keys generated by this JDK release will not be accepted by older releases by default, although keys generated by older releases are still readable by this release. To enable older JDK releases to accept ML-KEM and ML-DSA private keys generated by this JDK release, set the\njdk.mlkem.pkcs8.encoding\nor\njdk.mldsa.pkcs8.encoding\nproperty (whichever property is relevant to your use case) to\nexpandedKey\n, and use\nKeyFactory.translateKey\nto convert the key to the older format.\nOther Notes\nsecurity-libs\u002Fjava.security\n➜\nAdded WISeKey Global GB and GC Root CA Certificates\n(\nJDK-8372351\n)\nThe following root certificates have been added to the\ncacerts\ntruststore:\n+ WISeKey\n\n  + wisekeyglobalrootgbca\n    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\n\n+ WISeKey\n  + wisekeyglobalrootgcca\n    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\nsecurity-libs\u002Fjavax.net.ssl\n➜\nInclude Client's Host and Port in DTLS Cookie\n(JDK-8373275 (not public))\nThe DTLS implementation in the SunJSSE security provider has been enhanced to generate\nHelloVerifyRequest\ncookies as recommended by\nRFC 6347\n. To use this feature, applications must create the\nSSLEngine\nwith the\nSSLContext.createSSLEngine(String peerHost, int peerPort)\nAPI.\nhotspot\u002Fjfr\n➜\nJFR Event jdk.OldObjectSample Disabled for Generational ZGC\n(\nJDK-8382740\n)\nThe JFR event\njdk.OldObjectSample\nis disabled when using generational ZGC.\nThe combination results in unacceptable performance overhead because the implementation relies on weak handles that, in generational ZGC, are processed only in the old generation.\nsecurity-libs\u002Fjava.security\n➜\nLimiting the Size of Certificate Revocation List (CRL) Downloads\n(JDK-8381796 (not public))\nA new system and security property,\ncom.sun.security.crl.maxSize\n, has been added to limit the maximum length of a CRL that is downloaded through URIs in the CRL Distribution Points certificate extension during path validation. The value of these properties is the size in bytes of the DER-encoded CRL. For protocols that can return multivalue responses, such as LDAP, the size threshold is the sum of all CRLs downloaded from a single search query. CRLs that exceed this length will not be processed during certificate path validation. This size limit does not apply to CRLs that are imported through non-network-based means. A negative value disables this size limitation. A non-numeric value will be ignored, and the default size will be used instead. The default size limit is 20 MiB. For cases where both the security and system properties are set, the system property takes precedence. Enabling certificate path logging by setting\njava.security.debug=certpath\nwill output the current size limit and note any discarded CRLs.\nFixes\nThis release also contains fixes for security vulnerabilities described in the\nOracle Critical Patch Update\n.\n➜\nIssues fixed in 26.0.2:\n#\nJBS\nComponent\u002FSubcomponent\nSummary\n1\nJDK-8369561\nclient-libs\u002F2d\nsun\u002Fjava2d\u002FOpenGL\u002FDrawBitmaskImage.java#id0: Incorrect color for first pixel (actual=ff000000)\n2\nJDK-8378201\nclient-libs\u002F2d\n[OGL] glXMakeContextCurrent() drops the buffers of the unbound drawable\n3\nJDK-8378417\nclient-libs\u002F2d\nPrinting All pages results in NPE for 1.1 PrintJob\n4\nJDK-8375057\nclient-libs\u002F2d\nUpdate HarfBuzz to 12.3.2\n5\nJDK-8297191\nclient-libs\u002F2d\n[macos] Printing a page range with starting page > 1 results in missing pages\n6\nJDK-8376233\nclient-libs\u002Fjava.awt\nClean up code in Desktop native peer\n7\nJDK-8378727\nclient-libs\u002Fjava.awt\n[macOS] Missing dispatch_release for semaphores in CDesktopPeer\n8\nJDK-8379256\nclient-libs\u002Fjava.awt\nUpdate GIFlib to 6.1.1\n9\nJDK-8380959\nclient-libs\u002Fjava.awt\nUpdate Libpng to 1.6.56\n10\nJDK-8380078\nclient-libs\u002Fjava.awt\nUpdate GIFlib to 6.1.2\n11\nJDK-8382047\nclient-libs\u002Fjava.awt\nUpdate Libpng to 1.6.57\n12\nJDK-8377526\nclient-libs\u002Fjava.awt\nUpdate Libpng to 1.6.55\n13\nJDK-8286258\nclient-libs\u002Fjavax.accessibility\n[Accessibility,macOS,VoiceOver] VoiceOver reads the spinner value wrong and sometime partially\n14\nJDK-8374727\nclient-libs\u002Fjavax.sound\nAudio configuration Platform class - use nio for getting endianness of the underlying platform\n15\nJDK-8379952\nclient-libs\u002Fjavax.swing\nRevert JDK-8365711: Restore protected visibility of menuBarHeight and hotTrackingOn\n16\nJDK-8374506\nclient-libs\u002Fjavax.swing\nIncorrect positioning of arrow icon in parent JMenu in Windows L&F\n17\nJDK-8359433\nclient-libs\u002Fjavax.swing\nThe final modifier on Windows L&F internal UI classes prevents extending them in apps\n18\nJDK-8377727\nclient-libs\u002Fjavax.swing\nGhost caret and focus appear in non‑editable text fields\n19\nJDK-8383867\ncore-libs\u002Fjava.io\nFile.getCanonicalPath drops backslash from UNC path with directory junctions\n20\nJDK-8379967\ncore-libs\u002Fjava.lang\n(process) Improve ProcessBuilder error reporting\n21\nJDK-8385665\ncore-libs\u002Fjava.lang\nAddress possible oversized errors in Math.pow\n22\nJDK-8373704\ncore-libs\u002Fjava.net\nImprove \"SocketException: Protocol family unavailable\" message\n23\nJDK-8369950\ncore-libs\u002Fjava.net\nTLS connection to IPv6 address fails with BCJSSE due to IllegalArgumentException\n24\nJDK-8376031\ncore-libs\u002Fjava.net\nHttpsURLConnection.getServerCertificates() throws \"java.lang.IllegalStateException: connection not yet open\" for the HEAD method\n25\nJDK-8375294\ncore-libs\u002Fjava.nio\n(fs) Files.copy can fail with EOPNOTSUPP when copy_file_range not supported\n26\nJDK-8378631\ncore-libs\u002Fjava.util.jar\nUpdate Zlib Data Compression Library to Version 1.3.2\n27\nJDK-8381670\ncore-libs\u002Fjava.util.jar\nRevert the changes to GZIPInputStream related to InputStream.available() usage\n28\nJDK-8382020\ncore-libs\u002Fjava.util:i18n\nTime Zone Abbreviation Not Localized for Non-English Locales\n29\nJDK-8377944\ncore-svc\u002Fjava.lang.management\nLowMemoryTest2.java#id1 intermittent fails OOME: Metaspace\n30\nJDK-8373021\nhotspot\u002Fcompiler\naarch64: MacroAssembler::arrays_equals reads out of bounds\n31\nJDK-8374903\nhotspot\u002Fcompiler\nC2 VectorAPI: assert(vbox->as_Phi()->region() == vect->as_Phi()->region()) failed\n32\nJDK-8375010\nhotspot\u002Fcompiler\nC2 VectorAPI: assert(vbox->is_CheckCastPP()) failed: should be expanded\n33\nJDK-8366138\nhotspot\u002Fcompiler\nParse::jump_switch_ranges() could cause stack overflow when compiling huge switch statement\n34\nJDK-8378713\nhotspot\u002Fcompiler\nC2: performance regression due to missing constant folding for Math.pow()\n35\nJDK-8381596\nhotspot\u002Fcompiler\nAdjust checks which use supports_ht() on x86 for hybrid CPUs\n36\nJDK-8370502\nhotspot\u002Fcompiler\nC2: segfault while adding node to IGVN worklist\n37\nJDK-8374744\nhotspot\u002Fcompiler\nEnable dumping of APX EGPRs (R16–R31) in JVM fatal error logs\n38\nJDK-8376104\nhotspot\u002Fcompiler\nC2 crashes in PhiNode::Ideal(PhaseGVN*, bool) accessing NULL pointer\n39\nJDK-8375598\nhotspot\u002Fcompiler\nVM crashes with \"assert((labs(val) & 0xFFFFFFFF00000000) == 0 || dest == (address)-1) failed: must be 32bit offset or -1\" when using too high value for NonNMethodCodeHeapSize\n40\nJDK-8368977\nhotspot\u002Fcompiler\nProvide clear naming for AVX10 identifiers\n41\nJDK-8377949\nhotspot\u002Fjfr\nTestZRelocationSetEvent.java intermittent fails OOME\n42\nJDK-8380011\nhotspot\u002Fjfr\nPath-to-gcroots search should not trigger stack overflows\n43\nJDK-8376889\nhotspot\u002Fjfr\nEnhance JfrRecorder::on_create_vm_3() assert output\n44\nJDK-8382242\nhotspot\u002Fjfr\nJFR: Metadata reconstruction invalidates ConstantMap for java.lang.String\n45\nJDK-8376956\nhotspot\u002Fjvmti\nAdd JVMTI phase entering\u002Fsetting to hserr event log\n46\nJDK-8376185\nhotspot\u002Fjvmti\nNoSuchFieldError thrown after a record with type annotation retransformed\n47\nJDK-8375311\nhotspot\u002Fruntime\nSome builds are missing debug helpers\n48\nJDK-8380474\nhotspot\u002Fruntime\nCrash SEGV in ThreadIdTable::lazy_initialize  after JDK-8323792\n49\nJDK-8376402\nhotspot\u002Fruntime\nDependencies::print_statistics() and AbstractClassHierarchyWalker::print_statistics() are not called from PRODUCT code\n50\nJDK-8377932\nhotspot\u002Fruntime\nAOT cache is not rejected when JAR file has changed\n51\nJDK-8374343\nhotspot\u002Fruntime\nFix SIGSEGV when lib\u002Fmodules is unreadable\n52\nJDK-8374998\nhotspot\u002Fruntime\nFailing os::write - remove bad file\n53\nJDK-8377512\nhotspot\u002Fruntime\nAOT cache creation fails with invalid native pointer\n54\nJDK-8380409\nhotspot\u002Fruntime\nJVM crashes when -XX:AOTMode=create uses app.aotconf generated with JVMTI agent\n55\nJDK-8377777\nhotspot\u002Fruntime\nImprove logging when rejecting assets from the AOT archive\n56\nJDK-8323792\nhotspot\u002Fsvc\nThreadSnapshot::initialize can cause assert in Thread::check_for_dangling_thread_pointer (possibility of dangling Thread pointer)\n57\nJDK-8378764\nhotspot\u002Fsvc\nfileStream::fileSize() fails for >2GB files on Windows\n58\nJDK-8379516\nhotspot\u002Fsvc\nAdjust JVM debug helper exports\n59\nJDK-8376485\nrelease-team\nUpdate the release version and date for OpenJDK 26u\n60\nJDK-8373690\nsecurity-libs\u002Fjava.security\nUnexpected Keystore message using jdk.crypto.disabledAlgorithms\n61\nJDK-8381937\nsecurity-libs\u002Fjava.security\nMake exceptions in Java_sun_security_mscapi_CKeyPairGenerator generateCKeyPair more specific\n62\nJDK-8373928\ntools\u002Flauncher\n4 Dangling pointer defect groups in java.c\n\nOfficial source: https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjavase\u002F26-0-2-relnotes.html\n","2026-07-21T16:52:07Z",3525,[489],{"area":477,"items":490},[491,492,493,494,495],"Update ML-KEM and ML-DSA PKCS #8 private-key encodings.","Add WISeKey Global GB and GC root certificates.","Add a configurable CRL download size limit.","Fix macOS printing with page ranges starting after page 1.","Fix macOS VoiceOver reading spinner values.","Updates ML-KEM\u002FML-DSA private-key encodings, root certificates and CRL download limits; includes macOS printing and accessibility fixes.",{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},"26.0.2",{"brewCommittedAt":500,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":501,"source":502,"translation":503,"version":505},"2026-04-21T16:57:45Z",[],"homebrew",{"status":504},"none","26.0.1",{"brewCommittedAt":507,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":508,"source":502,"translation":509,"version":159},"2026-03-17T16:43:33Z",[],{"status":504},{"brewCommittedAt":511,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":512,"source":502,"translation":513,"version":514},"2026-01-20T19:25:27Z",[],{"status":504},"25.0.2",{"brewCommittedAt":516,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":517,"source":502,"translation":518,"version":519},"2025-10-21T16:17:30Z",[],{"status":504},"25.0.1",{"brewCommittedAt":521,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":522,"source":502,"translation":523,"version":524},"2025-09-16T19:40:59Z",[],{"status":504},"25",{"brewCommittedAt":526,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":527,"source":502,"translation":528,"version":529},"2025-07-15T16:15:14Z",[],{"status":504},"24.0.2",{"brewCommittedAt":531,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":532,"source":502,"translation":533,"version":534},"2025-04-15T19:01:09Z",[],{"status":504},"24.0.1",{"brewCommittedAt":536,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":537,"source":502,"translation":538,"version":539},"2025-03-19T04:43:00Z",[],{"status":504},"24",{"brewCommittedAt":541,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":542,"source":502,"translation":543,"version":544},"2025-01-21T16:07:20Z",[],{"status":504},"23.0.2",{"brewCommittedAt":546,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":547,"source":502,"translation":548,"version":549},"2024-10-15T15:56:30Z",[],{"status":504},"23.0.1",{"brewCommittedAt":551,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":552,"source":502,"translation":553,"version":554},"2024-09-19T00:21:53Z",[],{"status":504},"23",{"brewCommittedAt":556,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":557,"source":502,"translation":558,"version":559},"2024-07-16T18:57:29Z",[],{"status":504},"22.0.2",{"brewCommittedAt":561,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":562,"source":502,"translation":563,"version":564},"2024-04-16T17:30:24Z",[],{"status":504},"22.0.1",{"brewCommittedAt":566,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":567,"source":502,"translation":568,"version":569},"2024-03-24T22:04:28Z",[],{"status":504},"22",{"brewCommittedAt":571,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":572,"source":502,"translation":573,"version":574},"2024-01-16T14:42:17Z",[],{"status":504},"21.0.2",{"brewCommittedAt":576,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":577,"source":502,"translation":578,"version":579},"2023-10-17T18:24:27Z",[],{"status":504},"21.0.1",{"brewCommittedAt":581,"hasNotes":23,"isLatest":23,"isPrerelease":23,"sections":582,"source":502,"translation":583,"version":584},"2023-09-25T03:13:01Z",[],{"status":504},"21",{"brewLag":586,"cadence":449,"count30d":447},{"compared":446,"earlierCount":447,"medianMinutes":448},{"current":447,"records":588,"size":447,"stats":594,"total":443},[589],{"bodyMarkdown":58,"brewCommittedAt":59,"hasNotes":60,"id":61,"isLatest":60,"isPrerelease":23,"machineTranslated":23,"publishedAt":62,"sections":590,"source":72,"sourceLocale":73,"summary":74,"title":75,"translation":593,"version":78},[591],{"area":65,"items":592},[67,68,69,70,71],{"locale":73,"machineTranslated":23,"sourceLocale":73,"status":77},{"brewLag":595,"cadence":449,"count30d":447},{"compared":446,"earlierCount":447,"medianMinutes":448}]