In late 2012, Wrox, a division of John Wiley & Sons, Inc., contacted my good friend and author Jay Glynn (Professional C# 2012 and .NET 4.5) to consult about the creation of a new Java book. Jay was kind enough to recommend me for the job, and Wrox contacted me in short order. We worked on a project plan, table of contents, and writing samples for about six weeks before the book was given the green light, and in min-January 2013 Professional Java for Web Applications was born.
Writing a Book is Not for Everyone
Writing a book was not at all what I expected. It took far more time and effort than I had anticipated or been told. For many projects like this, such as the case that is Jay’s book, multiple authors are involved with each writing only a small portion of the book. This case was different: I was solely responsible for every word, from start to finish—all 884 pages’ worth. The project was initially expected to wrap up and head to the printers in early November 2013; instead, it went to the printers the first week of February 2014—54 weeks after I wrote the first word.
Writing a book while you already have a full-time job is a task I would not wish on anyone but my worst enemies. It’s nearly a full-time job on its own: Some weeks were slow, but many weeks I worked 40 or more hours just on the book. Sleep was a precious commodity, and my wife was seriously neglected. Extra hours at work? Forget it. No way was that happening.
Expanding my Contributions to Open Source Software
One of the features of my book that excites me is all of the new technology it covers: Java SE 8, Java EE 7, Spring Framework 4, Spring Security 3.2, and more. It includes usage of lambda expressions, Java 8 Date and Time, WebSockets, Apache Tomcat 8, Apache Log4j 2.0, Expression Language 3.0, Java Persistence API 2.1, MySQL 5.6, and OAuth 2.0. This came with its own set of complications, however.
As I wrote the book, many of these technologies were still incomplete. In some cases I could use them, in same cases there were many bugs, and in some cases they were completely unusable. This required a certain amount of speculative writing and careful review near the end of the project. In most cases, however, it required me to become more involved in these projects and help speed them along to completion. In some cases I simply fixed bugs, in other cases I merely helped implement a Java EE specification. Some times I thought the project I was working on really needed a new feature or a new behavior and implemented it so that I could write about it.
Don’t get me wrong, I’m not complaining. It was a unique opportunity and I am grateful for the chance to become more involved in these projects I already used every day. I have made a lot of contacts and friends and helped influence the future of Apache Logging, Apache Tomcat, Spring Framework, Spring Security, Spring Data, and more. As a result of my established contributions, I look forward to continuing to participate in the open source community and improving these projects further.
Choosing IntelliJ Over Eclipse
Early on my publisher and I realized we had a problem. Our readers needed an IDE to use with the book. Eclipse is universally the most-popular Java IDE, but it has one major problem with respect to this book. Historically, Eclipse releases trail the Java SE and EE versions they support by months or even a year. This meant that Eclipse could not be used to create the example code written early on, and there was a great potential that readers would not be able to run the sample code in Eclipse for months after the book went on sale.
For this reason, we chose to use JetBrains IntelliJ IDEA as the recommended Java IDE for the book. My personal feelings about Eclipse I aside (I hate it), IntelliJ, which often supports new Java SE and EE versions months before they are released, is simply the better choice. However, we realized that many users would prefer to use Eclipse, and that IntelliJ IDEA Ultimate isn’t free, so we had to make some compromise.
We decided that, when the book was initially published, the code samples on the book’s download website would initially support only IntelliJ. Then, when a stable-enough Eclipse version was capable of running the code samples, Eclipse versions of the code samples would also be made available on the book’s download website. Even better, JetBrains agreed to provide purchasers of the book with an extended, 90-day personal license for IntelliJ IDEA 13 Ultimate! Hopefully, this will not only provide the best reader experience, but also encourage developers to switch to a superior IDE!
Reviewing and Preparing for Publication
The review process was not at all what I expected, either. At first it was downright confusing, but after a while it began to make sense. I received chapter Word documents back with comments and changes (with track changes turned on) from my project editor, the copy editor, and one or two technical editors. I then had to review every change, resolve every comment, and additionally check every word to make sure that it was still accurate as the beta frameworks I had written about had been released. In several cases I had to rewrite one or more pages. In about five places, I had to edit, add, or remove enough content that it needed to go back through the copy and technical editors again.
Once this process was done, the production team began laying out each chapter as it would look in the book. I received these “pages” back in the form of one PDF per chapter. That began the final phase of review, where the copy editor and a technical reviewer made comments on the PDF and then I had to review and respond to those comments and make minor revisions where necessary. As I returned these PDFs back to the publisher, they made the final changes necessary to send the book to the printer.
During the “pages” review I also received my print edition cover (pictured at the top) for review. I didn’t pick the cover image; my publisher did that. But this part of the process was very exciting! It made the entire thing finally seem “real,” and the realization set in that my book was almost done and was going to be published.
Getting Ready to Publish and Beyond
Once the book was at the printer, my job wasn’t completely done. I still had to clean up all sample code projects, create the ZIP files for the book download website, and complete any open source tasks I was working on for the book. By the end of February I realized I needed to start working on my blog. Now that Eclipse is becoming fairly stable, I still need to start preparing code sample projects to run in Eclipse.
The e-book went on sale February 28, 2014, and I still don’t have any sales figures. The print edition has been available for pre-order since November 2013, and the first copies get delivered and get put on bookshelves March 10, 2014. I’m anxious to see how it is received and how well it sells. I hope all my hard work pays off (literally and figuratively) and that my readers learn a lot from the book! This isn’t a livelihood; I already have one of those. I just wanted to help others learn some of the many things I have learned in the last 10 years, and I hope I did that.
In retrospect, I’ll never write another development book this size from start to finish on my own. I may co-author another book, and I will definitely update and release future editions of this book, but I can’t undertake a task this massive again. The workload took me away from my family, resulted in a noticeable and significant decline in health, and delayed the journey of finding a home and starting a family. All that aside, I don’t regret that I went on this journey, I’m grateful for what I learned, and I’m excited about what the future brings!