The invokedynamic instruction added in Java 7 makes it possible to resolve method calls dynamically at runtime.
How Java is moving toward pattern matching, improved enums, and better switch statements
The need to encapsulate the runtime is fundamentally caused by Java’s nature as an open programming environment.
Just because you can break the rules, doesn’t mean you should break the rules—unless you have a good reason.
Scan, inspect, generate, and transform bytecodes on the fly with the ASM library.
They’ve been around since Java 7, but not everyone knows how to use the NIO.2 file I/O facilities.
Special bytecodes make calling methods particularly efficient. Knowing how they operate reveals how the JVM executes your code.
Look into the bytecode to see how Java handles lambdas.
Get a stream of high-volume data points about your running app.
See how virtual threads bring back the old days of Java’s green threads—that is, Java threads not tied to operating-system threads.
A first look at how Java 14’s data records will change the way you code
Read them, reread them, share them.
For years, some important articles have not been available on the magazine website. They are now.
Use these Java language improvements to make your code easier to write, read, and maintain.
Java 14 contains more new features than the previous two releases—most of them aimed at easing coding.
Complex analysis of variables’ scope enables a variety of subtle optimizations.
The JDK defaults for HotSpot are great, but sometimes you want to tinker.
The Java Champions say these are a few of their favorite things.
Here’s what happens when good code meets bad people.
An elaborate mechanism for reducing loop iterations improves performance but can be thwarted by inadvertent coding.