Modern Java

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.

Java 23+ (JEP 476 Preview)

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