You are viewing content from a past/completed QCon -


How the HotSpot and Graal JVMs execute Java Code

When Java was released in 1995 it was slow, a reputation it has carried for many years… Today Java can give performance that is comparable to C++ and can emit instructions that are more optimal than code which is statically compiled. But how?  

This talk will explore practical examples and the subsystems that are involved in interpreting, compiling and executing a simple Hello World Application. We will dive into JIT compilation and the arrival of the JVM Compiler Interface (JVMCI) to explore how optimisations are applied to boost the performance of our application. We will discuss HotSpot, explore Graal and the JVM ecosystem to discover performance benefits of a platform 25 years in the making.

What is the work you're doing today?

I work at Morgan Stanley as a Java developer and architect. My main work is around APIs and API gateways. That includes working on architectural components like our cloud strategy, building API infrastructure and all kinds of Java related projects along the way. Besides focusing on the architecture side of things I'm still actively involved in writing code, building gateways in Java using Spring Cloud Gateway and previous Apache Camel.

What are your goals for the talk?

I've been working on a talk which I started four or five years ago when I was teaching graduate students with Ben Evans around what happens with Java code and what happens within the Java virtual machine. Initially, it was exploratory learning for myself, I’m a big believer that to teach something you have to really understand it. As it evolved into more of a complete talk, I started to build more demos and examples to learn about more things myself. It was also where the idea for what eventually became the book Optimizing Java was coined.

What do you want people to leave the talk with?

James Key takeaways would be understanding of Java as a platform and how developers can explore this themselves. I want people to understand how the JVM works, the different subsystems work along the way, and to get an introduction and an understanding to JIT compilation and the differences between Hotspot and Graal.


James Gough

Co-author of Optimizing Java

James (Jim) Gough is an executive director and developer at Morgan Stanley, where he’s focused on building customer-facing technology. A Java developer and author, Jim first became interested in Java during his degree program at the University of Warwick; after graduating, he became a...

Read more
Find James Gough at:


Windsor, 5th flr.


Evolving Java


LondonInterview AvailableJava 11JVM


From the same track

SESSION + Live Q&A Java 11

Live Coding 12-Factor App

Planning to build microservices? The best practice of building a first-class Cloud Native Microservice is to follow 12-Factor app.But how do you fulfil the 12-factor app rules, e.g. how do you externalise the configuration, fault tolerance, etc?    Come to this session to watch the live...

Emily Jiang

STSM, Liberty Microservice Architect and Advocate @IBM

SESSION + Live Q&A Java 11

Records and Sealed Types - Coming Soon to a JVM Near You!

OpenJDK's Project Amber has been delivering small improvements for a while now. With the release of Java 14, a group of major new features starts to arrive.The first is Records - a new syntax for declaring a class that "just holds data" and fills the same role that tuples do in...

Ben Evans

Java Champion, Author of "Java in a Nutshell"

SESSION + Live Q&A London

A Year With Java 11 in Production!

At the time of QCon London, Revolut will have been running Java 11 in production for over a year!As with all JDK upgrades, this didn't happen overnight - let me tell you a little more about our experience. You will hear about our journey, what surprised us, and what we found better than...

Andrzej Grzesik

Platform @RevolutApp

SESSION + Live Q&A London

Java in Containers - Part Deux

Containers are everywhere in modern cloud workloads, but that doesn’t mean everything's roses! Container isolation imposes a de-facto additional complexity layer, i.e. a virtual machine, and running unprivileged containers is not a simple task. How do containers affect the ergonomics of...

David Delabassee

Developer Advocate in the Java Platform Group @Oracle

View full Schedule