Gain a deeper understanding of Java and the JVM
This new edition of my first book is intended for intermediate Java developers who want to level up their skills by gaining a deeper understanding of the Java programming language and the JVM.
We focus on the most key topics, such as concurrency, functional programming, and modern test and deployment that are most relevant to the Java dev who is looking to advance quickly. To properly explain these subjects we introduce some advanced techniques (such as classloading, reflection and using JVM bytecode) and an introductory treatment of the JVM's internals.
We also discuss two non-Java JVM languages (Kotlin and Clojure) to provide alternate viewpoints on our major topics. Learning a bit of these languages will make you a better programmer, whether you're writing Java or another language.
Java performance for software engineers
This book presents a very different view of Java performance analysis.
Rather than presenting a cookbook of tips and tricks, we’ve tried to introduce the subject in all of its complexity, without shying away from the contradictions and trade-offs that are at the heart of performance analysis.
There are also videos available that act as a companion to the book.
An introduction to Java for programmers
This book is an introduction to the Java programming language. It is aimed at people who already know how to program in at least one other language. The current edition is the 7th, and the book covers Java 11, the most popular long-term support release of Java.
I am currently working on an 8th Edition, covering Java 17, which should be published in Autumn 2022.