You can now experiment with unsupported versions as of
commit 69efaa6 by specifying the "-XDallVersions" flag along with a "-source" version through Java 17. Since j2objc uses javac for its front-end, many new language features are immediately available if they have no impact on generated code or add to the JRE. In Java 11, for example, the "var" keyword was free since javac handled it, whereas the "not" Predicate method wasn't since it was a JRE change. So try the features you're interested in, and let everyone know what works "out of the box."
The jre_emul library is largely a fork of the
Android libcore library, so if a JRE feature isn't part of that library, it's unlikely to be in jre_emul. For example, in Java 11 readString() and writeString() methods were added to the Files class,
but currently aren't in libcore. We could certainly use the OpenJDK version of that class, but won't because j2objc's primary purpose is to support cross-platform Java, especially on Android. That's also why there's no hurry to jump on new Android JRE classes, as Android teams need to write to the Android version that is available on all devices they support, and therefore won't be using the new API immediately.
One thing we don't currently support is javac's --enable-preview flag to try out preview features, but I'll be adding that soon pending code review.