Java has now pattern matching, ADTs, case classes, even lazy vals are coming ("Stable values" previewed in JDK 25). Java is still much more verbose than Scala, but if you use it considerately, it looks more and more like an ML-like language, and not an imperative one.
"if" not being an expression is my main personal pain point for the time being. It would make simple code so much more readable.
Up to Java 21,
https://advancedweb.hu/a-categorized-list-of-all-java-and-jv...
Remaining ones until Java 24, released last week,
https://www.infoworld.com/article/2335077/jdk-22-the-new-fea...
https://www.infoworld.com/article/2336682/jdk-23-the-new-fea...
https://www.infoworld.com/article/3491404/jdk-24-the-new-fea...
Additionally, commercial AOT compilers have taken a big hit, as two great options are now freely available,
https://www.graalvm.org (Basically LLVM, but in Java)
https://eclipse.dev/openj9/docs/aot
With them there is also the rise of AOT friendly frameworks like Quarkus and Micronaut.