My goal in reading this book was to supplement online documentation about packaging Java applications. In particular, I wanted to learn how to make use of JLink, to customize a runtime for making a smaller self-contained package. JLink requires use of the Java-Module, which was introduced in Java 9.
This book helped a great deal. My focus was on Chapters 1-3, and parts of 13. The writing is clear, explanations thorough, going to fuller detail than the online docs I could find. Editing and proofing was of a high quality: no bugs in the programs I ran. The example code (both code in the text and code from a github repository) was very helpful.
My resulting runtime was reduced by about 2/5 (177 MB to 74 MB). For now, I am going to stop here with reading this book, but I will hold on to it as my first choice if or when I have to deal with more complex projects.
One minor speed-bump encountered: in chapter three we go from an example with a single package to one with three packages. While the explanation for how to set up the module-info is clear and thorough, steps for the actual compilation and running of the programs were kind of glossed over, and I had difficulty deducing the exact syntax and form required. What I overlooked was that these commands were present in a script file in the github code examples.
The only other troubles I had were also due to a lack of experience with command-line Java and the Windows shell environment. My preferred IDE (Eclipse) has done a good job of shielding me from having to deal with this level of tech! I can hardly fault this book for that, especially since expanding the topic to cover shell commands would require cluttering the text with info pertaining to multiple OS's.
If you are an infrequent user of your system's command-line shell, it might be worth considering supplementing this book with another about the shell environment.