Day Two of JavaOne 2025 was held on March 19th, 2025, at the Oracle Conference Center in Redwood Shores, California. Key takeaways included: how the Foreign Function & Memory API solves problems inherent in the Java Native Library; virtual threads in the real world with Helidon; how to make Kubernetes work for Java teams; and the past, present and future of Jakarta EE.
What follows is a summary of the highlighted presentations.
Highlighted Presentations: Foreign Function & Memory API | Virtual Threads in the Real World | Platform Engineering | Evolution of Jakarta EE
Function and Memory Access in Pure Java, presented by Per-Åke Minborg, consulting member of technical staff, Java Core Libraries at Oracle.
Minborg kicked off his presentation with an introduction to JEP 454, Foreign Function & Memory API, delivered in JDK 22 and under the auspices of Project Panama.
The Foreign Function & Memory API, having evolved from two JEPs, namely: JEP 393, Foreign-Memory Access API (Third Incubator); and JEP 389, Foreign Linker API (Incubator), both delivered in 2016, was designed to be a replacement for the Java Native Interface (JNI), a native programming interface to interoperate with applications and libraries written in other programming languages, such as C, C++ and Assembly.
Problems with JNI include: a native-first programming model that was a fragile combination of Java and C; it's expensive to maintain and deploy; and passing data to/from JNI can be cumbersome and inefficient. Frameworks that attempted to solve these problems included: Java Native Access; Java Native Runtime; and JavaCPP, but never gained any traction.
After introducing the JNI workflow and how JNI works with data, Minborg provided multiple code examples and discussed their corresponding problems.
Minborg then introduced the MemorySegment
and MemoryLayout
interface and provided numerous code examples on how to access various memory layouts.
Virtual Threads in the Real World: Fast, Robust Java Microservices with Helidon, presented by Joe Di Pol, engineering manager at Oracle, and Romain Grecourt, principal member of technical staff at Oracle.
Di Pol kicked off his presentation with an introduction to JEP 444, Virtual Threads, delivered in JDK 21 and under the auspices of Project Loom. He defined virtual threads as "JVM-managed lightweight threads that help in writing high throughput concurrent applications." Virtual threads are scheduled onto platform threads via the ForkJoinPool
class.
Helidon versions 1.x through 3.x supported a reactive web server based on Netty. However, with the release of Helidon 4.0 in October 2023, the web server, codenamed Helidon Níma, was completely rewritten using virtual threads.
Di Pol then provided a comprehensive introduction to Helidon and MicroProfile that included: a juxtaposition on reactive versus blocking with code snippets; virtual threads in Helidon 4.x; how they overcame the issue of virtual thread pinning; and lessons learned. The use of the synchronized
keyword was the number one reason for pinning. This was resolved with JEP 491, Synchronize Virtual Threads without Pinning, delivered in JDK 24.
Engineering a Modern Java Platform: Making Kubernetes Work for Java Teams, presented by Steve Millidge, CEO at Payara.
Millidge kicked off his presentation with a retrospective on the 30 years of Java innovation. The language has significantly changed, but so has technology in terms of architecture, infrastructure, monoliths-to-microservices (and perhaps back again), and the deployment and management of applications. Millidge emphasized that we "need to keep existing Java apps up to date."
The Java modernization landscape statistics include: 1000 applications used across a typical enterprise that increases 28% a year; 47% of Java applications need modernization; and 87% of Java application owners and technical leaders believe that modernizing Java applications is a higher priority than other projects.
Millidge explained how to modernize Java applications with goals of: adopting a new infrastructure and rearchitecting applications. Kubernetes can help in this area, but despite the many benefits, there are challenges especially when it comes to the manual handling of tasks such as: maintenance; the provision of nodes and pods; routing; and assigning SSL certificates.
Platform Engineering offers developer platforms to help teams develop, deploy and manage applications more efficiently with a focus on automation, self service and streamlined workflows. Platform engineering may be used to simplify manual handling of Kubernetes tasks.
Millidge introduced how platform engineering is practiced at Payara and the modernization benefits they have gained that include: compatibility with Java SE, Jakarta EE and other frameworks; and successful deployments with on-premise, cloud, multi-cloud and hybrid systems.
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond, presented by Ivar Grimstad, Jakarta EE developer advocate at the Eclipse Foundation.
Grimstad's presentation was a retrospective of the past, present and future of Jakarta EE since its early days as J2EE and Java EE.
For the past, Grimstad demonstrated the complexity of Enterprise Java Beans (EJB) and deploying EAR
and WAR
files. Early efforts to ease some of this complexity was the addition of @Stateless
, a component-defining annotation for stateless session beans, introduced in EJB 3.0.
For the present, Grimstad provided a brief overview of Jakarta EE 9 and Jakarta EE 10 before primarily focusing on Jakarta EE 11 with details on what developers can expect with the 16 updated specifications. He introduced Jakarta Data 1.0, a new specification that will be included on the Jakarta EE Platform and Web Profile.
Demos included a Jakarta Data example and how to dynamically enable virtual threads in a JDK 21 application with the @ManagedThreadFactoryDefinition
annotation that supports the Java SE runtime aware feature.
For the future, Grimstad enumerated the specifications that have submitted plan reviews for Jakarta EE 12, namely: Jakarta Contexts and Dependency Injection 5.0, Jakarta Data 1.1, Jakarta Faces 5.0, Jakarta Pages 4.1, and Jakarta Web Socket 2.3.
The Jakarta NoSQL 1.0 and Jakarta MVC 3.0 specifications are candidates to be included in Jakarta EE 12.
Ideas for new specifications include: Jakarta Query, Jakarta CRaC and Jakarta AI. There may also be an effort to replace Enterprise Java Beans.
Conclusion
JavaOne 2025, a three-day event consisting of keynotes, presentations and hands-on labs, is organized by Oracle and the developer relations team. The session catalog provides all of the details and developers can watch the Java Next Livestream that takes a deep dive into Java's ongoing development featuring Oracle experts such as: Brian Goetz, architect for the Java Language; Ron Pressler, architect and technical lead for Project Loom; and Paul Sandoz, Java architect.