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 3 of 5

Bartering
Electronic commerce is another good fit for mobile agent technology. A mobile agent could do your shopping for you, including making orders and potentially even paying. For example, if you wanted to fly from Silicon Valley to an island in the South Pacific, an agent could visit databases of flight schedules and prices for various airlines, find the best price and time, make reservations for you, and pay with your credit card number.

Electronic commerce also can take place between agents. For example, there could be an agent host dedicated to the buying and selling of automobiles. If you wanted to buy a car, you could give an agent knowledge of your preferences, including a price range and potentially a negotiation strategy. You would send your agent to the dedicated host, where it would mingle and haggle with agents seeking to sell a car.

If a potential match were found, your agent could report back to you, and you could contact each other in person to make the final arrangements. Alternatively, your agent potentially could consummate the deal on your behalf. If the opportunity is a good one, your agent may have only a few microseconds to act before someone else's agent buys the car.

Parallel processing
Given that mobile agents can move from node to node and can spawn subagents, one potential use of mobile agent technology is as a way to administer a parallel processing job. If a computation requires so much CPU time as to require breaking up across multiple processors, an infrastructure of mobile agent hosts could be an easy way to get the processes out there.

Entertainment
One last example of a potential application for mobile agents is entertainment. In this scenario, agents represent game players. The agents compete with one another on behalf of the players. Each player would program an agent with a strategy, then send the agent to a game host. If the game host is executing on a computer in Las Vegas, then perhaps the agents could play for real money.



The security challenge

Although there is no shortage of potential applications for mobile agents, the technology raises a few concerns -- probably the biggest being security. With an established infrastructure of mobile agent hosts that give agents access to local resources, virus writers and other rogue programmers could have a lot of fun.

Although host security is a prime concern, it is likely a solvable problem. Using existing security mechanisms, such as those offered by Java, it should be possible to achieve acceptable levels of security to protect hosts from malicious agents.

Another side to mobile agent security, which may not be as straightforward to solve, is protecting agents from malicious hosts. If you are planning to send out agents that have your credit card numbers or some form of e-cash embedded in their state, you need to worry about pickpockets. Because a host uploads the class files and state for your aglets, they (or anyone sniffing the network during transit) could potentially read private information or even alter your aglet's code and state.

  • 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.