Earlier quoted context omitted.
Java now has records, record patterns, pattern matching, and switch expressions. Things that the golang author still don't seem to understand the need for (quite ironic for a language that claims it makes concurrency easy).
Is that more or less ironic than Java copying Go's goroutines and still struggling to add value types?
Java's virtual threads are already superior to golang's approach because they're working on structured concurrency from the start.
Value types are a huge proposition, but they seem to be coming along nicely. They have already baked in nullables/zero values into the design, something that is a pain in golang, and a big gotcha and source of bugs.
The interesting thing is that Java already beats golang because of its superior GCs, particularly in large programs, so it will be interesting to see what sort of performance improvements come out of value types.