BT

The Return of Java Modularity

| by Ben Evans Follow 28 Followers on Sep 22, 2014. Estimated reading time: 2 minutes |

Mark Reinhold (Java's Chief Architect) has announced the relaunch of efforts to make Java fully modular. This news came in the form of a group of Java Enhancement Proposals (JEPs) that rejuvenates the Java modularity initiative known as Project Jigsaw.

Reinhold's vision is of four large JEPs that will each deliver an aspect of full modularity. The overall effort will be run under Project Jigsaw, which aims to deliver a modular JDK, although the official Oracle viewpoint is that this will not necessarily arrive as part of Java 9 (although if at all possible, it will be). This may be due to the experience of Java 8, where modularity was dropped from the release at a relatively late stage.

Despite this lack of firm commitment to the Java 9 timeframe, the first of the modularity JEPs appeared within the announcement of a group of features intended to become part of Java 9, as JEP 201 (titled "Modular Source Code"). In spite of this suggestive name, this JEP does not introduce modularity in any sense that is meaningful to a Java application developer. In fact, the Java 9 beta builds as they are currently being produced have no trace of modularity in the binaries.

Instead, this JEP is intended to be an incremental step towards modularity that is sufficiently small and harmless that it can be (and has already) merged into the OpenJDK 9 mainline. Effectively, all that JEP 201 intends to achieve is to alter the layout of the OpenJDK source tree so that it is now composed of modules.

Inside each module, the directory structure has also been rearranged, with the side-effect that the code that is common between Unix-like operating systems has been renamed to "unix" (it was previously called "solaris" for historic reasons).

The next JEP related to modularity aims to describe and set out the module structure but not actually implement it. The description of JEP 200 defines its purpose as:

Define a modular structure for the JDK. Make minimal assumptions about the module system that will be used to implement that structure.


These minimal assumptions include the idea that any module which starts with "java" is a standard module that will be governed by Java Specification Requests (JSRs), and will form part of the Java standard (for some future version of Java). In particular, such modules must have a public API that is portable between different Java implementations.

The source code layout changes that JEP 201 introduced set out these standard modules, and also bring in the concept of a "jdk" module to represent internal implementations that are specific to OpenJDK / Oracle JDK.

There is still a lot of work that needs to happen before the JRE is modularized and we see the end of a monolithic rt.jar. One specific stumbling block that caused problems last time is the classloading subsystem. In a modular ecosystem, classloaders need to be aware of modules, and in fact modules need to become the primary mechanism for loading code into a running Java process.

It remains to be seen whether Oracle are able to complete the necessary engineering work to deliver modularity in time for the Java 9 release train. However, the adoption of an incremental approach and separate JEPs for different aspects of the project is to be welcomed and offers a greater chance of success than previous attempts. Developers will be watching the progress of Project Jigsaw with interest.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT