Java package

Programmers also typically use packages to organize classes belonging to the same category or providing similar functionality.

Documentation explaining the package as a whole is written as Javadoc in a file named exactly `package-info.java`.

Default (package-private) access is enforced when a class or member has not been declared as public, protected or private.

Packages are usually defined using a hierarchical naming pattern, with some levels in the hierarchy separated by periods (., pronounced "dot").

In general, a package name begins with the top level domain name of the organization and then the organization's domain and then any subdomains, listed in reverse order.

[7] In Java 9 (released on September 21, 2017) support for "modules", a kind of collection of packages, was implemented as a result of the development effort of Project Jigsaw.

The "modules" were earlier called "superpackages" and originally planned for Java 7.

Since Java 9, the JDK is able to check the module dependencies both at compile time and runtime.