Do I understand correctly that in JPMS there is always only one unnamed module?
In short
Generally speaking, no. But let's say this: if you put some or even all JAR files in the class path, and your application does not create class loaders to load any additional content, then there is only one unnamed module that you need to take care of.
More details
Each ClassLoader has its own unnamed module , which it uses to represent the classes that it loaded from the class path. This is necessary because the modular system requires everything to be in the module.
As nullpointer's answer explains in detail, the default application will use three separate class loaders. Perhaps he can deploy his own class loaders, for example, to load plugins. However, if this is not the case, all the application code will end up in the bootloader of the system / application class and, therefore, in the same unnamed module. That's why usually only one is needed that you need to take care of.
Does this mean that applications that were developed prior to Java9 and not updated for Java9 will be downloaded as one unnamed module?
This has nothing to do with whether the code (application, frameworks, libraries) is Java 9 - it only depends on which way you place the JAR, the class path or the module path .
If it is on the path to the class, it falls into the unnamed module along with other contents of the class path. This is true for simple JARs without a module descriptor, but also for modular JARs that contain one.
If it is on the way to the module, it gets its own module. If it is a modular JAR, it receives an explicit module like the ones described in the entire state of the module system โ simple JAR files turn into automatic modules (note the plural: one automatic module per JAR).