A note from this newsletter's sponsor

At the new feature level we have a JIT-C plugin capability - 243 -
yes, you can now replace hotspot with your own compiler! JMH with a
benchmark suite is included so you can run benchmarks to compare
versions - 230. jcmd will now be able to alter some fine-grained JIT
compiler directives at runtime, and of course you can define them
statically at startup - 165, this may be particularly useful for
those low latency applications with warmup concerns.

At the high level we have Flow* Reactive Streams interfaces - 266
(Flow.Processor, Flow.Publisher, Flow.Subscriber, Flow.Subscription);
we have convenience collection factories for creating (immutable)
collections - 269, you can now write List l = List.of(a, b, c) or
Map m = Map.of(k1, v1, k2, v2), letting you create your collection
in a nice easily readable format and also getting a more efficient
form because knowing they're immutable means a specialized data
structure can be used. It's not minimal perfect hashing yet, but
that's doable. And finally, java.lang.invoke.VarHandle gives you
properly supported access to capabilities that were previously
restricted to sun.misc.Unsafe. This is likely to be the most
far-reaching change, with libraries that previously shied away from
hacking sun.misc.Unsafe, now converting to use VarHandles. Look at the
JEP or VarHandle if you want more detail.

Now on to those JEP links, our usual links to tools, articles, news,
talks, blogs. And if you need the tips from this month's articles and
talks, as ever they are extracted into
this month's tips page.