Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

Sponsored Links

Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs

Solve real problems with aglets, a type of mobile agent

Part 2 of this series explains the significance of mobile agents, such as aglets -- IBM Japan's Java-based, autonomous software agent technology

  • Print
  • Feedback

Page 4 of 5

Why mobile agents?

Assuming the security issues surrounding mobile agents can be adequately addressed, why would you choose a mobile agent solution over more traditional client/server models? Why would you choose mobile agents over mobile code, such as applets or servlets?

In a world in which you have proven distributed processing models, including mobile code, what is the point of mobile agents?

One perspective is put forth by Harrison, Chess, and Kershenbaum in their IBM research paper titled "Mobile Agents: Are they a good idea?" (See Resources below.) Here is a short quote from their paper:

While none of the individual advantages of mobile agents...is overwhelmingly strong, we believe that the aggregate advantages of mobile agents is overwhelmingly strong, because:

a. They can provide a pervasive, open, generalized framework for the development and personalization of network services.

b. While alternatives to mobile agents can be advanced for each of the individual advantages, there is no single alternative to all of the functionality supported by a mobile agent framework.



In other words, the point of mobile agents may not be any individual potential application, each of which could alternatively be implemented using a more traditional distributed processing scheme. Rather, the point may be that mobile agents have so many potential applications. They give you a single, flexible way to implement and reap the benefits of the traditional distributed processing, client/server, and mobile code models.

A higher level of abstraction

Another perspective comes from Danny Lange, the inventor of the aglet, who had this to say about aglets:

When I invented the aglet, I was searching for a higher abstraction for network computing. To me the aglet was an answer to some 15-year-old questions I had: What comes after object-oriented programming? What is the next paradigm shift?

The aglet is my key abstraction for "network computing"; not the applet, not the servlet, not RPC, but the aglet. The aglet allows me to think in terms of the "network computer"; not the NC, but all the NCs, PCs, workstations, and mainframes in one space. I don't care where the aglet is running, nor does the aglet care. As we say about the aglet: "Create once, go anywhere".



So mobile agents provide a way to think about solving software problems in a networked environment that fits more naturally with the real world. In the real world, people and objects move from place to place. If you want to get some work done, sometimes you make a phone call, sometimes you send an assistant to the work site, and sometimes you just go yourself.

Concluding thoughts: Object-orientation and mobile agents

Object-oriented programming represented a higher level of abstraction than procedural programming. Early proponents of object-oriented programming promised that this higher level of abstraction would make programmers more productive, code easier to understand and maintain, and make possible better development tools. Although opinions may vary as to the extent to which these promises have been fulfilled, for the most part, the software development community has embraced the object-oriented approach.

  • Print
  • Feedback

Resources
  • Previous Under The Hood articles:
  • The lean, mean virtual machine -- Gives an introduction to the Java virtual machine.
  • The Java class file lifestyle -- Gives an overview to the Java class file, the file format into which all Java programs are compiled.
  • Java's garbage-collected heap -- Gives an overview of garbage collection in general and the garbage-collected heap of the Java virtual machine in particular.
  • Bytecode basics -- Introduces the bytecodes of the Java virtual machine, and discusses primitive types, conversion operations, and stack operations in particular.
  • Floating Point Arithmetic -- Describes the Java virtual machine's floating-point support and the bytecodes that perform floating point operations.
  • Logic and Arithmetic -- Describes the Java virtual machine's support for logical and integer arithmetic, and the related bytecodes.
  • Objects and Arrays -- Describes how the Java virtual machine deals with objects and arrays, and discusses the relevant bytecodes.
  • Exceptions -- Describes how the Java virtual machine deals with exceptions, and discusses the relevant bytecodes.
  • Try-Finally -- Describes how the Java virtual machine implements try-finally clauses, and discusses the relevant bytecodes.
  • Control Flow -- Describes how the Java virtual machine implements control flow and discusses the relevant bytecodes.
  • The Architecture of Aglets-- Describes the inner workings of Aglets, IBM's autonomous Java-based software agent technology.