This chapter examined the part of the application development process after you are done writing code--building and packaging your application for distribution. We started the chapter by examining the module resolution process. We then looked at the process of linking, which uses module resolution to build a runtime image containing just the modules needed for a given application. We then looked at some of the built-in plugins that allow us to optimize and preprocess the generated image. Finally, we learned how to generate a modular JAR file to bundle reusable library modules for use in other applications.
We've looked at a lot of features so far and how they work. In the next chapter, we'll start looking at how to work with Java 9 modules in the context of an existing legacy Java codebase. You'll learn ways to write code that is interoperable between different...