Finally! A technical book that's not Missing In Action, 2005-08-18
Reviewer rating:
This review is a long time in coming, and I apologize to Dr. Friedman-Hill for not doing it sooner.
I have read Jess In Action (affectionately known as JIA to Jess developers) cover to cover at least ten times since first interviewing Dr. Friedman-Hill about Jess in the summer of 2003 -- see http://www.devx.com/Java/Article/17651/0. Prior to that, I'd experimented with Jess since 4.0.
Dog-eared, annotated, and now held together by a rubber-band and Post-Its, JIA is always within reach when I'm programming Jess. It is a testament to Dr. Friedman-Hill's smooth yet dense style that every pass through revealed something that I missed before: the sign of a great book. All technical books start off like a roller-coaster, slowly ramping up the fundamentals and then hurling you through topical twists and turns towards the "advanced topics" and appendices that mark the end of the ride. Most times, I want my money back. Jess In Action is the first tech-tome in a long time that made me say, "Wow!! That was @#&* cool!" and head back to Chapter One for another ride.
Let me refute a few unfounded criticisms that I've seen:
1. JIA "...is more of a tutorial - not long enough to be a good reference."
It is true that this is more a collection of tutorials than a "cook-book" reference: this is by design. There are ample reference materials available with Jess's distribution, and to replicate those here would be extraneous. There is no substitute for doing your homework and reading the documentation if you want to be a competent Jess programmer. I recommend that you actually do this first, then get JIA. That way, it's like having Dr. Friedman-Hill explain Jess in-person.
2. JIA's "...early discussion of Jess syntax focuses too much on Java-like procedural style."
If you are new to declarative programming, and LISP-like syntax in particular, then having an early functional and procedural focus is pedagogically comforting for several reasons.
a) You aren't abandoning everything you know about procedural coding at once.
b) Jess is a Java API, and even object methods are still procedural.
c) The right-hand side of rules are mostly composed of functions, which contain procedural code.
3. JIA has "... no general references to rules and rule-based systems for theory and background."
Rule-based expert systems are the oldest and most studied of the major expert system types, and there is an enormous body of literature for the serious student. This raises an important point: You should study the kinds of problems that rule-engines and rule-based expert systems are meant to solve before you launch into hardcore Jess programming. In this regard, JIA gives quite a good sampling of what Jess can do without burying you in minutia. For a good overview of rule-based expert systems, I recommend Expert Systems: Principles and Programming, Fourth Edition by Joseph C. Giarratano, Gary D. Riley ISBN: 0534384471 as companion volume to JIA..
My Nit-Picks for 2nd Edition Features:
· Edit the index! I was miffed that there were innumerable newbie terms that I couldn't find (specifics escape me now), but I was greatly amused to find "rubber ducks" (p. 295) and the proverbial "kitchen sink" (p.114).
· Add a section on integrating Jess with agents. The agent folks who write about adding Jess to their code never seem get it right, and I trust that Dr. Friedman-Hill will.
· Add a Survey of Best Practices and Jess Design Patterns.
· Add latest stuff about leveraging/optimizing the JessDE.
Overall, JIA 1.0 is THE essential volume for the serious Jess developer, and I eagerly await the next edition!
Jason Morris - Morris Technical Solutions LLC
Jess Consultant and Co-Moderator - Jess Listserver