First off, we both really wanted to write the book. We both were frustrated with the limitations of
JSP, envied the ease of use of ASP.NET and loved the promise of "Swing for the web". That made the pain much more bearable.
David managed to get onto the expert group, so he had a bit more insight. It was rather awkward that he couldn't share it until it became public, but that couldn't be helped.
Then we asked ourselves: If we were recent converts to
Java with limited web development experience, in which order would we want to learn the material?
We did NOT want to trace the evolutionary history of CGI scripts ->
servlets -> JSP ->
JSF. (After all, when you learn Java, you don't first learn C and C++.)
That gave us a table of contents (which changed a few times as the spec got more complex). For example, you will note that there is no JSF-specific coding until the second half of chapter 6 (when we get into custom converters and validators).
Then we wrote examples and more examples. And rewrote them many times. And kept notes of all the grief we ran into. We prefer working from our own experience rather than simply rephrasing the official spec.
David wrote a couple of articles for JavaWorld, and I posted early drafts on corejsf.com. That gave us a lot of feedback.
Once the first public beta came out, we went into crunch mode and wrote up all our notes. Then we rewrote each other's chapters.
It turned out to take longer than expected. There was one major spec change that caused quite a bit of reorganization (i.e. value bindings), but perhaps that was just as well. A couple of books had jumped the gun and obsolete upon publication.
The hardest thing was to work from the application programmer's point of view. The official spec and Hans Bergsten's book are more focused on the underlying plumbing. Sure, the people who implement a new JSF implementation, and the wizard-level programmers who need to achieve special effects, really need to know the plumbing. But we tried very hard to present JSF as a useful and organic whole, just like a Java book focuses on Java language features and not the virtual machine.
Cheers,
Cay