Modules

34 → Modules & SPI

Previous: 33 TestingNext: 35 Serialization

▶️ pkg15modules/modules1JpmsConcepts.java · modules2ServiceLoaderSpi


Java Platform Module System (JPMS)

module-info.java declares:

java
1module com.myapp {2    requires java.sql;           // depends on3    exports com.myapp.api;       // public API4    opens com.myapp.internal to spring.core;  // reflection5}

Why modules? Strong encapsulation, smaller runtime images (jlink), explicit dependencies.


ServiceLoader (SPI)

Define interface in one module, implementations in others, discover at runtime:

code
1META-INF/services/com.example.Encoder · lists impl classes2ServiceLoader.load(Encoder.class)

See pkg15modules/spi-demo/ for a working example.

Related → Modules.md

Related → 10 Java 9→21 Features

Next → 35 Serialization