James Gough

Distinguished Engineer, Java Champion, Speaker and Author

2020

QCon London

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.

The slides for the talk can be found here. There is also video/audio available from the QCon event hosted on InfoQ.

O’Reilly Software Architecture Conference - New York

Building Specifying and Testing APIs with Microservices

The workshop is Open Source and can be found on GitHub.

API Gateways: The good, the bad and the ugly

Microservices are everywhere, and when implemented properly can give significant architectural advantages. However, there’s also the counter to this where concerns aren’t thought through, and the bad or even ugly side of microservices can emerge. API gateways are a key architectural pattern that solve a whole range of problems, including routing and even security. They can be used off the shelf without considering the various factors and features—until you find yourself in a gun-slinging outage.

James Gough and Matthew Auburn outline why you should use an API gateway, the patterns you can use, and the problems it will solve for you. You’ll explore technical implementation details and concerns addressed in code for building API gateways and get a glimpse of the ugly side of getting things wrong. Along the way, you’ll discover why testing with gateways and microservices is key and how test containers and chaos engineering helps ensure your ecosystem works as planned and scales effectively. Join in to escape the microservices Wild West.

A video is available via the O’Reilly platform.

2019

O’Reilly Software Architecture Conference - Berlin

Building Specifying and Testing APIs with Microservices

For more information see 2020.

The workshop is Open Source and can be found on GitHub.

QCon Shanghai

API Gateways: The good, the bad and the ugly

For more information on the session see 2020.

There is a video of QCon Shanghai available.

2018

O’Reilly Software Architecture Conference - New York

Building APIs with microservices: Things I wish I’d known

Moving from a traditional monolithic architecture to microservices can be a serious challenge even before adding an API program on top of this, along with a culture shifting toward a more Agile way of working.

Jim Gough walks you through an introduction to understanding the rapidly changing world of APIs with microservices, including key technologies and patterns, approaches to API management, and instigating a culture change. The talk will be a balance between short snappy live code examples and slides for discussion points. There’s a lot to explore, so expect ideas to come thick and fast tying together to build an overview of this exciting technology space.

Topics include:

The slides for this talk can be found here. Videos of the demonstrations will be available soon.

Devoxx UK

Optimizing Java: A brief tour of the JVM

At Devoxx UK I gave a presentation on Optimizing Java and a brief tour of how the JVM works. This was similar to the talk given at the LJC in 2017. The slides can be found here and an accompanying blog post can be found here.

New York Java SIG

Evolution not Revolution - the Java 9 view of memory & how we got here

Great artists steal. Great programming languages steal from each other. In this talk, Ben and Jim will explain the state of the art of the Java Memory Model - taking in such topics as Unsafe, method and var handles and how C++ and Java keep each other on their toes.

Docklands LJC

Sidecar Lightning Talk

At the Docklands LJC I gave a very brief introduction to what a Sidecar is and the advantages and disadvantages. The slides can be found here

2017

London Java Community

How the JVM Executes Java

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 take a tour of code and the journey through the JVM and the optimisations in between. Using practical examples, JVM flags and the Open Source JIT Watch we will explore what the JVM does in an adaptation of the classic Hello World program, you’ll never look at Java in the same way again.

The video of there session is available here

2016

Docklands LJC

HotSpot Under the Hood and Microbenchmarking in Java

This talk will firstly attempt to persuade you that Microbenchmarking is not a good idea and in fact can lead to inaccurate assumptions and poor systems as a result. Despite this warning there will be times when it is necessary, particularly for API designers and writers.

The talk will introduce JMH and talk about how to use it and some of what is happening behind the scenes to make your benchmark as accurate as possible.

It is impossible to gain a good microbenchmarking result, so we will discuss some of the outputs from JMH and how they should be reasoned to attempt to avoid a poor assumption.

The video of this session is available here

2014

In 2014 I recorded a short video for Night Hackers that was filmed at Oracle. The background noise was a little annoying as they decided to use that time to clean away the plates…