A considerable amount of contemporary software is targeted to run in some instance of a software-mediated execution environment, usually called a managed runtime environment or a virtual execution environment. The Java Virtual Machine (JVM), originally designed to run software written in Java, is one of such environments and is currently a target for other relevant programming languages, such as Kotlin, Scala, Groovy or Clojure.
This book explores the capabilities and techniques of managed runtime environments, with a focus on the Java Virtual Machine (JVM).
We use both Java and Kotlin as programming languages, exploring their interoperability within the JVM ecosystem.
Geared towards developers proficient in both Java and Kotlin, this book assumes familiarity with Kotlin features such as generics, scope functions, lambdas with receivers, null safety, and more.