If you were to allow jme to take the first step towards modularization by assigning an automatic module name, what would be the recommended names for the modules?
For example:
project jme3-bullet-native-android
as a module,
jme3.bullet.native.android
or use the com.jme3, then project name, com.jme3.jme3.bullet.native.android
The name of a module should correspond to the name of its principal exported package. If a module does not have such a package, or if for legacy reasons it must have a name that does not correspond to one of its exported packages, then its name should still start with the reversed form of an Internet domain with which its author is associated.
I haven’t had a need for this at all yet (and I still get cold sweats thinking about other packaging schemes)… so I don’t know what the common lore is here.
If it were me, I’d find packages where there is an overall umbrella with lots of sublibraries and see what they do. What does spring do? What does google do with gson, guava, etc.? That’s my approach for learning what’s stupid and what’s just dumb until I can form a strong opinion.
The thing that interested me about modularization is blocking reflection. Sorta like obfuscation for free if done right, at least they make it sound like it is.
Since this is auto-generating the module names at compile time, it’d be simple enough to gate on the version of the compiler being used, would it not?
I’ve thought a couple of times that sub-project-as-module would be a good first pass, because when the sub-project structure was designed, module was what was wanted in the first place. It just hadn’t been invented yet.
What do you mean “require”? “Require” in that in order to use this feature, you need java 9 (then not really required). Or “Require” in that even having these options in your manifest will break java 8?
…which would be very strange because you can normally put whatever weird crap you want in a jar manifest file.