How does the `module-info.java` file function in a Java module?
The `module-info.java` file defines the public API of the module and controls which internal classes are accessible to other modules.
Thatâ€™s partially correct. The `module-info.java` file does define module accessibility, but it's more about defining which packages are exported, not individual classes.
Can you explain the difference between `exports` and `opens` in `module-info.java`?