A peek into Java 17: Continuing the drive to encapsulate the Java runtime internals

By Ben Evans Java 16, Java 17, JVM Internals

The need to encapsulate the runtime is fundamentally caused by Java’s nature as an open programming environment.

Understanding Java method invocation with invokedynamic

By Ben Evans Coding, JVM Internals

The invokedynamic instruction added in Java 7 makes it possible to resolve method calls dynamically at runtime.

Mastering the mechanics of Java method invocation

By Ben Evans Coding, JVM Internals

Special bytecodes make calling methods particularly efficient. Knowing how they operate reveals how the JVM executes your code.

Going inside Java’s Project Loom and virtual threads

By Ben Evans Coding, JVM Internals

See how virtual threads bring back the old days of Java’s green threads—that is, Java threads not tied to operating-system threads.

Behind the scenes: How do lambda expressions really work in Java?

By Ben Evans Coding, Java SE, JVM Internals

Look into the bytecode to see how Java handles lambdas.

The Unsafe Class: Unsafe at Any Speed

By Ben Evans Coding, Java SE, JVM Internals

Just because you can break the rules, doesn’t mean you should break the rules—unless you have a good reason.

Java Flight Recorder and JFR Event Streaming in Java 14

Get a stream of high-volume data points about your running app.

Records Come to Java

A first look at how Java 14’s data records will change the way you code

Inside the Language: Sealed Types

How Java is moving toward pattern matching, improved enums, and better switch statements

Real-World Bytecode Handling with ASM

By Ben Evans JVM Internals, Security

Scan, inspect, generate, and transform bytecodes on the fly with the ASM library.