The Theory And Motivations Behind Java 9+ Modularity

Mohamed Taman
2 min readNov 22, 2019
Design for Modularity

Throughout my humbling, almost 20-year career in programming, I’ve worked with many languages — Visual Basic, C++, C#, you name it — but since 2005, my specialization has been the Java programming language and ecosystem in all its incarnations, beginning with version 1.2. Those were lovely days when you got your Professional Java Programmer certificate directly from Sun Microsystems.

Around 2009, I started giving back to the community by contributing to the platform development cycle, first as a community member, and then as a full JCP member, expert for some of the JSRs, Java champion, and Oracle Groundbreaker Ambassador. It’s been a rewarding experience.

What I’ve loved about Java, from 1.0 to 8, is that a program written early in the evolution runs quite well in a later release because the language has always put backward compatibility high on the priorities list.

This attribute came with a cost.

The JDK grew. APIs and tools became more difficult to maintain, older technologies harder to deprecate, security issues were more challenging to resolve. Plus, it wasn’t as easy to integrate new innovations (like cloud or containers) or cope with the faster development cycles.

But the excellent Java community of developers and companies rose to these challenges and the Java Platform Module System (JPMS) and the new six-month release schedule are the results.

This 5 articles series (Published at IBM Developer )takes you on a deep-dive exploration of the following:

1- The first two tutorials in this series, “The theory and motivations behind modularity” and “Module basics and rules,” describe the motivations that drove the community to modularity.

2- The next two tutorials — “How to design packages and create modules, Part 1” and “How to design packages and create modules, Part 2” — discuss the key concepts of Java 9 modularity: encapsulation and reliable configuration.

3- While the last article “The difficulties and pitfalls of migrating from Java 8 to Java 9” looking at compatibility, migration issues, and techniques, explores the new APIs and tools, changes, deletions, and deprecations in Java 9+ and create a smoother migration path.

Happy coding, and Say thanks by giving a clap or more, then share the knowledge.

--

--

Mohamed Taman

Solutions Architect @Magna, a Java Champion, Jakarta EE Ambassador, JCP, Consultant, Speaker & Author.