# Java 9 modules - JPMS basics

DevFeed: [Java 9 modules - JPMS basics](<https://devfeed.tech/articles/java-9-modules-jpms-basics-21994.md>)

Original publisher: [Read original article](<http://blog.joda.org/2017/04/java-9-modules-jpms-basics.html>)

Author: Stephen Colebourne (noreply@blogger.com)

Published: 2017-04-17T05:17:00Z

Content type: article

Language: en

Sources: [Stephen Colebourne](<https://devfeed.tech/sources/stephen-colebourne.md>)

Topics: [modules](<https://devfeed.tech/topics/modules.md>), [Java 9](<https://devfeed.tech/topics/java-9.md>), [Java](<https://devfeed.tech/topics/java.md>), [Access Control](<https://devfeed.tech/topics/access-control.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [java](<https://devfeed.tech/tags/java.md>), [java-9](<https://devfeed.tech/tags/java-9.md>), [java9](<https://devfeed.tech/tags/java9.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [modules](<https://devfeed.tech/tags/modules.md>)

## AI overview

This article introduces the Java Platform Module System (JPMS), the major new feature of Java SE 9. It explains modules as a new JVM structural element that contains packages and enables stronger access control, while noting compatibility with most existing code.

## Source excerpt

The Java Platform Module System (JPMS) is the major new feature of Java SE 9. In this article, I will introduce it, leaving most of my opinions to a follow up article. This is based on these slides. Java Platform Module System (JPMS) The new module system, developed as Project Jigsaw, is intended to raise the abstraction level of coding in Java as follows: The primary goals of this Project are to: * Make the Java SE Platform, and the JDK, more easily scalable down to small computing devices; * Improve the security and maintainability of Java SE Platform Implementations in general, and the JDK in particular; * Enable improved application performance; and * Make it easier for developers to construct and maintain libraries and large applications, for both the Java SE and EE Platforms. To achieve these goals we propose to design and implement a standard module system for the Java SE Platform and to apply that system to the Platform itself, and to the JDK. The module system should be powerful enough to modularize the JDK and other large legacy code bases, yet still be approachable by all developers. However as we shall see, project goals are not always met. What is a JPMS Module? JPMS is a change to the Java libraries, language and runtime. This means that it affects the whole stack that developers code with day-to-day, and as such JPMS could have a big impact. For compatibility reasons, most existing code can ignore JPMS in Java SE 9, something that may prove to be very useful. The key conceptual point to grasp is that JPMS adds new a concept to the JVM - modules. Where previously, code was organized into fields, methods, classes, interfaces and packages, with Java SE 9 there is a new structural element - modules. a class is a container of fields and methods a package is a container of classes and interfaces a module is a container of packages Because this is a new JVM element, it means the runtime can apply strong access control. With Java 8, a developer can express th