f4b6a3 / uuid-creator

UUID Creator is a Java library for generating Universally Unique Identifiers.
MIT License
432 stars 44 forks source link

Java Modules #43

Closed xenoterracide closed 3 years ago

xenoterracide commented 3 years ago

Looks like I can't use your module with a module-info, I think it's missing either an Automatic-Module name or whatever in MANIFEST.mf, although at this point it might be better to just add the module-info.java

fabiolimace commented 3 years ago

I just released the version 3.7.3

The module name is the package name: com.github.f4b6a3.uuid.

I chose to define it in the 'MANIFEST.MF' file because it is the easiest way to support the JDK9+ modular system.

Please let me know if you can now use with a 'module-info.java' file.

xenoterracide commented 3 years ago

yep, I can now compile, with it.. probably good someday to have your own module-info.java file, but doesn't have to be there yet. Though I think that has more performance benefits, as it tells what things it requires, and what packages you're exporting. regardless, thanks.

xenoterracide commented 3 years ago

The module descriptor for an automatic module does not declare any dependences (except for the mandatory dependency on java.base), and does not declare any exported or open packages. Automatic module receive special treatment during resolution so that they read all other modules in the configuration. When an automatic module is instantiated in the Java virtual machine then it reads every unnamed module and is treated as if all packages are exported and open.

just means that certain forms of classpath scanning might be a little less efficient I guess... I'm not going to pretend to fully understand all implications.

fabiolimace commented 3 years ago

I will definitely create the descriptor file. There are some internal packages that prefer not to expose.

Thanks for reporting the issue.

xenoterracide commented 3 years ago

I'm not 100% certain, but if you do, you may have to either split build artifacts with jdk 11+ using -release, or just create a new major version that requires java9+. I could be totally wrong about that though, best to test.