The need to encapsulate the runtime is fundamentally caused by Java’s nature as an open programming environment.
Java Champions love pattern matching for instanceof, records, Stream.toList(), the vector API, the foreign linker API, and the foreign-memory access API.
Information from the Oracle Java Platform Group and from Java Magazine
The Java Champions say these are a few of their favorite things.
The invokedynamic instruction added in Java 7 makes it possible to resolve method calls dynamically at runtime.
Porting Java to the AArch64 architecture is a JEP 388 success story.
Special bytecodes make calling methods particularly efficient. Knowing how they operate reveals how the JVM executes your code.
How false sharing and branch misprediction can have unwanted effects on your code’s performance
You can understand application performance—and optimize your software approach—by understanding how CPUs, memory, and caches affect execution.
See how virtual threads bring back the old days of Java’s green threads—that is, Java threads not tied to operating-system threads.
Look into the bytecode to see how Java handles lambdas.
When Java shows up at a party, it always brings a delicious dessert.
Just because you can break the rules, doesn’t mean you should break the rules—unless you have a good reason.
Get a stream of high-volume data points about your running app.
ZGC, Shenandoah, and improvements to G1 get developers closer than ever to pauseless Java.
The benefits of Java’s memory allocator that does no garbage collection
How Java is moving toward pattern matching, improved enums, and better switch statements
JDK serviceability technologies allow you into the JVM to solve difficult debugging problems.
An elaborate mechanism for reducing loop iterations improves performance but can be thwarted by inadvertent coding.
Scan, inspect, generate, and transform bytecodes on the fly with the ASM library.