Constructing Intelligent Agents with Java: A Programmer's Guide to Smarter Applications