"Smart" JavaBeans

Dateline: 07/27/00

Every now and then I receive user queries related to the design, development and deployment of intelligent agent solutions. While the concept of agency had its ups and downs in the past few years, both ordinary users and software developers are still attracted to the idea of "smart" software packages capable of flexible autonomous action. There is no unified definition of intelligent agent, but many of us will agree that it should perceive environment and respond appropriately in order to meet its design objectives. It should be able to interact with other agents and go beyond simple reactive behavior by employing some sort of opportunistic, goal directed strategy. Ideally, it should get better at trying to perform its tasks over time.

Enough said... but what about writing real-word applications? Do you really need to know all about specific neural network architecture or expert system and write it from scratch? No need for that: there are plenty of freeware, shareware and commercial toolkits that will make the whole process much easier...but still not easy. The best survey of agent construction tools that I'm aware of is available at Reticular Systems' Web site. It lists more than 20 commercial products and more than 30 academic and research projects. You'll notice that the vast majority of the software packages presented here is written in Java - pretty logical choice, considering all advantages of this new object-oriented programming language.

Being a modern software developer, you'll probably search for "intelligent" software components that can be used both for rapid prototyping and for development of reliable and robust software products. As you may know from other modern programming languages and toolkits, software component is a piece of software isolated into discrete, self-contained, reusable structure. None of the older agent toolkits did not support real component architecture with all of its advantages. As Java matures, more and more advanced, enterprise-level features find their way into recent releases of Java Development Kit (JDK). It now offers an architecture and platform independent set of classes for creating and using Java software components known as JavaBeans.

This is where the new tool from IBM alphaWorks comes into play. The Agent Building and Learning Environment (ABLE) design philosophy is to provide a set of reusable Java components (JavaBeans) and a light-weight framework for combining them to build intelligent components (agents). It provides Sensors and Effectors to allow application developers to easily plug the agent into their Java application environment. The ABLE Editor provides a nice GUI environment for building and testing custom learning and reasoning algorithms. The Able Inspectors use standard Java introspection mechanism to display state information about the custom beans you are creating. AbleBeans themselves implement data access, filtering and transformation, learning, and reasoning capabilities.

By combining several AbleBeans, agents can be extremely simple - a few lines of code - or very sophisticated, using multiple forms of inferencing (fuzzy rule systems, forward and backward chaining) and learning (neural classification, prediction, clustering). So everything is here, from enhanced back propagation algorithms and self-organizing maps to fuzzy inference engines, without handling the low-level details of each algorithm.

One of the authors of the ABLE package is Joseph P.Bigus, researcher from IBM T.J. Watson Research Center and author of "Data Mining with Neural Networks" and "Constructing Intelligent Agents with Java". I really liked those two books, and many practical details from the second book are implemented here. The whole technology could be commercialized in the future, but you still have the chance to try it for free. I did experience minor problems during the installation process, but the overall impression is rather good. If you need reliable, cross-platform tool for developing intelligent agent applications, you may just find the right one...