Cold Starts, Hot JVMs & Modern Java Surprises
Details
We extend our gratitude to IBM for hosting the event and providing food. To help cover the food costs and ensure that security can prepare visitor badges in advance, everyone attending will also need to complete an IBM registration form. The form is not yet available, so stay tuned for a follow-up message from the Ottawa Java User Group with the registration link.
We’re thrilled to welcome Simon Ritter, Deputy CTO of Azul Systems, for a special evening featuring two talks that explore very different sides of modern Java.
First, Simon will examine one of the JVM’s longstanding challenges: application startup and warmup. He’ll explore approaches including GraalVM Native Image, OpenJDK Project Leyden, JIT-as-a-Service, and Project CRaC, explaining how they can reduce or even eliminate the time required for Java applications to reach peak performance.
The second talk will put your knowledge of modern Java to the test. In a fun, interactive session, Simon will present a series of puzzlers involving recent language features and ask the audience to predict what the code will do. Be prepared for some unexpected answers!
Whether you are interested in JVM performance, the evolution of the Java language, or simply want to challenge your Java knowledge, this is an event you won’t want to miss.
Schedule:
- 6:00 PM to 6:30 PM: Networking + 🍕🥤
- 6:30 PM: Talks + Q&A
Keeping Your Java Hot by Solving the JVM Startup and Warmup Problem
Java bytecodes and class files deliver on the original vision of “write once, run anywhere”. Using a Just-in-Time (JIT) compiler allows JVM-based applications to compile only the code that’s used frequently and optimise it precisely for how it's used. Using techniques like speculative optimisation can often deliver better performance than static, Ahead-of-Time (AOT) compiled code.
However, this flexibility and performance come at a cost. Each time the JVM starts an application, it must perform the same analysis to identify hot spots in the code and compile them. This is referred to as the application warmup time.
In this session, we’ll look at several approaches to alleviating or even eliminating this problem. Specifically:
- Static compilation of Java code ahead-of-time (AOT). Specifically, the Graal native image approach
- Generating a JIT compiler profile of a running, warmed-up application that can be reused when the same application is restarted, eliminating the need for much of the JIT compilation. This will include details of the work of the OpenJDK Project Leyden.
- Decoupling the JIT compiler from the JVM for a Cloud environment. Providing a centralised JIT-as-a-Service allows caching of compiled code and offloading the compilation work when new code must be compiled.
- Creating a checkpoint of a running application. This includes all application state (heap, stack, etc.) in addition to the JIT-compiled code. Project CRaC will be used as an example.
At the end of the session, you’ll be all set to keep your Java hot!
Modern Java Puzzlers
Since JDK 9, Java, as a language, has evolved faster than at any point in its 30-year history. For developers, this is great, as it means we get more new features that make our code more concise and, hopefully, easier to read and understand.
All new language features also bring their quirks and possibly unseen consequences.
In this fun interactive session, we’ll examine a range of recent language features and pose questions to the audience about how the code works and what it does.
We’ll cover many of the new language features from recent releases, including switch expressions, sealed classes and pattern matching.
The answers will most definitely not always be as you expect!
About Simon
Simon Ritter is the Deputy CTO of Azul Systems. Simon joined Sun Microsystems in 1996 and spent time working in both Java development and consultancy. He has been presenting Java technologies to developers since 1999 focusing on the core Java platform as well as client and embedded applications.
Now at Azul Systems he continues to help people understand Java and Azul’s JVM products. He represents Azul on the JCP Executive Committee as well as the JSR Expert Groups for Java SE 9 and later.
