An introduction to agents
Find out what agents are and what they can do for us, and take the first steps toward building your own simple agent architecture
in Java
By Todd Sundsted, JavaWorld.com, 06/01/98
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
The word
agent has found its way into a number of technologies. It has been applied to aspects of artificial intelligence research and to
constructs developed for improving the experience provided by collaborative online social environments (MUDS, MOOs, and the
like). It is a branch on the tree of distributed computing. There are agent development toolkits and agent programming languages.
Hucksters claim that agents can sort your mail, buy you a car, and solve your distributed computing woes -- in one fell swoop.
Agents have tremendous potential to be sure, but this claim is a little far fetched -- at least today.
What is an agent?
It's difficult to find a succinct definition for agent that includes all of the things that most researchers and developers consider agents to be, and excludes all of the things they aren't. I recommend you read "Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents"
by Stan Franklin and Art Graesser for a thorough, well-thought-out classification scheme. (See Resources.)
In this article, I'll limit myself to illustrating rather than defining.
Agents typically possess several (or all) of the following characteristics; they are:
- Autonomous
- Adaptive/learning
- Mobile
- Persistent
- Goal oriented
- Communicative/collaborative
- Flexible
- Active/proactive
Agents also tend to be small in size. They do not, by themselves, constitute a complete application. Instead, they form one
by working in conjunction with an agent host and other agents. In many ways, agents are of the same scope as applets. Small
and of limited functionality on their own.
Why study agents?
Agents make an interesting topic of study because they draw on and integrate so many diverse disciplines of computer science,
including objects and distributed object architectures, adaptive learning systems, artificial intelligence, expert systems,
genetic algorithms, distributed processing, distributed algorithms, collaborative online social environments, and security
-- just to name a few.
Agent technology is significant because of the sustained commercial interest surrounding it. You've most likely heard of General
Magic and Telescript, and maybe even IBM's Aglets Workbench (now called IBM Aglets SDK) and Mitsubishi's Concordia. Agent
technology may not have hit prime time quite yet, but it does seem to be gathering its share of investment money. Take a gander
at the Resources section for a host of other companies engaged in agent technology development.
Agent technology is also interesting for its potential to solve some nagging productivity problems that pester almost all
modern computer users. Many agents are meant to be used as intelligent electronic gophers -- automated errand boys. Tell them
what you want them to do -- search the Internet for information on a topic, or assemble and order a computer according to
your desired specifications -- and they'll do it and let you know when they've finished.
What problems do agents solve?
Agent technology solves, or promises to solve, several problems on different fronts.
- Digg
- Reddit
- SlashDot
- Stumble
- del.icio.us
- Technorati
- dzone
Resources
- "Is it an Agent, or just a Program? A Taxonomy for Autonomous Agents" by Stan Franklin and Art Graesser from the Proceedings
of the Third International Workshop on Agent Theories, Architectures, and Languages, Springer-Verlag, 1996 http://www.msci.memphis.edu/~franklin/AgentProg.html
- Cetus Links provides super information on mobile agents http://www.cetus-links.org/oo_mobile_agents.html
- The Distributed Systems Group (Technical University of Vienna) includes an interesting look at mobile code, agents and Java
http://www.infosys.tuwien.ac.at/Research/Agents/
- Check out the Centre for Advanced Learning Technologies' Information TechnologiesAgent Technologies page for everything related
to agent technology http://www.insead.fr/CALT/Encyclopedia/ComputerSciences/Agents/
- IBM Aglets SDK (formerly Aglets Workbench) is an environment for programming mobile Internet agents in Java http://www.trl.ibm.co.jp/aglets/
- Find out more about agents and IBM's Aglets technology with the detailed article "AgentsNot just for Bond anymore," penned
by Bret Sommers (JavaWorld, April 1997) http://www.javaworld.com/jw-04-1997/jw-04-agents.html
- Bill Venners also examined IBM's agent technology in a two-part Under the Hood series (JavaWorld April/May 1997)
- http://www.javaworld.com/jw-04-1997/jw-04-hood.html
- http://www.javaworld.com/jw-05-1997/jw-05-hood.html
- Mitsubishi's Concordia is a framework for development and management of network-efficient mobile agent applications http://www.meitca.com/HSL/Projects/Concordia/
- JATLite is a package of programs written in Java that allow users to quickly create new software agents that communicate robustly
over the Internet. http://java.stanford.edu/
- General Magic provided much of the early commercial drive of agent technology http://www.genmagic.com
- Previous How-To Java articles
- "Unfurling Java's data transfer API" Learn to share data among applications with Java's data transfer classes.
- "MVC meets Swing" Explore the underpinnings of the JFC's Swing components.
- "Put your user interface on a diet" Replace those heavyweight components with leaner, meaner lightweight components.
- "Internationalize dynamic messages" Build flexible formatters for international applications with Java 1.1.
- "Localize this!" Use resource bundles to make your applications multicultural.
- "Write world-class applications" From Chicago to Copenhagen, Colombia to Cameroon -- Java provides the tools for writing truly international applications.
- "Use the two "R"s of Java 1.1 -- Readers and Writers" Learn how to use the two new additions to the
java.io package -- class Reader and class Writer -- to filter out unwanted e-mail.
- "Waging war on electronic junk mail" Put Java on the front line in the war against electronic junk mail.
- "Build dynamically extensible applications" Find out how to build programs that you can extend dynamically -- even while they execute.
- "3D computer graphicsGetting the hang of VRML" Learn about VRML and how you can use it to define your own virtual world.
- "3D computer graphicsMoving from wire-frame drawings to solid, shaded models" Find out how to create surfaces and add illumination to make your models more realistic.
- "3D computer graphicsSlide it, spin it, make it move -- transforming your virtual world" Learn how to make your virtual world satisfy even the toughest customer.
- "3D computer graphicsModel your world" From its start as an exotic research topic in government and university labs, virtual reality is making its move into the
mainstream of corporate America -- find out how you can gain entry into this elite club.
- "When static images just don't make the cut" Learn how to spice up your applets and applications with animated images.
- "How Java uses the the producer/consumer model to handle images -- An insider's look" Learn more about Java's powerful image-handling technique, then follow my simple procedures for building your own producer
and consumer components.
- "Learn how applets load network-based images asynchronously" Here's a close look at the way Java applets handle images in a network-based environment.
- "Drawing text is easy with three Java classes" Find out how to create text that's visually appealing through this explanation of what classes to use and how they work
together.
- "Examining HotSpot, an object-oriented drawing program" Learn how the pieces of the Java language and class library fit together through a study of this Java program
- "Using the Graphics class" A close look at the Graphics class and the drawing primitives it provides, and a demonstration of its use.
- "Observer and Observable" An introduction to the Observer interface and Observable class using the Model/View/Controller architecture as a guide.
- "The effective user interface" Five ways to enhance the appearance and effectiveness of your user interface
- "Java and event handling" How events are passed to user interface components, how to create event handlers, and more.
- "Introduction to the AWT" A description of Java's user interface toolkit.
Though old an article,it comes at the right time for me...By Anonymous on August 29, 2009, 12:28 pmThough old an article,it comes at the right time for me.It makes good reading.Am checking for more articles on agents as promised!
Reply | Read entire comment
View all comments