|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: 'Continued Focus on Native' |
| 4 | +date: 2025-11-03 |
| 5 | +tags: mandrel, native, graalvm |
| 6 | +synopsis: 'Quarkus continues to focus on native for swift start-up time and low memory footprint.' |
| 7 | +author: sgehwolf |
| 8 | +--- |
| 9 | +:imagesdir: /assets/images/posts/continued-focus-native |
| 10 | + |
| 11 | +From its inception, Quarkus has offered the ability to compile Java |
| 12 | +applications into native binaries. This feature is crucial for achieving rapid |
| 13 | +startup times and reduced memory consumption, two properties that remain |
| 14 | +paramount to Quarkus' mission and that Quarkus remains committed to. |
| 15 | + |
| 16 | +We have already started preparing for the adoption of GraalVM 25 (via our |
| 17 | +Mandrel distribution), and expect to switch to it as the primary native builder |
| 18 | +in the near future. |
| 19 | + |
| 20 | +Quarkus uses the Mandrel GraalVM distribution to ensure continuity of updates |
| 21 | +on native-image capabilities. https://quarkus.io/blog/mandrel-25-released[Mandrel 25] empowers Quarkus |
| 22 | +users to leverage the latest JDK innovations (JDK 25) and target cloud-native |
| 23 | +deployments through its native compilation capabilities. Our collaboration with |
| 24 | +the upstream GraalVM community during GraalVM 25’s development has strengthened |
| 25 | +our involvement, bringing these shared innovations directly to Quarkus users |
| 26 | +with the incorporation of the Mandrel 25 release. |
| 27 | + |
| 28 | +Key improvements that Mandrel 25 and Quarkus are expected to bring: |
| 29 | + |
| 30 | +* **Readiness for JDK 25 - Enhanced Compatibility and Stability:** Mandrel 25, |
| 31 | + based on OpenJDK 25, offers improved compatibility with the latest OpenJDK |
| 32 | + features and libraries, ensuring that Quarkus applications can leverage the |
| 33 | + full spectrum of the Java ecosystem while maintaining the stability and |
| 34 | + reliability expected of production-ready enterprise systems. |
| 35 | +* **Continued Focus on Key Metrics:** Mandrel 25 will be the technology of |
| 36 | + choice in order to deliver on the cloud-native performance goals of fast |
| 37 | + startup and low memory footprint of Quarkus releases for the next years to |
| 38 | + come. Quarkus continues to enable aggressive initialization at built time to |
| 39 | + achieve this. |
| 40 | +* **Enhanced Static Analysis Accuracy:** GraalVM 25 enables https://github.com/oracle/graal/pull/9821[Whole-Program |
| 41 | + Sparse Conditional Constant Propagation (WP-SCCP)] by default, improving the |
| 42 | + precision of points-to analysis in native image. This optimization enhances |
| 43 | + static analysis accuracy and scalability, potentially reducing the size of the |
| 44 | + final native binary. |
| 45 | + https://medium.com/graalvm/skipflow-producing-smaller-executables-with-graalvm-f18ca98279c2[More information on the GraalVM blog]. |
| 46 | +* **Improved Error Reporting and Diagnostics:** When resources or certain |
| 47 | + reflective accesses aren't properly registered at image build time, it is now |
| 48 | + being appropriately flagged by raising a specific exception when building with |
| 49 | + Mandrel 25. Flags, `-XX:MissingRegistrationReportingMode=Warn` and |
| 50 | + `-XX:MissingRegistrationWarnContextLines=<#lines>` can be used to diagnose. The |
| 51 | + ability to handle `OutOfMemoryError` was added. |
| 52 | +* **Enhanced Monitoring Possibilities:** By leveraging Mandrel 25 more |
| 53 | + monitoring options of the deployed native Quarkus application binary become |
| 54 | + possible closing the gap between JVM mode and native mode. New JFR events, such |
| 55 | + as Socket IO and native memory tracking events as well as JFR allocation |
| 56 | + profiling becomes possible (via the `jdk.ObjectAllocationSample` event). The |
| 57 | + addition of https://www.graalvm.org/jdk25/reference-manual/native-image/debugging-and-diagnostics/jcmd/[Java Diagnostic Command] |
| 58 | + (JCMD) allows for triggering of certain actions on the running native image. |
| 59 | + The JFR monitoring feature of native image has been enhanced to be more |
| 60 | + configurable (via `-XX:FlightRecorderOptions`), previously only available in |
| 61 | + JVM mode. Native memory tracking can be optionally enabled in order to diagnose |
| 62 | + memory leaks (using `-Dquarkus.native.monitoring=nmt` at build time and |
| 63 | + `-XX:+PrintNMTStatistics` at runtime) |
| 64 | +* **Full Support for the Foreign Function & Memory (FFM) API:** Quarkus |
| 65 | + applications can now make use of full support of the FFM API (included in JVM |
| 66 | + mode since JDK 22) when compiling to native using Mandrel 25. Upcall and |
| 67 | + downcall support has been added for all supported Quarkus operating systems and |
| 68 | + architectures. |
| 69 | + |
| 70 | +By seamlessly integrating Mandrel 25, and Quarkus’ continued focus on developer |
| 71 | +joy and productivity, together with new and emerging AI capabilities further |
| 72 | +solidifies Quarkus position as the premier framework for building |
| 73 | +high-performance, cloud-native Java applications. Developers can confidently |
| 74 | +leverage these advancements to deploy applications that are not only efficient |
| 75 | +but also deliver exceptional user experiences. Quarkus and Mandrel 25 combine |
| 76 | +to create a powerful synergy that pushes the boundaries of Java in today's |
| 77 | +modern computing landscape. This combination delivers on Quarkus’s Cloud Native |
| 78 | +Mission, offering swift start-up times and a low memory footprint. |
| 79 | + |
| 80 | + |
| 81 | +[[looking-ahead]] |
| 82 | +== Looking Ahead |
| 83 | + |
| 84 | +Beyond GraalVM 25, we are tracking the evolution of GraalVM closely as we have |
| 85 | +done in the past and will continue to work with the GraalVM team to evolve |
| 86 | +accordingly and ensure that Quarkus integrates well with it. We are looking |
| 87 | +forward to exciting new features, not least: |
| 88 | + |
| 89 | +1. https://github.com/oracle/graal/issues/12237[Shenandoah GC] integration |
| 90 | +2. https://github.com/oracle/graal/issues/11327[Project Crema] and dynamic |
| 91 | + Java on top of native-image. This will unlock Java use cases that today |
| 92 | + cannot run as native-image |
| 93 | +3. https://github.com/oracle/graal/issues/7626[Native Image Layers] to make |
| 94 | + it possible to tune performance vs. usability |
| 95 | +4. Polyglot - First-class https://www.graalvm.org/jdk25/reference-manual/js/[JavaScript], |
| 96 | + https://www.graalvm.org/python/[Python] and |
| 97 | + https://www.graalvm.org/webassembly/docs/[Wasm] integrations |
| 98 | + |
| 99 | +[[community-collab]] |
| 100 | +== GraalVM Community Collaboration and GraalVM Summit |
| 101 | + |
| 102 | +The collaboration between Quarkus, Mandrel and GraalVM developers continues to |
| 103 | +be strong. What’s more, Mandrel is being developed as part of the GraalVM |
| 104 | +Github organization and the GraalVM for JDK 21 community effort was established |
| 105 | +as part of those community gatherings. Mandrel developers assumed maintainer |
| 106 | +roles for the https://github.com/graalvm/graalvm-community-jdk21u/[GraalVM |
| 107 | +for JDK 21 maintenance repository]. We hope to establish a similar model for |
| 108 | +GraalVM 25 and its downstream, Mandrel 25. The Mandrel team is certainly |
| 109 | +interested in stepping up for community maintenance of GraalVM 25 when the time |
| 110 | +comes. |
| 111 | + |
| 112 | +image::summit_2025_crowd_banner.png[GraalVM Summit 2025 - Crowd] |
| 113 | + |
| 114 | +For the past few years Quarkus and Mandrel developers have been attending the |
| 115 | +GraalVM Community summit. A powerful platform to exchange ideas and experience |
| 116 | +with the GraalVM technology. In 2025, five Quarkus/Mandrel developers attended |
| 117 | +the GraalVM Community Summit. We believe the event was a great success. These |
| 118 | +gatherings are tantamount to the Quarkus and GraalVM collaboration. We were |
| 119 | +glad to see that there is shared interest in making the public |
| 120 | +https://github.com/oracle/graal/[GraalVM github repository] a true upstream |
| 121 | +with an open governance model. This would further strengthen the GraalVM |
| 122 | +community and would help self-sustain certain areas. Some of this has been |
| 123 | +already tested with the |
| 124 | +https://github.com/graalvm/graalvm-community-jdk21u/[GraalVM for JDK 21 |
| 125 | +upstream] community repository. |
| 126 | + |
| 127 | +image::grid_people.png[Quarkus/Mandrel Developers at the GraalVM 2025 Summit] |
| 128 | + |
| 129 | +[[commitment-to-subatomic-java]] |
| 130 | +== Commitment to delivering "Supersonic Subatomic Java" |
| 131 | + |
| 132 | +The Quarkus project will continue to evaluate and incorporate the best |
| 133 | +available technologies to ensure its users benefit from optimal reliability, |
| 134 | +performance, and efficiency. This includes exploring advancements in all |
| 135 | +technologies and runtime environments as they evolve, such as project Leyden. |
| 136 | +Our goal remains to ensure that Quarkus remains at the forefront of |
| 137 | +cloud-native Java development. Our commitment is to provide developers with the |
| 138 | +flexibility to choose the tools that best fit their project's needs, while |
| 139 | +always delivering on our promise of "Supersonic Subatomic Java", and provide |
| 140 | +optimal, highly efficient deployment formats for a broad range of environments. |
| 141 | + |
| 142 | +Onward with Quarkus Native! |
| 143 | + |
| 144 | +You can share your feedback with us in Quarkus' |
| 145 | +https://quarkusio.zulipchat.com/[Zulip chat workspace] or on |
| 146 | +https://github.com/quarkusio/quarkus/[GitHub]. |
0 commit comments