{"id":34115,"date":"2026-05-11T04:00:13","date_gmt":"2026-05-11T04:00:13","guid":{"rendered":"https:\/\/www.europesays.com\/ai\/34115\/"},"modified":"2026-05-11T04:00:13","modified_gmt":"2026-05-11T04:00:13","slug":"java-news-roundup-graalvm-spring-ai-jobrunr-glassfish-grails-groovy-quarkus-agent-mcp","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/ai\/34115\/","title":{"rendered":"Java News Roundup: GraalVM, Spring AI, JobRunr, GlassFish, Grails, Groovy, Quarkus Agent MCP"},"content":{"rendered":"<p>This week&#8217;s Java roundup for May 4th, 2026, features news highlighting: OpenJDK JEPs targeted for JDK 27; the sixth milestone release of Spring AI 2.0; the first milestone release of Grails 8.0; the first alpha release of Groovy 6.0; a point release of JobRunr; maintenance releases of GlassFish, TomEE and Tomcat; an accelerated release train for GraalVM; and resolutions to Quarkus CVEs.<\/p>\n<p>OpenJDK<\/p>\n<p>After its review had concluded, JEP 533, <a href=\"https:\/\/openjdk.org\/jeps\/533\" rel=\"nofollow noopener\" target=\"_blank\">Structured Concurrency (Seventh Preview)<\/a>, was <a href=\"https:\/\/mail.openjdk.org\/archives\/list\/jdk-dev@openjdk.org\/thread\/A7AWZ7ZRK6HM4EYD5M5DM4A34XPOILCC\/\" rel=\"nofollow noopener\" target=\"_blank\">elevated<\/a> from Proposed to Target to Targeted for JDK 27. This JEP proposes a seventh preview, with minor changes, after six rounds of preview delivered in JDK 21 through JDK 26 and two rounds of incubator delivered in JDK 19 through JDK 20. This feature simplifies concurrent programming by introducing structured concurrency to &#8220;treat groups of related tasks running in different threads as a single unit of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability.&#8221;<\/p>\n<p>Similarly, 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\/archives\/list\/jdk-dev@openjdk.org\/thread\/TIR5L3YDYYFACRERF2OVNJ3SQFAE52XE\/\" rel=\"nofollow noopener\" target=\"_blank\">elevated<\/a> from Proposed to Target to Targeted for JDK 27. 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 27<\/p>\n<p><a href=\"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-27%2B21\" rel=\"nofollow noopener\" target=\"_blank\">Build 21<\/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%2B20...jdk-27%2B21\" rel=\"nofollow noopener\" target=\"_blank\">updates<\/a> from Build 20 that include fixes for various <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-8378603?jql=project%20%3D%20JDK%20AND%20fixversion%20%3D%2027%20and%20%22resolved%20in%20build%22%20%3D%20b21%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\/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>GlassFish<\/p>\n<p><a href=\"https:\/\/glassfish.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Eclipse GlassFish<\/a> 8.0.2, the second maintenance release, delivers bug fixes, dependency upgrades and two new features: support for using the beanName attribute from the Jakarta Enterprise Beans <a href=\"https:\/\/jakarta.ee\/specifications\/enterprise-beans\/4.0\/apidocs\/jakarta\/ejb\/ejb\" rel=\"nofollow noopener\" target=\"_blank\">@EJB<\/a> annotation within the <a href=\"https:\/\/github.com\/eclipse-ee4j\/glassfish\/blob\/main\/appserver\/deployment\/dol\/src\/main\/java\/com\/sun\/enterprise\/deployment\/ApplicationClientDescriptor.java\" rel=\"nofollow noopener\" target=\"_blank\">ApplicationClientDescriptor<\/a> class; and removal of the isThisHostLocal() method, defined in the <a href=\"https:\/\/github.com\/eclipse-ee4j\/glassfish\/blob\/main\/nucleus\/common\/common-util\/src\/main\/java\/com\/sun\/enterprise\/util\/net\/NetUtils.java\" rel=\"nofollow noopener\" target=\"_blank\">NetUtils<\/a> class, that was replaced with a more robust isLocal() method for improved behavior related to the Java <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/net\/InetAddress.html\" rel=\"nofollow noopener\" target=\"_blank\">InetAddress<\/a> class and hostname resolution.<\/p>\n<p>This release also resolves two yet-to-be-disclosed CVEs in the Admin Console that will be published soon.<\/p>\n<p>More details on this release may be found in the <a href=\"https:\/\/github.com\/eclipse-ee4j\/glassfish\/releases\/tag\/8.0.2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Jakarta EE<\/p>\n<p>In his weekly <a href=\"https:\/\/www.agilejava.eu\/\" rel=\"nofollow noopener\" target=\"_blank\">Hashtag Jakarta EE<\/a> blog, <a href=\"https:\/\/se.linkedin.com\/in\/ivargrimstad\" rel=\"nofollow noopener\" target=\"_blank\">Ivar Grimstad<\/a>, Jakarta EE Developer Advocate at the Eclipse Foundation, provided an <a href=\"https:\/\/www.agilejava.eu\/2026\/05\/10\/hashtag-jakarta-ee-332\/\" rel=\"nofollow noopener\" target=\"_blank\">update<\/a> on Jakarta EE 12, writing:<\/p>\n<p>&#13;<\/p>\n<p>The progress for the specifications that have been asked to produce updates for Milestone 4 of <a href=\"https:\/\/jakarta.ee\/specifications\/platform\/12\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta EE 12<\/a> looks very promising. Check out the <a href=\"https:\/\/jakartaee.github.io\/platform\/minutes\/minutes.html\" rel=\"nofollow noopener\" target=\"_blank\">minutes<\/a> from this week\u2019s call for the details. Another piece of good news regarding Jakarta EE 12 is that the Jakarta NoSQL project may be able to merge the features planned for <a href=\"https:\/\/projects.eclipse.org\/projects\/ee4j.nosql\/releases\/1.2\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta NoSQL 1.2<\/a> into <a href=\"https:\/\/jakarta.ee\/specifications\/nosql\/1.1\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta NoSQL 1.1<\/a>. That means that it will certainly be a stronger candidate for inclusion in Jakarta EE 12.<\/p>\n<p>&#13;<\/p>\n<p>Several other specifications are in progress for a <a href=\"https:\/\/github.com\/orgs\/jakartaee\/projects\/20\/views\/1\" rel=\"nofollow noopener\" target=\"_blank\">milestone 2 release<\/a> for Jakarta EE 12. These include: <a href=\"https:\/\/jakarta.ee\/specifications\/connectors\/3.0\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta Connectors 3.0<\/a>; <a href=\"https:\/\/jakarta.ee\/specifications\/faces\/5.0\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta Faces 5.0<\/a>; <a href=\"https:\/\/jakarta.ee\/specifications\/transactions\/2.1\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta Transactions 2.1<\/a>; and <a href=\"https:\/\/jakarta.ee\/specifications\/jsonp\/2.2\/\" rel=\"nofollow noopener\" target=\"_blank\">Jakarta JSON Processing 2.2<\/a>.<\/p>\n<p>GraalVM<\/p>\n<p>The <a href=\"https:\/\/www.graalvm.org\/\" rel=\"nofollow noopener\" target=\"_blank\">GraalVM<\/a> team has introduced an <a href=\"https:\/\/x.com\/graalvm\/status\/2052008330944458929\" rel=\"nofollow\">accelerated GraalVM release train<\/a> that includes a monthly feature release while maintaining the quarterly Oracle Critical Patch Updates (CPUs) and providing one stable release train per major version. This allows the GraalVM team to keep up with the rapid pace of software development in which AI has been a major factor. Further details on this new release train may be found in this Medium <a href=\"https:\/\/medium.com\/graalvm\/accelerating-the-graalvm-release-train-26b0d7cff2ab\" rel=\"nofollow noopener\" target=\"_blank\">blog post<\/a>.<\/p>\n<p>Spring Framework<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2026\/05\/08\/spring-ai-1-0-7-1-1-6-2-0-0-M6-available-now\" rel=\"nofollow noopener\" target=\"_blank\">sixth milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-ai\" rel=\"nofollow noopener\" target=\"_blank\">Spring AI<\/a> 2.0.0 ships with bug fixes, documentation improvements, dependency upgrades and new features such as: a new buildRequestPrompt() method, added to the <a href=\"https:\/\/github.com\/spring-projects\/spring-ai\/blob\/main\/spring-ai-model\/src\/main\/java\/org\/springframework\/ai\/chat\/model\/ChatModel.java\" rel=\"nofollow noopener\" target=\"_blank\">ChatModel<\/a> interface, to align behavior across vendors and to avoid casting an instance of the <a href=\"https:\/\/github.com\/spring-projects\/spring-ai\/blob\/main\/spring-ai-model\/src\/main\/java\/org\/springframework\/ai\/chat\/prompt\/ChatOptions.java\" rel=\"nofollow noopener\" target=\"_blank\">ChatOptions<\/a> to vendor-specific types; and EncodingFormat, defined in the <a href=\"https:\/\/github.com\/spring-projects\/spring-ai\/blob\/main\/models\/spring-ai-openai\/src\/main\/java\/org\/springframework\/ai\/openai\/OpenAiEmbeddingOptions.java\" rel=\"nofollow noopener\" target=\"_blank\">OpenAiEmbeddingOptions<\/a> class, has been redefined as an enum type from a String for improved type safety when configuring embedding encoding formats. More details on this release, including many breaking changes, may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-ai\/releases\/tag\/v2.0.0-M6\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>JobRunr<\/p>\n<p>The <a href=\"https:\/\/www.jobrunr.io\/en\/blog\/jobrunr-v8.6.0\/\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/www.jobrunr.io\/en\/\" rel=\"nofollow noopener\" target=\"_blank\">JobRunr<\/a> 8.6.0 provides bug fixes, dependency upgrades and new features such as: full compatibility with JDK 26 as the &#8211;illegal-final-field-mutation=deny JVM flag, introduced in JEP 500, <a href=\"https:\/\/openjdk.org\/jeps\/500\" rel=\"nofollow noopener\" target=\"_blank\">Prepare to Make Final Mean Final<\/a>, has been has been enabled resulting in the removal of all final field mutations in the codebase; and a refactor of the getAllTableNames() method, defined in the <a href=\"https:\/\/github.com\/jobrunr\/jobrunr\/blob\/master\/core\/src\/main\/java\/org\/jobrunr\/storage\/sql\/common\/DatabaseCreator.java\" rel=\"nofollow noopener\" target=\"_blank\">DatabaseCreator<\/a> class, for improved performance for databases with a large amount of tables. Further details on this release may be found in the <a href=\"https:\/\/github.com\/jobrunr\/jobrunr\/releases\/tag\/v8.6.0\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Quarkus<\/p>\n<p>The Quarkus team has provided <a href=\"https:\/\/quarkus.io\/blog\/CVE-2026-39852\/\" rel=\"nofollow noopener\" target=\"_blank\">emergency maintenance releases<\/a> in the 3.20, 3.27, 3.33. 3.34 and 3.35 release trains to address <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-39852\" rel=\"nofollow noopener\" target=\"_blank\">CVE-2026-39852<\/a>, a vulnerability where an attacker may append a semicolon and arbitrary text to a request URL to bypass security constraints resulting in unauthorized access to protected resources.<\/p>\n<p>The team has also <a href=\"https:\/\/quarkus.io\/blog\/introducing-agent-mcp\/\" rel=\"nofollow noopener\" target=\"_blank\">introduced<\/a> their <a href=\"https:\/\/github.com\/quarkusio\/quarkus-agent-mcp\/blob\/main\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">Quarkus Agent MCP<\/a>, a standalone <a href=\"https:\/\/modelcontextprotocol.io\/docs\/getting-started\/intro\" rel=\"nofollow noopener\" target=\"_blank\">Model Context Protocol<\/a> server that allows compatible AI agents to &#8220;create, manage, and work effectively with Quarkus applications by providing Quarkus-specific tools, documentation, and extension-level coding patterns. teaching AI agents to speak Quarkus.&#8221; This new server compliments their existing Dev MCP server, but runs as a standalone process as opposed to inside the Quarkus process.<\/p>\n<p>Grails<\/p>\n<p>The <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg11069.html\" rel=\"nofollow noopener\" target=\"_blank\">first milestone release<\/a> of <a href=\"https:\/\/grails.apache.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Apache Grails<\/a> 8.0.0 delivers bug fixes, dependency upgrades and notable changes such as: a removal of deprecated source code and legacy behaviors; and the addition of the <a href=\"https:\/\/grails.apache.org\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/grails.apache.org<\/a> domain to the Access-Control-Allow-Origin CORS header for the <a href=\"https:\/\/start.grails.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Grails Application Forge<\/a> application so that it can be migrated to Apache Grails website. More details on this release may be found in the <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg11069.html\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Groovy<\/p>\n<p>The <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg11067.html\" rel=\"nofollow noopener\" target=\"_blank\">first alpha release<\/a> of <a href=\"https:\/\/groovy-lang.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Apache Groovy<\/a> 6.0.0 ships with bug fixes, dependency upgrades and new features such as: a new groupByMany() method, added to the <a href=\"https:\/\/github.com\/apache\/groovy\/blob\/master\/src\/main\/java\/org\/codehaus\/groovy\/runtime\/DefaultGroovyMethods.java\" rel=\"nofollow noopener\" target=\"_blank\">DefaultGroovyMethods<\/a> class that returns a list of keys applicable to an item; and a new <a href=\"https:\/\/github.com\/apache\/groovy\/blob\/master\/subprojects\/groovy-contracts\/src\/main\/java\/groovy\/contracts\/Modifies.java\" rel=\"nofollow noopener\" target=\"_blank\">@Modifies<\/a> annotation that declares a set of fields and parameters that a method is allowed to modify. Further details on this release may be found in the <a href=\"https:\/\/issues.apache.org\/jira\/secure\/ReleaseNote.jspa?projectId=12318123&amp;version=12356286\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Apache TomEE<\/p>\n<p>The <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg11053.html\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/tomee.apache.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Apache TomEE<\/a> 10.1.5 provides bug fixes, dependency upgrades and notable changes such as: improvements to the redirectToOriginalResource and tokenAutoRefresh parameters defined in the <a href=\"https:\/\/tomee.apache.org\/jakartaee-10.0\/javadoc\/jakarta\/security\/enterprise\/authentication\/mechanism\/http\/OpenIdAuthenticationMechanismDefinition.html\" rel=\"nofollow noopener\" target=\"_blank\">@OpenIdAuthenticationMechanismDefinition<\/a> annotation for resources with an explicit constructor-type; and support for the Java String type in the <a href=\"https:\/\/github.com\/apache\/tomee\/blob\/main\/container\/openejb-core\/src\/main\/java\/org\/apache\/openejb\/assembler\/classic\/Assembler.java\" rel=\"nofollow noopener\" target=\"_blank\">Assembler<\/a> class for improved logging. More details on this release may be found in the <a href=\"https:\/\/tomee.apache.org\/10.1.5\/release-notes.html\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Apache Tomcat<\/p>\n<p>The <a href=\"https:\/\/www.mail-archive.com\/announce@apache.org\/msg11055.html\" rel=\"nofollow noopener\" target=\"_blank\">release<\/a> of <a href=\"https:\/\/tomcat.apache.org\/\" rel=\"nofollow noopener\" target=\"_blank\">Apache Tomcat<\/a> 11.0.22 delivers bug fixes and new features such as: updates to the version.sh and version.bat files to include version information for the <a href=\"https:\/\/tomcat.apache.org\/tomcat-11.0-doc\/apr.html\" rel=\"nofollow noopener\" target=\"_blank\">Apache Portable Runtime<\/a> (APR), <a href=\"https:\/\/tomcat.apache.org\/native-doc\/\" rel=\"nofollow noopener\" target=\"_blank\">Tomcat Native Library<\/a> and OpenSSL along with version compatibility warnings and third-party library version information; and validation improvements to HTTP\/2 such that validation is checked earlier and to check for disallowed and upper case characters. Further details on this release may be found in the <a href=\"https:\/\/tomcat.apache.org\/tomcat-11.0-doc\/changelog.html\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"This week&#8217;s Java roundup for May 4th, 2026, features news highlighting: OpenJDK JEPs targeted for JDK 27; the&hellip;\n","protected":false},"author":2,"featured_media":34116,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[405,21737,21736,504,7537,633,17898,21735,21733,21738,17896,21732,17903,21734,17895,17897,17905],"class_list":{"0":"post-34115","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-agentic-ai","8":"tag-ai-agents","9":"tag-apache-tomcat","10":"tag-apache-tomee","11":"tag-architecture-design","12":"tag-artificial-intelligence-agents","13":"tag-development","14":"tag-glassfish","15":"tag-graalvm","16":"tag-groovy","17":"tag-jakarta-ee","18":"tag-java","19":"tag-java-news-roundup-may04-2026","20":"tag-jdk-27","21":"tag-jobrunr","22":"tag-open-jdk","23":"tag-quarkus","24":"tag-spring-ai"},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/34115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/comments?post=34115"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/posts\/34115\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media\/34116"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/media?parent=34115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/categories?post=34115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/ai\/wp-json\/wp\/v2\/tags?post=34115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}