110. Module Import Declarations
import module java.base; imports all public packages exported by an entire module in a single line, vastly streamlining beginners, scripts, and modern microservices.
Explanation
Java programs historically began with long, repetitive lists of package-level imports: ``java import java.util.List; import java.util.Map; import java.util.stream.Stream; import java.util.stream.Collectors; import java.io.IOException; import java.nio.file.Files; `` For simple utilities, scripts, education, or microservices, this import preamble adds clutter without meaningful documentation value.
JEP 476 (Java 23) introduces Module Import Declarations. Writing import module <ModuleName>; brings in all public top-level classes and interfaces from every package exported by that module. Because java.base exports java.lang, java.util, java.io, java.nio, java.math, java.net, and more, adding: ``java import module java.base; ` instantly gives access to List, Map, Files, Path, Collectors, CompletableFuture, and BigDecimal` without any individual import statements!
If a name ambiguity arises (e.g. java.util.Date vs java.sql.Date), an explicit single-type import takes precedence to resolve the ambiguity cleanly.
Example
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.io.IOException;
import java.nio.file.Files;Sources
- https://openjdk.org/jeps/476 โ JEP 476: Module Import Declarations (Java 23)
- https://inside.java/2024/06/10/module-import-declarations/ โ Inside Java: Module Imports