Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Java Programming/Modules

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Modules __NOTOC__ Since Java 9, one can use modules to better encapsulate code. The Java Platform Module System (JPMS) is used to specify distribution of a collection of packages. A module be used to specify a collection of packages belonging to the public API of a Java program. This is primarily useful for a library, which may contain classes intended for internal use. The module declaration is placed in a file named module-info.java at the root of the module’s source-file hierarchy. The JDK will verify dependencies and interactions between modules both at compile-time and runtime. For example, the following module declaration declares that the module com.foo.bar depends on another com.foo.baz module, and exports the following packages: com.foo.bar.alpha and com.foo.bar.beta: module com.foo.bar { requires com.foo.baz; exports com.foo.bar.alpha; exports com.foo.bar.beta; } Java modules use the following keywords: exports: used in a module declaration to specify which packages are available to other modules module: declares a module open: indicates that all classes in a package are accessible via reflection by other modules opens: used to open a specific package for reflection to other modules provides: used to declare that a module provides an implementation of a service interface requires: used in a module declaration to specify that the module depends on another module to: used with the opens directive to specify which module is allowed to reflectively access the package transitive: used with the requires directive to indicate that a module not only requires another module but also makes that module's dependencies available to modules that depend on it uses: used in a module to declare that the module is using a service (i.e. it will consume a service provided by other modules) with: used with the provides directive to specify which implementation of a service is provided by the module As of Java 25, modules can themselves be imported, automatically importing all exported packages. This is done using import module. For example, import module java.sql; is equivalent to import java.sql.*; import javax.sql.*; // Remaining indirect exports from java.logging, java.transaction.xa, and java.xml Similarly, import module java.base;, similarly, imports all 54 packages belonging to java.base. import module java.base; /** * Importing module java.base allows us to avoid manually importing most classes * The following classes (outside of java.lang) are used: * - java.text.MessageFormat * - java.util.Date * - java.util.List * - java.util.concurrent.ThreadLocalRandom */ public class Example { public static void main(String[] args) { List<String> colours = List.of("Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"); IO.println(MessageFormat.format("My favourite colour is {0} and today is {1,date,long}", colours.get(ThreadLocalRandom.current().nextInt(colours.size())), new Date() )); } } 100%