JPMS Modules and Strong Encapsulation

A module declares dependencies and exported packages.

module com.example.orders {
    requires java.net.http;
    exports com.example.orders.api;
}

exports controls package access across modules. opens is relevant when reflective access to otherwise encapsulated packages is required.

Packages organize names; modules define a larger dependency and encapsulation boundary.

Key Takeaways
  • Packages and modules solve different levels of organization.
  • exports controls cross-module accessibility.
  • opens is relevant to reflective access.