{"id":508759,"date":"2026-03-02T04:28:07","date_gmt":"2026-03-02T04:28:07","guid":{"rendered":"https:\/\/www.newsbeep.com\/ca\/508759\/"},"modified":"2026-03-02T04:28:07","modified_gmt":"2026-03-02T04:28:07","slug":"java-news-roundup-lazy-constants-tornadovm-3-0-netbeans-29-quarkus-jreleaser-open-liberty","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/ca\/508759\/","title":{"rendered":"Java News Roundup: Lazy Constants, TornadoVM 3.0, NetBeans 29, Quarkus, JReleaser, Open Liberty"},"content":{"rendered":"<p>This week&#8217;s Java roundup for February 23rd, 2026, features news highlighting: new JEP 531 Candidate, Lazy Constants; GA releases of TornadoVM 3.0 and NetBeans 29; point releases of Quarkus, JReleaser, Chicory and RefactorFirst; maintenance releases of Micronaut and Jox; and the February 2026 edition of Open Liberty.<\/p>\n<p>OpenJDK<\/p>\n<p>JEP 531, <a href=\"https:\/\/openjdk.org\/jeps\/531\" rel=\"nofollow noopener\" target=\"_blank\">Lazy Constants (Third Preview)<\/a>, has been <a href=\"https:\/\/mail.openjdk.org\/pipermail\/jdk-dev\/2026-February\/010894.html\" rel=\"nofollow noopener\" target=\"_blank\">elevated<\/a> from its JEP Draft 8329758 to Candidate status. Formerly known as StableValues, this feature proposes a third preview, with two changes, after two rounds of preview delivered in the upcoming release of JDK 26 and JDK 25. The changes include: removal of the methods, isInitialized() and orElse(), from the <a href=\"https:\/\/download.java.net\/java\/early_access\/jdk26\/docs\/api\/java.base\/java\/lang\/LazyConstant.html\" rel=\"nofollow noopener\" target=\"_blank\">LazyConstant<\/a> interface, as they do not align with the design goals of this feature; and a new factory method, ofLazy(), that can create a stable, pre-defined elements for all three Java collection types, namely: List, Set and Map.<\/p>\n<p>JDK 26<\/p>\n<p><a href=\"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-26%2B35\" rel=\"nofollow noopener\" target=\"_blank\">Build 35<\/a> remains the current build in the JDK 26 <a href=\"https:\/\/jdk.java.net\/26\/\" rel=\"nofollow noopener\" target=\"_blank\">early-access builds<\/a>. More details on this release may be found in the <a href=\"https:\/\/jdk.java.net\/26\/release-notes\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>JDK 27<\/p>\n<p><a href=\"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-27%2B11\" rel=\"nofollow noopener\" target=\"_blank\">Build 11<\/a> of the JDK 27 <a href=\"https:\/\/jdk.java.net\/27\/\" rel=\"nofollow noopener\" target=\"_blank\">early-access builds<\/a> was made available this past week featuring <a href=\"https:\/\/github.com\/openjdk\/jdk\/compare\/jdk-27%2B10...jdk-27%2B11\" rel=\"nofollow noopener\" target=\"_blank\">updates<\/a> from Build 10 that include fixes for various <a href=\"https:\/\/bugs.openjdk.org\/issues\/?jql=project%20%3D%20JDK%20AND%20fixversion%20%3D%2027%20and%20%22resolved%20in%20build%22%20%3D%20b11%20order%20by%20component%2C%20subcomponent\" rel=\"nofollow noopener\" target=\"_blank\">issues<\/a>. Further details on this release may be found in the <a href=\"https:\/\/jdk.java.net\/27\/release-notes\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>For <a href=\"https:\/\/openjdk.org\/projects\/jdk\/26\/\" rel=\"nofollow noopener\" target=\"_blank\">JDK 26<\/a> and <a href=\"https:\/\/openjdk.org\/projects\/jdk\/27\/\" rel=\"nofollow noopener\" target=\"_blank\">JDK 27<\/a>, developers are encouraged to report bugs via the <a href=\"https:\/\/bugreport.java.com\/bugreport\/\" rel=\"nofollow noopener\" target=\"_blank\">Java Bug Database<\/a>.<\/p>\n<p>TornadoVM<\/p>\n<p>The GA release of <a href=\"https:\/\/www.tornadovm.org\/\" rel=\"nofollow noopener\" target=\"_blank\">TornadoVM<\/a> 3.0.0 delivers bug fixes, dependency upgrades and notable changes such as: a refactor of the IntelliJ project generation that removes the end-user CLI flag, &#8211;intellijinit, in favor of a developer-only workflow to ensure that developers can configure their IDE and more easily switch between backends; and a refactor of their GitHub actions to split JDK 21 and JDK 25 testing, packaging and deployment. More details on this release may be found in the release notes for <a href=\"https:\/\/github.com\/beehive-lab\/TornadoVM\/releases\/tag\/v3.0.0-jdk25\" rel=\"nofollow noopener\" target=\"_blank\">version JDK 25<\/a> and <a href=\"https:\/\/github.com\/beehive-lab\/TornadoVM\/releases\/tag\/v3.0.0\" rel=\"nofollow noopener\" target=\"_blank\">version JDK 21<\/a>.<\/p>\n<p>Apache NetBeans<\/p>\n<p>The <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg10763.html\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/netbeans.apache.org\/front\/main\/index.html\" rel=\"nofollow noopener\" target=\"_blank\">Apache NetBeans<\/a> 29 ships with bug fixes, dependency upgrades and new features such as: improved initialization performance in the <a href=\"https:\/\/github.com\/apache\/netbeans\/blob\/master\/ide\/projectui\/src\/org\/netbeans\/modules\/project\/ui\/LazyProject.java\" rel=\"nofollow noopener\" target=\"_blank\">LazyProject<\/a> class; a resolution to warnings from an instance of the <a href=\"https:\/\/github.com\/apache\/netbeans\/blob\/master\/ide\/notifications\/src\/org\/netbeans\/modules\/notifications\/center\/NotificationCenterManager.java\" rel=\"nofollow noopener\" target=\"_blank\">NotificationCenterManager<\/a> class by synchronizing manipulation requests from a filtered list; and an update to the <a href=\"https:\/\/github.com\/apache\/netbeans\/blob\/master\/ide\/git\/src\/org\/netbeans\/modules\/git\/ui\/history\/DefaultGitHyperlinkProvider.java\" rel=\"nofollow noopener\" target=\"_blank\">DefaultGitHyperlinkProvider<\/a> class to support <a href=\"https:\/\/codeberg.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Codeberg<\/a> projects. Further details on this release may be found in the <a href=\"https:\/\/github.com\/apache\/netbeans\/releases\/tag\/29\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Open Liberty<\/p>\n<p>The <a href=\"https:\/\/openliberty.io\/blog\/2026\/02\/24\/26.0.0.2.html\" rel=\"nofollow noopener\" target=\"_blank\">GA release<\/a> of <a href=\"https:\/\/openliberty.io\/\" rel=\"nofollow noopener\" target=\"_blank\">Open Liberty<\/a> 26.0.0.2 features: support for Java Toolchains in Liberty Build Plugins that allows developers to separate the JDK used with build tools from the JDK used to run Liberty server and its related applications; and a resolution to <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-14914\" rel=\"nofollow noopener\" target=\"_blank\">CVE-2025-14914<\/a>, a remote code execution vulnerability, affecting Open Liberty versions 17.0.0.3 through 26.0.0.1, that allows an attacker, as a privileged user, to upload a ZIP file archive with path traversal sequences to overwrite files and execute arbitrary code.<\/p>\n<p>Quarkus<\/p>\n<p>The <a href=\"https:\/\/quarkus.io\/blog\/quarkus-3-32-released\/\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/quarkus.io\/\" rel=\"nofollow noopener\" target=\"_blank\">Quarkus<\/a> 3.32 provides bug fixes, dependency upgrades and new features such as: integration with <a href=\"https:\/\/openjdk.org\/projects\/leyden\/\" rel=\"nofollow noopener\" target=\"_blank\">Project Leyden<\/a>, support for automatic service registration of Quarkus applications using a service registrar like the Quarkus <a href=\"https:\/\/quarkus.io\/extensions\/io.quarkus\/quarkus-smallrye-stork\/\" rel=\"nofollow noopener\" target=\"_blank\">SmallRye Stork<\/a> extension; and a more graceful shutdown that avoids an HTTP Status Code 503, <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Reference\/Status\/503\" rel=\"nofollow noopener\" target=\"_blank\">Service Unavailable<\/a>, as much as possible during the process. More details on this release may be found in the release notes for <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/releases\/tag\/3.32.1\" rel=\"nofollow noopener\" target=\"_blank\">version 3.32.1<\/a> and <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/releases\/tag\/3.32.0\" rel=\"nofollow noopener\" target=\"_blank\">version 3.32.0<\/a>.<\/p>\n<p>Micronaut<\/p>\n<p>The Micronaut Foundation has <a href=\"https:\/\/micronaut.io\/2026\/02\/25\/micronaut-framework-4-10-9-released\/\" rel=\"nofollow noopener\" target=\"_blank\">released<\/a> version 4.10.9 of the <a href=\"https:\/\/micronaut.io\/\" rel=\"nofollow noopener\" target=\"_blank\">Micronaut Framework<\/a> based on <a href=\"https:\/\/github.com\/micronaut-projects\/micronaut-core\/releases\/tag\/v4.10.6\" rel=\"nofollow noopener\" target=\"_blank\">Micronaut Core 4.10.6<\/a>, features bug fixes and patch updates to modules: <a href=\"https:\/\/micronaut-projects.github.io\/micronaut-servlet\/latest\/guide\/\" rel=\"nofollow noopener\" target=\"_blank\">Micronaut Servlet<\/a>, <a href=\"https:\/\/micronaut-projects.github.io\/micronaut-spring\/latest\/guide\/\" rel=\"nofollow noopener\" target=\"_blank\">Micronaut for Spring<\/a> and <a href=\"https:\/\/micronaut-projects.github.io\/micronaut-mcp\/latest\/guide\/\" rel=\"nofollow noopener\" target=\"_blank\">Micronaut MCP<\/a>. Further details on this release may be found in the <a href=\"https:\/\/github.com\/micronaut-projects\/micronaut-platform\/releases\/tag\/v4.10.9\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>JReleaser<\/p>\n<p>Version 1.23.0 of <a href=\"https:\/\/jreleaser.org\/\" rel=\"nofollow noopener\" target=\"_blank\">JReleaser<\/a>, a Java utility that streamlines creating project releases, has been <a href=\"https:\/\/andresalmiray.com\/jreleaser-1-23-0-has-been-released\/\" rel=\"nofollow noopener\" target=\"_blank\">released<\/a> with bug fixes, documentation improvements, dependency upgrades and new features such as: the addition of a paths property to the <a href=\"https:\/\/github.com\/jreleaser\/jreleaser\/blob\/main\/sdks\/jreleaser-git-java-sdk\/src\/main\/java\/org\/jreleaser\/sdk\/git\/ChangelogGenerator.java\" rel=\"nofollow noopener\" target=\"_blank\">ChangelogGenerator<\/a> class and <a href=\"https:\/\/github.com\/jreleaser\/jreleaser\/blob\/main\/api\/jreleaser-model-api\/src\/main\/java\/org\/jreleaser\/model\/api\/release\/Changelog.java\" rel=\"nofollow noopener\" target=\"_blank\">Changelog<\/a> interface to support filtering of commits to only those affecting specified paths; and an update to the <a href=\"https:\/\/github.com\/jreleaser\/jreleaser\/blob\/main\/api\/jreleaser-model-api\/src\/main\/java\/org\/jreleaser\/version\/ChronVer.java\" rel=\"nofollow noopener\" target=\"_blank\">ChronVer<\/a> class to allow for a more lenient time formatting rule as specified in the <a href=\"https:\/\/chronver.org\/\" rel=\"nofollow noopener\" target=\"_blank\">ChronVer<\/a> specification. More details on this release may be found in the <a href=\"https:\/\/github.com\/jreleaser\/jreleaser\/releases\/tag\/v1.23.0\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Chicory<\/p>\n<p>The <a href=\"https:\/\/chicory.dev\/blog\/chicory-1.7.0\/\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/chicory.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">Chicory<\/a> 1.7.0, a JVM native WebAssembly runtime, features support for: the <a href=\"https:\/\/github.com\/WebAssembly\/gc\/blob\/main\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">GC Proposal for WebAssembly<\/a> (WasmGC), that enables garbage-collected structure and array types in WebAssembly modules; and the <a href=\"https:\/\/github.com\/WebAssembly\/multi-memory\/blob\/main\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">Multi Memory Proposal for WebAssembly<\/a> that allows WebAssembly modules to simultaneously declare and access multiple instances of memory. These new features put Chicory one step closer to full compliance of the <a href=\"https:\/\/webassembly.org\/news\/2025-09-17-wasm-3.0\/\" rel=\"nofollow noopener\" target=\"_blank\">Wasm 3.0<\/a> specification.<\/p>\n<p>RefactorFirst<\/p>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/jimbethancourt\/\" rel=\"nofollow noopener\" target=\"_blank\">Jim Bethancourt<\/a>, Principal Software Consultant at <a href=\"https:\/\/improving.com\/\" rel=\"nofollow noopener\" target=\"_blank\">Improving<\/a>, has released version 0.8.0 of <a href=\"https:\/\/github.com\/jimbethancourt\/RefactorFirst\/blob\/main\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">RefactorFirst<\/a>, a utility that prioritizes the parts of an application that should be refactored. This release delivers: removal of two unused methods, gitRepository() and listRepositoryContentsAtHEAD(), from the <a href=\"https:\/\/github.com\/refactorfirst\/RefactorFirst\/blob\/main\/change-proneness-ranker\/src\/main\/java\/org\/hjug\/git\/GitLogReader.java\" rel=\"nofollow noopener\" target=\"_blank\">GitLogReader<\/a> class that reduced memory usage of <a href=\"https:\/\/github.com\/eclipse-jgit\/jgit\/blob\/master\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">Eclipse JGit<\/a>; and a resolution to a NullPointerException upon attempting a Git lookup due to the generated classes, and their associated history, that did not exist in Git. Further details on this release may be found in the <a href=\"https:\/\/github.com\/refactorfirst\/RefactorFirst\/releases\/tag\/0.8.0\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Jox<\/p>\n<p>The release of <a href=\"https:\/\/jox.softwaremill.com\/latest\/\" rel=\"nofollow noopener\" target=\"_blank\">Jox<\/a> 1.1.2-channels, a virtual threads library that implements an efficient Channel data structure in Java designed to be used with virtual threads, features notable changes such as: implementations of non-blocking methods, trySend() and tryReceive(), added to the <a href=\"https:\/\/github.com\/softwaremill\/jox\/blob\/main\/channels\/src\/main\/java\/com\/softwaremill\/jox\/Channel.java\" rel=\"nofollow noopener\" target=\"_blank\">Channel<\/a> class and the <a href=\"https:\/\/github.com\/softwaremill\/jox\/blob\/main\/channels\/src\/main\/java\/com\/softwaremill\/jox\/Sink.java\" rel=\"nofollow noopener\" target=\"_blank\">Sink<\/a> and <a href=\"https:\/\/github.com\/softwaremill\/jox\/blob\/main\/channels\/src\/main\/java\/com\/softwaremill\/jox\/Source.java\" rel=\"nofollow noopener\" target=\"_blank\">Source<\/a> interfaces, for integration with non-blocking frameworks like Netty and Vert.x; and a resolution to a failure of a <a href=\"https:\/\/github.com\/release-drafter\/release-drafter\/blob\/master\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">Release Drafter<\/a> GitHub action on pull_request events due to GitHub setting the reference to a temporary merge commit. More details on this release may be found in the <a href=\"https:\/\/github.com\/softwaremill\/jox\/releases\/tag\/v1.1.2-channels\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"This week&#8217;s Java roundup for February 23rd, 2026, features news highlighting: new JEP 531 Candidate, Lazy Constants; GA&hellip;\n","protected":false},"author":2,"featured_media":508760,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[11777,49,48,202431,4113,35858,202427,39657,155369,202429,202430,155366,202432,175714,184745,202428,61,152338],"class_list":{"0":"post-508759","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-technology","8":"tag-architecture-design","9":"tag-ca","10":"tag-canada","11":"tag-chicory","12":"tag-development","13":"tag-java","14":"tag-java-news-roundup-feb23-2026","15":"tag-jdk-26","16":"tag-jdk-27","17":"tag-jox","18":"tag-jreleaser","19":"tag-micronaut","20":"tag-netbeans","21":"tag-open-liberty","22":"tag-quarkus","23":"tag-refactorfirst","24":"tag-technology","25":"tag-tornadovm"},"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/508759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/comments?post=508759"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/508759\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media\/508760"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media?parent=508759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/categories?post=508759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/tags?post=508759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}