The Java community is excited to see the module system and Java shell finally added to the Java platform in JDK 9, and so am I. After all, we had to wait over 10 years to see this module system in action. Several previous JDK releases saw prototypes of the module system, which were later dropped. The introduction of the module system in JDK 9 has also been a bumpy ride. It went through several iterations of proposals and prototypes. I started writing this book in early 2016. I have to admit that this was a difficult book to write. I had to race against the JDK release date and the changes the Java team was making to the module system. I would write about a topic to find a few months later that the final release date for JDK 9 had moved and whatever I had written was no longer valid. Today is the last day of February 2016 and it seems that the dust has finally settled—the Java team and the Java community are happy with the module system—and you are going to get this book as it exists today. JDK 9 is scheduled to be released in late July 2017. JDK 9 is feature complete at the time of this writing. It is very unlikely that you will see many instances where something covered in this book does not work. However, five months is a long time in terms of software releases, so don’t be surprised if a piece of code does not work and you have to tweak it a bit to make it work when you read this book.
In the beginning, this book was supposed to be 140 pages. As my writing progressed, I thought it would be a disservice to readers to write a book so short covering one of the biggest additions to the Java platform. I thank my publisher who never complained about me adding hundreds of pages to the book. I devoted nine chapters (Chapter 2 to Chapter 10) solely to describing the new module system. Chapter 11 covers the Java shell (JShell) with unmatched details.
I spent countless hours researching this topic. I was writing on topics that were under development. There were no materials on the Internet or in books that I could find to learn about these topics. One of the biggest challenges was the fast-changing JDK implementation during the development phase. My main sources of research were the Java source code, Java Enhancement Processes (JEPs), and Java Specification Requests (JSRs). I also spent quite a bit of time reading the Java source code to learn more about some of the new topics in JDK 9. It was always fun to play with Java programs, sometimes for hours, and then add them to the book. Sometimes, it was frustrating to see that the code worked a week ago and then did not work anymore. Subscribing to the mailing lists for all JDK 9 projects helped me to stay in sync with the JDK development team. A few times I had to go through all the bugs on a JDK topic to verify that there was a bug that had not been fixed yet.
All’s well that ends well. Finally, I am happy that I was able to include everything that matters to readers interested in learning Java SE 9. I hope you enjoy reading the book and benefit from it.