Simon Ritter is the Deputy CTO of Azul Systems. Simon has been in the IT business since 1984 and holds a Bachelor of Science degree in Physics from Brunel University in the U.K.
Simon joined Sun Microsystems in 1996 and started working with Java technology from JDK 1.0; he has spent time working in both Java development and consultancy. Having moved to Oracle as part of the Sun acquisition, he managed the Java Evangelism team for the core Java platform. Now at Azul, he continues to help people understand Java as well as Azul’s JVM technologies and products. Simon has twice been awarded Java Rockstar status at JavaOne and is a Java Champion. He represents Azul on the Java SE Expert Group, JCP Executive Committee, OpenJDK Vulnerability Group and Adoptium Steering Committee.
The goal of project Amber within OpenJDK is to explore the inclusion of smaller, productivity-oriented Java language features. One part of this that has delivered new functionality in recent versions is pattern matching.
Pattern matching combines application code logic to test if an expression has a specific type or structure and extract components of its state for processing.
In JDK 14, JEP 305 introduced pattern matching for instanceof, as a preview feature; in JDK 16, this was made a full feature through JEP 394. This simplifies the use of this operator by eliminating the need for an explicit cast and assignment. In JDK 17, JEP 406 added pattern matching for switch. It is now possible to include patterns in switch case labels.
In this session, we’ll look at the details of these two new language features and a more general look at pattern matching. We’ll also explore future features in this area, such as record patterns (scheduled for JDK 19) and array patterns, which may be included in a subsequent Java release.
By the end of the session, you’ll be ready to use these powerful new features.
One of the key benefits of a microservice architecture is the ability to dynamically respond to changes in load by spinning up new instances as required. However, when deploying JVM-based services, the warmup time of JIT compilation can be a limitation on the effectiveness of this technique.
One approach to solving this problem is using native images, where the service is statically compiled using an ahead-of-time (AOT) compiler. Although this does reduce startup time and footprint, it does so at the cost of overall performance.
A new project has been proposed and accepted into OpenJDK called CRaC (Coordinated Restore at Checkpoint). The goal is to research the co-ordination of Java programs with mechanisms to checkpoint (snapshot) a running application. Restoring from the snapshot could solve some of the problems with the startup and warmup times, especially in microservices.
In this session, we’ll look at the main challenges for such a project, potential solutions and the results from a proof-of-concept implementation.