Adrian Brock wrote:
So a 291 module that hasn't been updated to reflect changes from 294 would just expose package exports and the importing 277 module would know how to deal with that?
A 291 module which exports packages is fundamentally exporting public types, which will continue to work across module boundaries. If a JAM module imports a 291 module, it'll know how to deal with this if getExportedClasses() is not supported in the imported ModuleDefinition.
The 291 module classes would be like legacy classes that don't belong to a module in the 294 sense. i.e. Class.getModuleInfo() would return null
Types which are not in a named module are in the unnamed module; the changes in the Java Language Specification (JLS) will say this. null is probably as good a value as any for representing this.
- Stanley