<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Java_Platform_Module_System</id>
	<title>Java Platform Module System - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Java_Platform_Module_System"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Java_Platform_Module_System&amp;action=history"/>
	<updated>2026-04-16T15:18:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=Java_Platform_Module_System&amp;diff=11859694&amp;oldid=prev</id>
		<title>imported&gt;Vestrian24Bio: Post-move cleanup, following swap of HotSpot (virtual machine) and HotSpot: Changed link from HotSpot (virtual machine) to HotSpot using Move+</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Java_Platform_Module_System&amp;diff=11859694&amp;oldid=prev"/>
		<updated>2025-12-13T13:54:49Z</updated>

		<summary type="html">&lt;p&gt;Post-move cleanup, following &lt;a href=&quot;/index.php?title=WP:ROBIN&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:ROBIN (page does not exist)&quot;&gt;swap&lt;/a&gt; of &lt;a href=&quot;/index.php/HotSpot_(virtual_machine)&quot; class=&quot;mw-redirect&quot; title=&quot;HotSpot (virtual machine)&quot;&gt;HotSpot (virtual machine)&lt;/a&gt; and &lt;a href=&quot;/index.php/HotSpot&quot; title=&quot;HotSpot&quot;&gt;HotSpot&lt;/a&gt;: Changed link from &lt;a href=&quot;/index.php/HotSpot_(virtual_machine)&quot; class=&quot;mw-redirect&quot; title=&quot;HotSpot (virtual machine)&quot;&gt;HotSpot (virtual machine)&lt;/a&gt; to &lt;a href=&quot;/index.php/HotSpot&quot; title=&quot;HotSpot&quot;&gt;HotSpot&lt;/a&gt; using &lt;a href=&quot;/index.php/User:BilledMammal/Move%2B&quot; title=&quot;User:BilledMammal/Move+&quot;&gt;Move+&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|Distribution format for Java code and resources}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Java Platform Module System&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;JPMS&amp;#039;&amp;#039;&amp;#039;) specifies a distribution format for collections of [[Java (programming language)|Java]] code and associated resources.&amp;lt;ref&amp;gt;{{cite web| url=http://openjdk.java.net/projects/jigsaw/spec/| title=Java Platform Module System (JSR 376)| publisher=[[Oracle Corporation]]| accessdate=2018-07-02}}&amp;lt;/ref&amp;gt; It also specifies a repository for storing these collections, or &amp;#039;&amp;#039;[[modular programming|modules]]&amp;#039;&amp;#039;, and identifies how they can be discovered, loaded and checked for integrity. It includes features such as namespaces with the aim of fixing some of the shortcomings in the existing [[JAR (file format)|JAR]] format, especially the [[Java class loader#JAR hell|JAR Hell]], which can lead to issues such as classpath and class loading problems.&lt;br /&gt;
&lt;br /&gt;
The Java Module System was initially being developed under the [[Java Community Process]] as JSR 277 and was scheduled to be released with Java 7.&lt;br /&gt;
&lt;br /&gt;
JSR 277 later was put on hold and Project Jigsaw&amp;lt;ref name=&amp;quot;jigsaw&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/projects/jigsaw/&lt;br /&gt;
| title=Project Jigsaw &lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2015-11-29}}&amp;lt;/ref&amp;gt; was created to modularize the JDK. This JSR was superseded by JSR 376 (Java Platform Module System).&lt;br /&gt;
&lt;br /&gt;
Project Jigsaw was originally intended for [[Java 7]] (2011) but was deferred to [[Java 8]] (2014) as part of Plan B,&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://mreinhold.org/blog/plan-b&lt;br /&gt;
| title=It&amp;#039;s time for … Plan B&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| author=Mark Reinhold&lt;br /&gt;
| date=2009-09-20&lt;br /&gt;
| accessdate=2017-06-21}}&amp;lt;/ref&amp;gt; and again deferred to a [[Java 9]] release in 2017.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/projects/jdk9/&lt;br /&gt;
| title=JDK 9&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2016-02-24}}&amp;lt;/ref&amp;gt; Java 9 including the Java Module System was released on September 21, 2017.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 | url = https://www.oracle.com/corporate/features/understanding-java-9-modules.html&lt;br /&gt;
 | title = Understanding Java 9 Modules: What they are and how to use them&lt;br /&gt;
 | publisher = Oracle Corporation&lt;br /&gt;
 | access-date = 8 December 2025&lt;br /&gt;
 | archive-url = https://web.archive.org/web/20220814230906/https://www.oracle.com/corporate/features/understanding-java-9-modules.html&lt;br /&gt;
 | archive-date = 14 August 2022&lt;br /&gt;
 | url-status = dead&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.techworld.com/news/developers/java-9-release-date-new-features-3660988/|title=Java 9: Release date and new features|publisher=techworld.com|date=2017-07-21|accessdate=2017-11-18}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
The Java Module System implemented in Java 9 includes the following [[JDK Enhancement Proposal|JEP]]s and [[Java Community Process|JSR (Java Specification Request)]]:&amp;lt;ref name=&amp;quot;jigsaw&amp;quot;/&amp;gt;&lt;br /&gt;
* JEP 200: The Modular JDK: Define a modular structure for the JDK&lt;br /&gt;
* JEP 201: Modular Source Code: Reorganize the JDK source code into modules, enhance the build system to compile modules, and enforce module boundaries at build time&lt;br /&gt;
* JEP 220: Modular Run-Time Images: Restructure the JDK and JRE run-time images to accommodate modules and to improve performance, security, and maintainability&lt;br /&gt;
* JEP 261: Module System: Implement the Java Platform Module System&lt;br /&gt;
* JEP 282: The Java Linker: Create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/jeps/282&lt;br /&gt;
| title=jlink: The Java Linker (JSR 282)&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2016-03-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* JSR 376: Java Platform Module System&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/projects/jigsaw/spec/&lt;br /&gt;
| title=Java Platform Module System (JSR 376)&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2015-11-29}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, several other JDK 9 features have been added to ease transition to the module system:&lt;br /&gt;
* JEP 238: Multi-Release JAR Files: Extend the JAR file format to allow multiple, Java-release-specific versions of class files to coexist in a single archive.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/jeps/238&lt;br /&gt;
| title=JEP 238: Multi-Release JAR Files&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2017-07-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* JEP 253: Prepare [[JavaFX]] UI Controls &amp;amp; CSS APIs for Modularization: Define public APIs for the JavaFX functionalities that is presently only available via internal APIs and would become inaccessible due to modularization.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/jeps/253&lt;br /&gt;
| title=JEP 253: Prepare JavaFX UI Controls &amp;amp; CSS APIs for Modularization&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2017-07-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* JEP 260: Encapsulate Most Internal APIs: Make most of the JDK&amp;#039;s internal APIs inaccessible by default but leave a few critical, widely used internal APIs accessible, until supported replacements exist for all or most of their functionality.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/jeps/260&lt;br /&gt;
| title=JEP 260: Encapsulate Most Internal APIs&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2017-07-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* JEP 275: Modular Java Application Packaging: The [[Java packager]] will evolve for JDK 9, making it aware of modules, allowing for example to package a module and all the modules it depends on.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/jeps/275&lt;br /&gt;
| title=JEP 275: Modular Java Application Packaging&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| accessdate=2017-07-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Properties of modules ==&lt;br /&gt;
&lt;br /&gt;
Modules are used to group packages and tightly control what packages belong to the public API. Contrary to [[JAR (file format)|Jar files]], modules explicitly declare which modules they depend on, and what packages they export.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://openjdk.java.net/projects/jigsaw/spec/sotms/&lt;br /&gt;
| title=The State of the Module System&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| author=Mark Reinhold&lt;br /&gt;
| date=2016-03-08&lt;br /&gt;
| accessdate=2017-02-18}}&amp;lt;/ref&amp;gt; Explicit dependency declarations improve the integrity of the code, by making it easier to reason about large applications and the dependencies between software components.&lt;br /&gt;
&lt;br /&gt;
The module declaration is placed in a file named {{mono|module-info.java}} at the root of the module&amp;#039;s source-file hierarchy. The JDK will verify dependencies and interactions between modules both at compile-time and runtime.&lt;br /&gt;
&lt;br /&gt;
For example, the following module declaration declares that the module {{code|com.foo.bar}} depends on another {{code|com.foo.baz}} module, and exports the following packages: {{code|com.foo.bar.alpha}} and {{code|com.foo.bar.beta}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- We manually highlight this as Java pymgnets does not support module keywords and a C++ block is awkward to use for Java --&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;module&amp;#039;&amp;#039;&amp;#039; com.foo.bar {&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;requires&amp;#039;&amp;#039;&amp;#039; com.foo.baz;&lt;br /&gt;
 &lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;exports&amp;#039;&amp;#039;&amp;#039; com.foo.bar.alpha;&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;exports&amp;#039;&amp;#039;&amp;#039; com.foo.bar.beta;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The public members of {{code|com.foo.bar.alpha}} and {{code|com.foo.bar.beta}} packages will be accessible by dependent modules. Private members are inaccessible even through a means such as [[reflective programming|reflection]]. Note that in [[Java version history|Java versions]] 9 through 16, whether such &amp;#039;illegal access&amp;#039; is &amp;#039;&amp;#039;de facto&amp;#039;&amp;#039; permitted depends on a command line setting.&amp;lt;ref name=&amp;quot;JEP 396: Strongly Encapsulate JDK Internals by Default&amp;quot;&amp;gt;{{cite web | url=https://openjdk.java.net/jeps/396 | title=JEP 396: Strongly Encapsulate JDK Internals by Default | access-date=2021-02-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JDK itself has been modularized in [[Java version history#Java SE 9|Java 9]].&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html&lt;br /&gt;
| title=JDK Module Summary&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| date=2016-06-24&lt;br /&gt;
| accessdate=2017-02-18&lt;br /&gt;
| archive-date=2015-12-08&lt;br /&gt;
| archive-url=https://web.archive.org/web/20151208074800/http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html&lt;br /&gt;
| url-status=dead&lt;br /&gt;
}}&amp;lt;/ref&amp;gt; For example, the majority of the Java standard library is exported by the module &amp;lt;code&amp;gt;java.base&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
As of Java 25, modules can themselves be imported, automatically importing all exported packages.&amp;lt;ref&amp;gt;{{Cite web|url=https://openjdk.org/jeps/494|title=JEP 494: Module Import Declarations (Second Preview)|website=openjdk.org}}&amp;lt;/ref&amp;gt; This is done using &amp;lt;code&amp;gt;import module&amp;lt;/code&amp;gt;. For example, &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; inline&amp;gt;import module java.sql;&amp;lt;/syntaxhighlight&amp;gt; is equivalent to&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
import java.sql.*;&lt;br /&gt;
import javax.sql.*;&lt;br /&gt;
// Remaining indirect exports from java.logging, java.transaction.xa, and java.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Similarly, &amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot; inline&amp;gt;import module java.base;&amp;lt;/syntaxhighlight&amp;gt;, similarly, imports all 54 packages belonging to &amp;lt;code&amp;gt;java.base&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
package org.wikipedia.examples;&lt;br /&gt;
&lt;br /&gt;
import module java.base;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Importing module java.base allows us to avoid manually importing most classes&lt;br /&gt;
 * The following classes (outside of java.lang) are used:&lt;br /&gt;
 * - java.text.MessageFormat&lt;br /&gt;
 * - java.util.Date&lt;br /&gt;
 * - java.util.List&lt;br /&gt;
 * - java.util.concurrent.ThreadLocalRandom&lt;br /&gt;
 */&lt;br /&gt;
public class Example {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        List&amp;lt;String&amp;gt; colours = List.of(&amp;quot;Red&amp;quot;, &amp;quot;Orange&amp;quot;, &amp;quot;Yellow&amp;quot;, &amp;quot;Green&amp;quot;, &amp;quot;Blue&amp;quot;, &amp;quot;Indigo&amp;quot;, &amp;quot;Violet&amp;quot;);&lt;br /&gt;
        IO.println(MessageFormat.format(&amp;quot;My favourite colour is {0} and today is {1,date,long}&amp;quot;,&lt;br /&gt;
            colours.get(ThreadLocalRandom.current().nextInt(colours.size())),&lt;br /&gt;
            new Date()&lt;br /&gt;
        ));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modules use the following [[List of Java keywords|keywords]]:&lt;br /&gt;
* &amp;lt;code&amp;gt;exports&amp;lt;/code&amp;gt;: used in a module declaration to specify which packages are available to other modules&lt;br /&gt;
* &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt;: declares a module&lt;br /&gt;
* &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;: indicates that all classes in a package are accessible via reflection by other modules&lt;br /&gt;
* &amp;lt;code&amp;gt;opens&amp;lt;/code&amp;gt;: used to open a specific package for reflection to other modules&lt;br /&gt;
* &amp;lt;code&amp;gt;provides&amp;lt;/code&amp;gt;: used to declare that a module provides an implementation of a service interface&lt;br /&gt;
* &amp;lt;code&amp;gt;requires&amp;lt;/code&amp;gt;: used in a module declaration to specify that the module depends on another module&lt;br /&gt;
* &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt;: used with the &amp;lt;code&amp;gt;opens&amp;lt;/code&amp;gt; directive to specify which module is allowed to reflectively access the package&lt;br /&gt;
* &amp;lt;code&amp;gt;transitive&amp;lt;/code&amp;gt;: used with the &amp;lt;code&amp;gt;requires&amp;lt;/code&amp;gt; directive to indicate that a module not only requires another module but also makes that module&amp;#039;s dependencies available to modules that depend on it&lt;br /&gt;
* &amp;lt;code&amp;gt;uses&amp;lt;/code&amp;gt;: used in a module to declare that the module is using a service (i.e. it will consume a service provided by other modules)&lt;br /&gt;
* &amp;lt;code&amp;gt;with&amp;lt;/code&amp;gt;: used with the &amp;lt;code&amp;gt;provides&amp;lt;/code&amp;gt; directive to specify which implementation of a service is provided by the module&lt;br /&gt;
&lt;br /&gt;
== Standard modules ==&lt;br /&gt;
=== Core modules ===&lt;br /&gt;
The modules under namespace &amp;lt;code&amp;gt;java.*&amp;lt;/code&amp;gt; belong to the [[Java Platform, Standard Edition]], and modules under namespace &amp;lt;code&amp;gt;jdk.*&amp;lt;/code&amp;gt; belong to the [[Java Development Kit]].&amp;lt;ref&amp;gt;{{Cite web|url=https://docs.oracle.com/en/java/javase/24/docs/api/index.html|title=Java® Platform, Standard Edition &amp;amp; Java Development Kit Version 24 API Specification|website=docs.oracle.com}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Description  &lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.base}}&lt;br /&gt;
| Defines the core APIs that form the foundation of the Java SE Platform.&lt;br /&gt;
Implicitly required by all modules and does not need to be declared with &amp;lt;code&amp;gt;requires&amp;lt;/code&amp;gt; inside a module declaration.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.compiler}}&lt;br /&gt;
| Defines APIs related to the language model, [[Java annotation]] processing, and the [[Java compiler]]. &lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.datatransfer}}&lt;br /&gt;
| Defines the APIs that facilitate data transfer between applications or within an application.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.desktop}}&lt;br /&gt;
| Defines the [[Abstract Window Toolkit]] (AWT) and [[Swing (Java)|Swing]] libraries for user interfaces, along with APIs for accessibility, audio, imaging, printing, and [[JavaBeans]].&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.instrument}}&lt;br /&gt;
| Defines services that allow for the instrumentation of programs running on the [[Java Virtual Machine]] (JVM).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.logging}}&lt;br /&gt;
| Defines the API for [[Logging (computing)|logging]] events in Java applications (Java Logging API).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.management}}&lt;br /&gt;
| Defines the APIs for the [[Java Management Extensions]] (JMX) framework.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.management.rmi}}&lt;br /&gt;
| Defines the [[Remote Method Invocation]] (RMI) connector for the Java Management Extensions (JMX) Remote API.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.naming}}&lt;br /&gt;
| Defines the API for [[Java Naming and Directory Interface]] (JNDI) services.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.net.http}}&lt;br /&gt;
| Defines the API for [[HTTP client]] and [[WebSocket]] functionality.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.prefs}}&lt;br /&gt;
| Defines the API for managing and storing user preferences.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.rmi}}&lt;br /&gt;
| Defines the Remote Method Invocation (RMI) API for object communication across Java virtual machines.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.scripting}}&lt;br /&gt;
| Defines the API for integrating [[scripting engine]]s into Java applications (Scripting API).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.se}}&lt;br /&gt;
| Defines the standard API for the Java SE Platform.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.security.jgss}}&lt;br /&gt;
| Defines the Java binding for the [[Internet Engineering Task Force|IETF]] [[Generic Security Services Application Programming Interface|Generic Security Services API]] (GSS-API) for security contexts.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.security.sasl}}&lt;br /&gt;
| Defines Java&amp;#039;s support for the [[Simple Authentication and Security Layer]] (SASL) protocol.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.smartcardio}}&lt;br /&gt;
| Defines the API for interacting with [[smart card]] devices (Java Smart Card I/O API).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.sql}}&lt;br /&gt;
| Defines the [[Java Database Connectivity]] (JDBC) API for database interaction.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.sql.rowset}}&lt;br /&gt;
| Defines the JDBC RowSet API for managing and interacting with tabular data in Java.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.transaction.xa}}&lt;br /&gt;
| Defines an API for managing distributed transactions within JDBC.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.xml}}&lt;br /&gt;
| Defines the [[Java API for XML Processing]] (JAXP), including tools for parsing and transforming XML data.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|java.xml.crypto}}&lt;br /&gt;
| Defines the API for [[XML Encryption|cryptographic operations]] with XML data.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.accessibility}}&lt;br /&gt;
| Defines utility classes for implementing [[Assistive technology|Assistive Technologies]] in the JDK.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.attach}}&lt;br /&gt;
| Defines the attach API for connecting to and interacting with a running JVM instance (attach API).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.charsets}}&lt;br /&gt;
| Provides additional [[character encoding|character sets]] ({{mono|charset}}s), including double-byte and IBM-specific charsets, not included in &amp;lt;code&amp;gt;java.base&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.compiler}}&lt;br /&gt;
| Defines the internal implementation of the Java compiler and the command-line tool &amp;#039;&amp;#039;[[javac]]&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.crypto.cryptoki}}&lt;br /&gt;
| Defines the implementation of the SunPKCS11 security provider for cryptographic operations.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.dynalink}}&lt;br /&gt;
| Defines the API for dynamically linking high-level operations on objects.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.editpad}}&lt;br /&gt;
| Implements the edit pad service used by &amp;lt;code&amp;gt;jdk.jshell&amp;lt;/code&amp;gt; for evaluating code.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.hotspot.agent}}&lt;br /&gt;
| Provides the implementation for the [[HotSpot]] Serviceability Agent.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.httpserver}}&lt;br /&gt;
| Defines the JDK-specific HTTP server API and the &amp;#039;&amp;#039;jwebserver&amp;#039;&amp;#039; tool for running a simple HTTP server.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.incubator.vector}}&lt;br /&gt;
| Defines the API for expressing computations that can be compiled into SIMD instructions at runtime, such as AVX or NEON instructions.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jartool}}&lt;br /&gt;
| Provides tools for manipulating [[JAR (file format)|Java Archive]] (JAR) files, such as the &amp;#039;&amp;#039;jar&amp;#039;&amp;#039; and &amp;#039;&amp;#039;jarsigner&amp;#039;&amp;#039; commands.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.javadoc}}&lt;br /&gt;
| Defines the system documentation tool implementation and its command-line version, &amp;#039;&amp;#039;[[javadoc]]&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jcmd}}&lt;br /&gt;
| Defines tools for diagnosing and troubleshooting JVM processes, including &amp;#039;&amp;#039;jcmd&amp;#039;&amp;#039;, &amp;#039;&amp;#039;jps&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;jstat&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jconsole}}&lt;br /&gt;
| Defines the JMX-based graphical tool, &amp;#039;&amp;#039;[[JConsole|jconsole]]&amp;#039;&amp;#039;, for monitoring and managing Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jdeps}}&lt;br /&gt;
| Defines tools for analysing dependencies in Java programs and libraries, such as &amp;#039;&amp;#039;jdeps&amp;#039;&amp;#039;, &amp;#039;&amp;#039;javap&amp;#039;&amp;#039;, &amp;#039;&amp;#039;jdeprscan&amp;#039;&amp;#039;, and &amp;#039;&amp;#039;jnativescan&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jdi}}&lt;br /&gt;
| Defines the [[Java Platform Debugger Architecture#Java Debugger Interface (JDI)|Java Debug Interface]] (JDI) for debugging Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jdwp.agent}}&lt;br /&gt;
| Provides the implementation of the [[Java Debug Wire Protocol]] (JDWP) agent for remote debugging.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jfr}}&lt;br /&gt;
| Defines the API for [[JDK Flight Recorder]] (JFR) for collecting performance and diagnostic data.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jlink}}&lt;br /&gt;
| Defines the &amp;#039;&amp;#039;jlink&amp;#039;&amp;#039; tool for creating custom runtime images, and &amp;#039;&amp;#039;jmod&amp;#039;&amp;#039; and &amp;#039;&amp;#039;jimage&amp;#039;&amp;#039; tools for managing JMOD and JDK container files.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jpackage}}&lt;br /&gt;
| Defines the [[Java packager]] tool (&amp;#039;&amp;#039;jpackage&amp;#039;&amp;#039;) for creating platform-specific application packages.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jshell}}&lt;br /&gt;
| Provides the &amp;#039;&amp;#039;jshell&amp;#039;&amp;#039; tool for interactively evaluating Java code snippets.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jsobject}}&lt;br /&gt;
| Defines the API for integrating [[JavaScript]] objects in Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jstatd}}&lt;br /&gt;
| Defines the &amp;#039;&amp;#039;jstatd&amp;#039;&amp;#039; tool for remotely monitoring JVM statistics.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.localedata}}&lt;br /&gt;
| Provides locale-specific data for non-US locales.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.management}}&lt;br /&gt;
| Defines JDK-specific management interfaces for JVM monitoring and control.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.management.agent}}&lt;br /&gt;
| Defines the JMX-based management agent for the JVM.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.management.jfr}}&lt;br /&gt;
| Defines the management interface for JDK Flight Recorder (JFR).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.naming.dns}}&lt;br /&gt;
| Implements the [[Domain Name System|DNS]] Java Naming provider for resolving domain names.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.naming.rmi}}&lt;br /&gt;
| Implements the RMI Java Naming provider for remote method invocation.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.net}}&lt;br /&gt;
| Defines the JDK-specific API for network programming.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.nio.mapmode}}&lt;br /&gt;
| Defines specific file mapping modes available in the JDK.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.sctp}}&lt;br /&gt;
| Provides the API for [[Stream Control Transmission Protocol]] (SCTP) in the JDK.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.security.auth}}&lt;br /&gt;
| Implements authentication modules and security-related interfaces within the &amp;lt;code&amp;gt;javax.security.auth&amp;lt;/code&amp;gt; package (interfaces in &amp;lt;code&amp;gt;javax.security.auth.*&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.security.jgss}}&lt;br /&gt;
| Defines extensions to the GSS-API and the implementation of the SASL GSSAPI mechanism in the JDK.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.xml.dom}}&lt;br /&gt;
| Defines the JDK&amp;#039;s subset of the [[World Wide Web Consortium]] (W3C) [[Document Object Model]] (DOM) API not covered by Java SE. Exports packages outside of the &amp;lt;code&amp;gt;java&amp;lt;/code&amp;gt; namespace (from &amp;lt;code&amp;gt;org.w3c.dom&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.zipfs}}&lt;br /&gt;
| Provides the implementation for the ZIP file system provider, enabling access to [[ZIP (file format)|ZIP files]] as file systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The module &amp;lt;code&amp;gt;jdk.unsupported&amp;lt;/code&amp;gt; is not an official module, but often bundled with the JDK, representing implementation details in the [[Java Class Library|Java standard library]].&amp;lt;ref&amp;gt;{{Cite web|title=jdk.unsupported|url=https://cr.openjdk.org/~jjg/java-javafx-jdk-docs/api/jdk.unsupported-summary.html|publisher=OpenJDK|website=cr.openjdk.org|access-date=10 October 2025}}&amp;lt;/ref&amp;gt; It contains packages in namespace &amp;lt;code&amp;gt;sun.*&amp;lt;/code&amp;gt; (which contains the [[Security of the Java software platform#The sun.misc.Unsafe class|&amp;lt;code&amp;gt;sun.misc.Unsafe&amp;lt;/code&amp;gt;]] class, used to manipulate the CPU and hardware, directly manage memory, and other things)&amp;lt;ref&amp;gt;{{Cite web|title=The Unsafe Class: Unsafe at Any Speed|url=https://blogs.oracle.com/javamagazine/post/the-unsafe-class-unsafe-at-any-speed|website=blogs.oracle.com|author=Ben Evans|date=4 May 2020|publisher=Oracle Corporation}}&amp;lt;/ref&amp;gt; and &amp;lt;code&amp;gt;com.sun.*&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=Java&amp;gt;&lt;br /&gt;
module jdk.unsupported {&lt;br /&gt;
    exports sun.misc;&lt;br /&gt;
    exports sun.reflect;&lt;br /&gt;
    exports com.sun.nio.file;&lt;br /&gt;
&lt;br /&gt;
    opens sun.misc;&lt;br /&gt;
    opens sun.reflect;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Jakarta EE]], formerly part of the Java standard library, is not modularised, however build systems can generate automatic modules for it.&lt;br /&gt;
&lt;br /&gt;
=== JavaFX modules ===&lt;br /&gt;
[[JavaFX]] was previously bundled with the core JDK, until Java 11 when it was split into OpenJFX. JavaFX is split into the following modules.&amp;lt;ref&amp;gt;{{Cite web|url=https://openjfx.io/javadoc/24/|title=Overview (JavaFX)|website=openjfx.io}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Description  &lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.base}}&lt;br /&gt;
| Defines core APIs for the JavaFX UI toolkit (such as APIs for bindings, properties, collections, and events).&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.controls}}&lt;br /&gt;
| Defines the APIs for UI controls, charts, skins in the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.fxml}}&lt;br /&gt;
| Defines the FXML APIs in the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.graphics}}&lt;br /&gt;
| Defines scenegraph, animation, geometry, and other related APIs for the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.media}}&lt;br /&gt;
| Defines media playback and audio content APIs for the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.swing}}&lt;br /&gt;
| Defines JavaFX/[[Swing (Java)|Swing]] interop support APIs for the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|javafx.web}}&lt;br /&gt;
| Defines WebView APIs for the JavaFX UI toolkit.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jdk.jsobject}}&lt;br /&gt;
| Defines APIs for [[JavaScript]] objects.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jfx.incubator.input}}&lt;br /&gt;
| Incubates mechanism for customising JavaFX controls.&lt;br /&gt;
|-&lt;br /&gt;
| {{code|jfx.incubator.richtext}}&lt;br /&gt;
| Incubates RichTextArea control for JavaFX.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links with OSGi ==&lt;br /&gt;
The Java Module System does not intend to support all the functionalities that  the [[OSGi]] platform currently supports (for example the Life-Cycle model and the Services Registry). However the Java Module System will support functions which are not supported by OSGi, such as modularity at compile-time, and built-in support for native libraries.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://mreinhold.org/blog/late-for-the-train-qa&lt;br /&gt;
| title=Project Jigsaw: Late for the train: The Q&amp;amp;A&lt;br /&gt;
| publisher=[[Oracle Corporation]]&lt;br /&gt;
| author=Mark Reinhold&lt;br /&gt;
| date=2012-08-24&lt;br /&gt;
| accessdate=2015-11-29}}&amp;lt;/ref&amp;gt; A couple of articles exploring how the Java Module System and OSGi could interoperate were published in 2016.  These can be found on InfoQ&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=https://www.infoq.com/articles/java9-osgi-future-modularity/&lt;br /&gt;
| title=Java 9, OSGi and the Future of Modularity&lt;br /&gt;
| publisher=InfoQ&lt;br /&gt;
| accessdate=2016-09-26}}&amp;lt;/ref&amp;gt; and also the OSGi Alliance Blog.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=http://blog.osgi.org/2016/08/java-module-layers-and-osgi-bundles.html&lt;br /&gt;
| title=Java Module Layers and OSGi Bundles&lt;br /&gt;
| publisher=OSGi Alliance&lt;br /&gt;
| accessdate=2016-08-01}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Java package]]&lt;br /&gt;
* [[Classpath]]&lt;br /&gt;
* [[Java class loader]]&lt;br /&gt;
* [[Modules (C++)]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.jcp.org/en/jsr/detail?id=277 JSR 277]&lt;br /&gt;
* [http://www.jcp.org/en/jsr/detail?id=294 JSR 294]&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=376 JSR 376]&lt;br /&gt;
* [http://openjdk.java.net/projects/jigsaw/ Project Jigsaw]&lt;br /&gt;
* [http://openjdk.java.net/projects/jigsaw/spec/sotms/ The State of the Module System]&lt;br /&gt;
* [http://openjdk.java.net/projects/jigsaw/spec/issues/ Java Platform Module System: Issue Summary]&lt;br /&gt;
&lt;br /&gt;
{{Java (software platform)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Java specification requests]]&lt;br /&gt;
[[Category:Modularity]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Vestrian24Bio</name></author>
	</entry>
</feed>