What makes the FRC utilities incompatible with Java 9+?

I had both Java 8 and 10 installed on my laptop, and 10 was the default version. So when I tried running SmartDashboard.jar, it did not start because of the version incompatibility. Running in command prompt gives a message about java not being able to find the main class (or something similar, I could not remember).

What I’m curious about is why does this happen? AFAIK, Java 9 or 10 doesn’t introduce any language changes that could break the existing code, and certainly not .class files that have already been compiled! Furthermore, even though SmartDashboard can’t even be started, Shuffleboard starts perfectly fine (even though afterwards there is a message put in by the developers saying the java version is not compatible). And personally, I’ve never had an instance where my pre-existing code breaks because of my transition from Java 8 to 10. So what’s so special about the FRC/WPILib utilities that makes them incompatible with Java versions 9+?

Both ShuffleBoard and SmartDashboard support arbitrary plugins being loaded. The module changes in Java 9 changed the way some of this loading worked in a non backwards compatible way. API’s were added in 9 to work around this, but those APIs were not in 8. So we could support either 8 or 9, and because the roboRIO was still on 8, the decision was made to stay on 8 for the 2018 season.

For the 2019 season, all the tools are compiled for Java 11, and will require Java 11 to run. The JavaFX changes in 11 made this a requirement if we wanted to upgrade.