How has automatic modules changed in recent Java versions?

Automatic modules in Java have evolved with newer versions of the Java platform, particularly since the introduction of the Java Platform Module System (JPMS) in Java 9. Initially, automatic modules were intended to provide a way to allow existing JAR files to be used in a modular environment without modifying them to explicitly declare their dependencies. With updates in Java versions, the rules and behaviors governing automatic modules have become more refined, enhancing compatibility and providing developers with better tools for managing dependencies.

        // Example of an automatic module in Java
        // Assuming a JAR file named 'example.jar' contains 'module-info.class' for a named module
        // If 'example.jar' does not have 'module-info.class', 
        // it can still be used as an automatic module.
        public class AutomaticModuleExample {
            public static void main(String[] args) {
                System.out.println("This is an example of using an automatic module in Java.");
            }
        }
    

automatic modules Java modules JPMS Java 9 Java version updates JAR files module-info.class