332877 (1) [Avatar] Offline
#1
Hi Nikolai,

could you please share with us some additional / in-depth resources: say, something that you studied before you got inspired to write this book ?

I guess that something like this should be on that list: Java Platform, Standard Edition Tools Reference::

* Java 9: https://docs.oracle.com/javase/9/tools/toc.htm
* Java 11: https://docs.oracle.com/en/java/javase/11/tools/tools-and-command-reference.html

Please feel free to add as many resources as possible.

Regards,

Dejan
Nicolai Parlog (7) [Avatar] Offline
#2
Hi Dejan,

I feel like there are two aspects of your question.

One: Prerequisites

In the book, I write:

Most of what the module system does is brand new and comes with its own syntax partitioned off in the module declaration. Learning that is relatively easy as it builds on little knowledge beyond basic Java skills. So if you know ...

  • that code is organized in types, packages, and ultimately JARs

  • how visibility modifiers, particularly public, work across them

  • what javac, jar, and java do and have a rough idea how to use them


  • ... then you have all it takes to comprehend part 1 as well as many of the more advanced features introduced in part 3.

    But to really understand the problems the module system addresses and to appreciate the solutions it proposes requires more than that. Knowing...

  • how the JVM and particularly the class loader operates

  • the trouble that mechanism causes (think JAR hell)

  • more advanced Java APIs like the service loader and reflection API

  • build tools like Maven or Gradle and how they build a project

  • how to modularize software systems


  • ... as well as having experience working with large applications makes it easier to understand the motivation for the module system's features and their benefits as well as shortcomings.


    So readers should know the basics of the javac, jar, and java commands. The sources you mentioned are great for reference, but I assume there may be better introductory material. Since I didn't need it, I don't know of any, though. Likewise for the more advanced APIs: I assume a search should quickly turn up friendly introductions.

    Two: (My) Sources

    That's easier to answer. I got most of my information from the sources linked on Jigsaw's project page, particularly the mailing list. These are not at all prerequisites, though. Quite the opposite, if anybody has the feeling that they needed to read any of those sources to make sense of the book, I failed. Hard. smilie