Thursday, September 9, 2010

My Windows Mobile Call-Block (User Guide)

Getting start with My Windows Mobile Call-Block

After install the Cab file of My Windows Mobile Call-Block on your Windows Mobile phone , click on the icon of the application on your programs list , the Main Menu form will appear

Main Menu Form , Menu tab
Figure 1.1 : Main Menu Form , Menu tab
  1. click on the the button titled with Enable Call-Block , responsible to enable or disable the application
  2. click on the button titled with Settings ,which is the gate to configure the groups of the application
  3. click on the tab titled with FireWall Settings , to view the firewall settings

How to configure firewall settings

  1. click on the tab FireWall Settings
  2. check on checkBox labeled with Reject all calls to reject all calls , and click on the checkBox labeled with exclude to exclude a group of contacts from the call rejection (sure how to create a new group will be discussed later)
  3. Main Menu , firewall tab
    Figure 2.1 : Main Menu Form , all calls seem to be rejected
  4. Check the checkBox labeled with Reject unknown calls to reject the calls from outside your phone book
  5. Main Menu , Firewall tab
    Figure 2.2 : Main Menu form , unknown calls seem to be rejected

    How to create a new group

    1. click on settings button (see figure 1.1) , the Group List form will appear
    2. Group List
      Figure 3.1 : Group List form , no groups defined yet
    3. From the Group List form click on the NewGroup item from the Options menu
    4. The Add New Group form will appear .And so, the user can choose the suitable name and suitable call status for the group then click ok
    5. Add New Group
      Figure 3.2 : The Add New Group Form , the user choose Friends as the name of the new group and open the call status ComboBox to choose the initialized call status for the group
    6. Pressing Ok at the New Group form , Now a new group called Friends is created
    7. Group List ,friend group
      Figure 3.3 : Group List form , a group called friends is created and you can see the items of the menu Options

    How to change a group call status

    1. From the Group List form check the CheckBox beside the group you want to change its call status
    2. Group List , change status
      Figure 4.1 : Group List form , the CheckBox beside the group Friends is checked
    3. click on the soft key Change Status to change the call status to Busy-SMS
    4. Group List , change status
      Figure 4.2 : Group List form , the call status of the group Friends is changed to Busy-SMS
    5. if you repeat the steps 1 & 2 & 3 the call status of the group becomes FastBusy , and if repeat 1 & 2 & 3 steps again the call status return to become Allowed

    How to View & Add the contacts to a group

    1. From the Form Group List (see figure x) select the name of the group ,you want to Add/View its contacts
    2. Select the sub item Contacts from the item View at the Options menu
    3. The contacts of the group will be viewed (if exists !)
    4. Members of friends group
      Figure 4.3 : The group Friends has no members yet
    5. choose the item Add Members from the Options menu, to view the list of phone book contacts
    6. The Mobile phone book
      Figure 4.4 : The user try to add three contacts at the phone book to be included at the Friends group
    7. Check the CheckBox(s) beside the name of the contact(s) you want to add to the group and click ok
    8. The chosen contacts will appear at the form supposed to view the contacts
    9. Add Members
      Figure 4.5 : Three contacts added for the group Friends

    How to remove a contact from a group

    1. From the form supposed to view the group members , select the contact you want to remove it
    2. Remove Remember
      Figure 5.1 : a member removed from the group friends
    3. Select the item Remove Member from the Options menu
    4. Remove member
      Figure 5.2 : a member removed from the group Friends

My Windows Mobile Call-Block (Specification)

What the servies the system can provide for its user

  1. Reject all calls
    • exclude a Windows Mobile Call-Block contacts' group OR
    • exclude NO Windows Mobile Call-Block contacts' group
  2. Reject unknown calls
  3. Enable/ Disable the feature
  4. Categorize the contacts into groups and apply a call status of a group
  5. The user defined group of contacts can have the following call status
    • Allowed : The feature shall do nothing with the incoming call from contact at a Windows Mobile Call-Block group
    • Busy-SMS : the feature shall reject the call and replay with predefined apologize short message text from contact at a group
    • Fast Busy : the feature shall reject the incoming call only from contact at a Windows Mobile Call-Block group
  6. User can add/remove a Windows Mobile Call-Block group according to his criteria
  7. User can add contact(s) from the phone book at his/her phone book , The changes on phone book will be reflected back to the feature configuration
    • Remove a contact from the phone book will be removed from the included Windows Mobile Call-Block group at the call block feature
    • change the contact name/mobile phone from the phone book will be removed from the included at a Windows Mobile Call-Block group at the call block feature
  8. You can remove any contact from a Windows Mobile Call-Block group any time you wish

My Windows Mobile Call-Block (Overview)

Windows Mobile Call-Block is the system named my graduation project course in My university Jami'at Al-Ulum Al-Tatbiqiya 2006 – 2010 , I got 97 % at this course having an excellence certificate for this achievement.Windows mobile Call-Block was one of Dr.Emad Quaddoura suggested ideas for students graduation projects in 2010 year.I developed my graduation project system using Visual Studio 2008 as IDE (integrated development environment) , using Device Application technology supported by Windows mobile 6 SDK professional edition. My developing language was C#.Net , and I reused a class library written by C++ , called cordel.dll intended for mobile ce application.I reused only a methods from this component.

What is the new in my Windows mobile Call Block

Of course I expected some one to say , your application is already exist .And so, can I know why the need to re invent the wheel .My answer is I added a new features to already exist windows Mobile Call-Block and I added some of the features of Call Firewall ,searching over WWW you can understand what I mean by call firewall (adding call firewall features was after my graduation project course),and the contacts distinguished as a blocked one have different treatment between reject with an apologize short text message (SMS) or just have the busy treatment. My Windows Mobile Call-Block need from its user to categorize the desired contacts into user defined groups , then the user can define the suitable call treatment for each group , Of Course, blocking contact by contact is NOT the block style any more !!!

What about the adds-on Call Firewall features

Of course , searching on WWW you can find the call firewall .But , again I am not the person , who re invent the wheel .Hence , I understood the concept of Call Firewall , deploying some of call firewall concepts in my Windows mobile Call-Block in a useful and practical manner.The adds-on features can help the user to reject all call OR reject unknown calls .In case of reject all calls you can choose the group you want to exclude from the automatic rejecting , it worthies to say I added the Call Firewall adds-on features after the graduation project course.

What is the secrets of my success

  1. Dr. Emad always told me "do not give up"
  2. posting my questions on MSDN forum , that have the enough care from MSDN Forum members
  3. googling my question , their keyword
  4. Professional Microsoft Smartphone Programming , Baijian Yang (Author) , Pei Zheng (Author), Lionel M. Ni (Author)

Saturday, September 4, 2010

Scripting XO Game

Dear the below is my own implemented XO javascript game , I designed and implemented during the course named internet computing 1 , as a project of this course projects .I took this course at the second year during my studying in Jami'at Al-Ulum Al-Tatbiqiya AMMAN , jordan , with the lecturer Dr.Hadel Ahmed. I implemented my script XO game using javascript tags and functions , and HTML tags. The XO grid is a simple HTML table of 3 X 3 , I mean three rows and three columns , each cell at the table contains an input element of type image The start state to play , that the table cells contains the George W Bush pictures , click on any such picture to display the O picture and give the chance of X picture to be displayed in a random manner. X picture will be displayed in the HTML table in a random cell in the table according to the javascript random method , there is no algorithm to display the X pictures .And so , it is an easy task to win at this game ,Of course I am not very happy of this fact .But, I forced to do that .Due to, the course constraints I have not the enough time to design and implemented an Intelligent algorithm to beat any player ! -do not worry if I implemented such algorithm I will provide an optionality for beginner players- .On the other hand , I am proud with the efforts I spend on this game and on my ability to produce such a nice design and implementation

XO game using Java script

Click on George W. Bush Picture

Saturday, August 14, 2010

My Agent Security Scenario: The Code-Decrypt Class

Receive the message from encrypt Aglet 
and do decryption operation 
//examples is the name of the folder where the all ASDK(Agent
//software development kit) Java mobile agents resides
//Sec is the sub folder at the examples folder , contains the 
//java classes of my project
package examples.Sec;
//The package of reused from the ASDK  
//to have * after package name means to be able to 
//reuse all the package classes in your project
//The Decrypt Aglet inherited from the subclass (remember 
//base class concept if you are C\C++ programmer) Aglet
public class Decrypt extends Aglet
 public String userName;
 public String Password;
 public boolean handleMessage(Message secretInfo)
    userName=new String((String)secretInfo.getArg("User Name"));
    System.out.println("User Name after Decryption : "+userName);
    Password=new String((String)secretInfo.getArg("Password"));
    System.out.println("Password after Decryption : "+Password);
    return true;
  return false;
 public void Decrypt()
  Global.array_int=new int[10];
     for(int h1=0;h1<Global.array_char.length;h1++)
   else if(Global.array_int[h1]>=97&&Global.array_int[h1]<=122)
   else Global.array_char[h1]=(char)Global.array_int[h1];

My Agent Security Scenario: The Code-Encrypt Class

This Aglet do the dispatching ,loading Sec information from the file 
and encryption and return back to home to send values to Decrypt message
//the folder examples contained in ASDK folders
//and considered by ASDK as default folder where
//to find all agent projects
//the folder Sec is sub folder at examples folder
//I created to place my java classes in
package examples.Sec;
// is an aglet package has
//set of classes have to with aglet contained again
//in ASDK folders , the star (*) means to the ability
//to reuse all the classes at the package
//Interface MobilityListener support the methods
//have to do with aglet transfering for example 
//onDispatching() called before the aglet dispatch
//since calling disaptch(URL) method
//package needed for networking applications,I import it
//since I need to use th URL java class to point for 
//the host on the WWW , that contains the user name and password 
//package at JDK contains the Scanner class and others
import java.util.*;
//Package contained into JDK contains the classes to handle 
//I/O from data storage ,for example contains the File class 
//to read or write from or to a simple file
public class Encrypt extends Aglet
 //Declare the variables to handle the secret information
    //from the remote host at the WWW 
    public String userName=new String();
    public String password=new String(); 
 //Declare and initialiation the indicators to 
 //determine the aglet location
 //_At_Home status means the aglet newly created and 
    //did not transfere and read the secret information 
    //from the remote host and the dispatch method shall be called 
 public int _AT_HOME=0;
 //_At_REMOTE means the aglet reached successfully to the 
 //remote host over the WWW containing the user name and the password
 //and so the loading and encryption shall take place
 public int _At_REMOTE=1;
 //_Back_AT_HOME means the aglet read the secret information
 //and encrypt them and return back to the home and the time is
 //suitable to fill in tabular message and send them to the decrypt aglet
 public int _Back_AT_HOME=2;
 //_STATE can be _AT_HOME,_At_REMOTE,_Back_AT_HOME
    public int _STATE=0; 
 //create interface to handle the file open,close,read 
 //or write
 public static File infile=new File("C:/Secret.txt");;
 public static Scanner input;
 //help to store the secret infoemation in hash table with two 
 //columns one for keys and other for value , to reach val1 you 
 //need to know Key1
 Message secretInformation=new Message("secretInformation");
 //method executed when the aglet created,dispatched,reverted
 //main operations of the aglet can take place here
 public void run()
    //the _STATE changed since next time the run() 
    //executed the aglet will be at remote host    
    //the method will dispatch (say push !) 
    //to the URL specified staticall by the value :
    //"atp://OMAR-PC:1024" at the object of type 
    dispatch(new URL("atp://OMAR-PC:1024"));
   }//end try block
   catch(Exception e)
       //reaching to this block the failure 
       //to dispatch takes place 
       System.out.println("Error -- "+e);
   }//end catch block
  }//end if statement
  else if(_STATE==_At_REMOTE)
      //array will help the Encrypt() method
   //to store each character in the user name and the
   //password and value of ASCII code of each character
   //at the user name and password
      Global.array_char=new char[10];
            Global.array_int=new int[10];
    //Scanner class can hanbdle the read operation from
    //text file contains the secret information
    input=new Scanner(infile);
    //read the user name from the file and store at the 
    //username variable using next() methos that will read entire
    //convert the user name from string to array of 
    //characters for  issues have to with the methodology
    //how encrypt method encrypt data
    //print the user name as clear text on the console
    System.out.println("user name as clear text  : "+userName);
    encrypt();//call the encrypt method
    //convert the array of characters ,contains the characters 
    //of the username in encrypted manner,to string
    //read the password from the file and store at the 
    //password variable using next() methos that will read entire
    //print the Password as clear text on the console
    System.out.println("Password as clear text  : "+password);
       //convert the array of characters ,contains the characters 
    //of the username in clear text manner,to string
    encrypt();//call the encrypt method
    //convert the array of characters ,contains the characters 
    //of the password in encrypted manner,to string
    //print the username and the password in encrypted manner
    System.out.println("user name after encryption : "+userName);
    System.out.println("password  after encryption : "+password);
   }//end try block
   catch(Exception n)
       //catch block can catch any type of exception , which
                //may be fail to find the file to open    
    System.out.println("to open the file : "+n);
   }//end catch block
       //the _STATE changed since next time the run() 
    //executed the aglet will be at remote host 
    //the method will dispatch (say push !) 
    //to the URL specified staticall by the value :
    //"atp://OMAR-PC:4434" at the object of type 
    //URL that defines the aglet Home URL
    //over WWW
    dispatch(new URL("atp://OMAR-PC:4434"));
   }//end try block
   catch(Exception e)
      //reach to this block means an exception
      //takes place that may be failure to dispatch
      System.out.println("Fail to return home ");
   }//end catch block
   }//end if statement
   else if(_STATE==_Back_AT_HOME)
    //filll the hash table at the object of type message 
    //that will contain two pairs one for the password and its keyword
    //and the other the user name and the paired keyword
    //setArg is a method at Message class takes two parameters 
    //to fill hash table one the key and the other is the value matched
    //by the Key 
    secretInformation.setArg("User Name",userName);
    //Father Aglet contains the decryptProxy that object
    //of type AgletProxy that help to handle Decrypt Aglet 
    //and will be used here to send message to Decrypt Aglet
    //I defined the decryptProxy as static variable at Father Aglet
    //And so I can use it here at the current aglet
     dispose();//the current aglet killed here
    }//end try block
    catch(InvalidAgletException e)
    //Signals that the aglet proxy
                //is not valid any longer. 
     System.out.println("InvalidAgletException is thrown");
    }//end catch block
    catch(NotHandledException e)
     //the message not handled by the 
     //destined to Aglet
     System.out.println("NoHandledException is thrown");
    }//end try block
    catch(MessageException e)
     //Signals that the exception occured 
     //while processsing the message. 
     System.out.println("MessageException thrown");
    }//end catch block
    catch(Exception e)
       //The class Exception and its subclasses are 
       //a form of Throwable that indicates conditions 
       //that a reasonable application might want to catch
     System.out.println("fail to send due to : "+e);
    }//end catch block
         }//end nested if have to do with aglet location 
        }//end the run() method
  public void encrypt()
      //for lop on the characters of the array of characters
   //represents the clear text usename and password
   for(int h1=0;
   h1 < Global.array_char.length;h1++)
        //handle the lower case letters
     if((Global.array_int[h1]+3)> 122)
         //for example we have z we need to encrypt to 
      //c lower case letter and the below formula do that and then 
      //convert the ASCII code into letter again and store into array 
      //of characters
         //the process that you need to encrypt Only to 
      //move three forwarding steps in the alphabetical order 
    else if(Global.array_int[h1]>=65&&Global.array_int[h1]<=90)
        //handle the upper case letters
      //for example we have Y we need to encrypt to 
      //B lower case letter and the below formula do that and then 
      //convert the ASCII code into letter again and store into array 
      //of characters
         //the process that you need to encrypt Only to 
      //move three forwarding steps in the alphabetical order
    //handle the case that the current item
    //not english alphabetical letter
    else Global.array_char[h1]=(char)Global.array_int[h1];
  }//end for loop that check the characters of the array of characters 
  //contains the user name and password characters
 }//end encrypt() method
}//end Encrypt Aglet

My Agent Security Scenario: The Code -Father & Global Class

//the folder Sec is sub folder at examples folder
//I created to place my java classes in
package examples.Sec;
//java class its memebers can be used by the Encrypt
//and Decrypt Aglets
public class Global
    //arrray of characters to save the username and password in it 
 //before calling the ncrypt or decrypt method
 public static char array_char[];
 //at encrypt or decrypt method the character at
 //array of characters need to be casted into ASCII 
 //value and stored at array of integers to encounter
 //an arithmetic operation then the resulted value represent 
 //an ASCII code ,which will be casted to char and stored into
 //the array of characters 
 public static int array_int[];
 public static String array_in_string()
     //this method store the content 
  //of the array of characters into
  String theString=new String();
  for(int d=0;d < Global.array_char.length;d++)
      //concatenation between the string content and 
   //the current char
  //theString may be the username in encrypted or clear text manner
  //thestring may be the password in encrypted or clear text manner
  return theString;

This class represents the first trigger in the system 
,that instatiating  "Encrypt" aglet providing input for "Decrypt"
package examples.Sec;
public class Father extends Aglet
 //AgletProxy help to handle the Aglet 
 //that will be created by the Father Aglet
 //I defined as static and public data members since 
 //I need to use  decryptProxy to at the Encrypt Aglet 
 //to send Messge to Decrypt Aglet
 public static AgletProxy encryptProxy;
 public static AgletProxy decryptProxy;
 public void onCreation(Object init)
      //create the Encrypt and Decrypt Aglet
   dispose();//kill the current Aglet
  }//end try block
  catch(Exception e)
  }//end catch block
 }//end on Creation method that called only when 
 //the aglet created 

My Agent Security Scenario : The Discussion

Implementation of Caesar algorithm using Java programming language based on Mobile agent approach
Designed and Implemented by Omar Adnan Butros Isaid with ID 200530158
This system implemented as homework during the course in special topics in faculty computer networks system, semester 20091


The following papers represent the analysis of my implementation of ceaser cipher algorithm using Java language and Agent-oriented approach, after this analysis I enclosed the code of the system

This system consists of four classes :

  • Father Aglet
  • Encrypt Aglet
  • Decrypt Aglet
  • Global class

This four classes represents a system implements Caesar cipher algorithm . Caesar cipher is the first recorded substitution encryption algorithm. Caesar cipher is categorized under symmetric cryptography.

Requirements of Symmetric cryptography algorithm are:

  • encryption algorithm
  • Decryption algorithm
  • Secure key


3. System Analysis and Design

3.1 The System Static Structure

I implemented the encryption algorithm in the method encrypt() in the Aglet Encrypt, and decryption algorithm in the method Decrypt() in aglet Decrypt
This Encrypt and Decrypt aglets are supported by the members of the Global class , that all their members can be seen and shared by all aglets in the package .The class Global has an array of characters helps to token clear user name and password into tokens each token is a character. The algorithms of the system (encryption/decryption) algorithms based on conversion the characters to its ASCII code and vice versa. This system is the implementation of Caesar cipher algorithm that has to do with upper case and lower case characters only. The Integer variables (_AT_HOME,_At_REMOTE , _Back_AT_HOME, _STATEs ) control the action of aglet in its method run()

3.2 The System Dynamic Process

The class Father instantiates Encrypt and Decrypt aglets. Encrypt aglet dispatches to the host atp://OMAR-PC:1024 from the home atp://OMAR-PC:4434 .At remote host the aglet can read secret values from the file c:\Secret.txtas clear text.

I mean by the secret information is the user name and the password .each one of them loaded from the file to a separate string. The user name stored in the variable userName and password in password. The string stores in array of characters using java predefined methods that act as preparing step before calling encrypt() method. The method encrypt() move each character three forwarding steps in alphabetical order .Calling the method encrypt() , the elements of the array of characters stored in a string using the global method array_in_string().

Aglet Encrypt Now dispatches back to the home carrying encrypted strings (username, password).The Encrypt passes a message that is tabular synchronous message to the Decrypt aglets.The aglet named Decrypt handle the message using public boolen handleMessage(Messagge) method.
The Aglet Encrypt handling the message successfully get the secret information (username, password) using the method getArg (String value), that called twice. One time to get the user name and store in a usernamedata member and the second to store the password in password data member .each string stored in array of characters for decryption and after decryption the array of characters stored back into the string

Let us summarize the encryption/Decryption steps:

  1. user name and password stored in the strings userName and Password
  2. The class Encrypt load the values from the file c:\Secret.txt

  3. The class Decrypt fetish the value from the tabular message sent by the class Encrypt aglet, when return back to the home
  4. The userName and Password each one passes in the following steps each in turn
  5. Store userName/Password in the global array of characters array_char[]
  6. Each character forward/backward according to the method encrypt or Decrypt three steps in alphabetical order
  7. After calling encrypt() or Decrypt() the array of characters character by character grouped back into the string “userName” or “Password”

3.3 Relationship Model

  1. The Aglets Encrypt/Decrypt instantiated from the same Aglet Father
  2. Decrypt AgletDecrypt Aglet remains nearly doing nothing till the Message passes from the “Encrypt” aglet
  3. both aglets use the same instances of the arrays: int array_int [] and char array_char []

4. Role of Aglets

The Aglet Father

  1. instantiates the aglets Encrypt and Decrypt
  2. Provides the public objects named “encryptProxy” and “decryptProxy” of type AgletProxy Class .And so, the Aglet named Encrypt can send the message from Encrypt Aglet to Decrypt aglet

The Aglet Encrypt

  1. Pass over the network to the host atp://OMAR-PC1024
  2. At remote host loads the secret information as clear text
  3. Encrypt the secret information
  4. Return back to the home atp: //OMAR-PC:4434 with encrypted data. At home passes the encrypted information to the aglet “Decrypt”

The Aglet Decrypt

  1. Handle the Message from the aglet Decrypt and before only do nothing waits for this message at the home atp://OMAR-PC:4434
  2. Decryption of the secret information
  3. The below screen shot represents the arrival of aglet Encrypt to the host atp://OMAR-PC:1024 .where load secret information and encrypt them then return back to home atp://OMAR-PC:4434

The below shot represents the “Encrypt”,returning to home and pass to “Decrypt” that decrypt and display the secret information

My Experience With Mobile Agent

I took the Mobile agent course under advanced topic in Jami'at Al-Ulum Al-Tatbiqiya,with the Dr. Faiz Al-Shroof .This course based on the text book "PROGRAMMING AND DEBLOYING JAVA MOBILE AGENTS" by Danny B.Lang/Misturu Oshima and on the slides prepared by Dr. Faiz Al-Shroof.
I developed my own agents using ASDK (agent software development kit), I installed on my Windows Vista laptop , the instruction to install this framework is given to me by my Schoolmate Othman Adarbh , my developed agents developed on classes and libraries at JSDK (java software development kit) and ASDK (agent software kit), that ASDK added a new classes and libraries based on the Java CLI (command language infrastructure).Being a professional Java SE developer , I did well with this course and I got 88% as a final mark at this course , and I developed an interesting agents scenario all prodded to develop especially the security agent scenario I will discuss later in this blog

About Mobile Agent

The below in this post is my choose from (world wide web) about Aglet and Java mobile Agent to help the reader to understand the further posts and the reference is in the tail of the current post

What is the Mobile Agent

In computer science, a mobile agent is a composition of computer software and data which is able to migrate (move) from one computer to another autonomously and continue its execution on the destination computer.

Definition and overview

A Mobile Agent, namely, is a type of software agent, with the feature of autonomy, social ability, learning, and most importantly, mobility.
More specifically, a mobile agent is a process that can transport its state from one environment to another, with its data intact, and be capable of performing appropriately in the new environment. Mobile agents decide when and where to move. Movement is often evolved from RPC methods. Just as a user directs an Internet browser to "visit" a website (the browser merely downloads a copy of the site or one version of it in the case of dynamic web sites), similarly, a mobile agent accomplishes a move through data duplication. When a mobile agent decides to move, it saves its own state, transports this saved state to the new host, and resumes execution from the saved state.
A mobile agent is a specific form of mobile code. However, in contrast to the Remote evaluation and Code on demand programming paradigms, mobile agents are active in that they can choose to migrate between computers at any time during their execution. This makes them a powerful tool for implementing distributed applications in a computer network.
An open multi-agent systems (MAS) is a system in which agents, that are owned by a variety of stakeholders, continuously enter and leave the system.

Reputation and Trust

The following are general concerns about Trust and Reputation in Mobile Agent research:
  1. Source of trust information
    • Direct experience
    • Witness information
    • Role-based rules
    • Third-party references
  2. How trust value is calculated
  3. Overall trust value

What are the differences between trust and reputation systems?

Trust systems produce a score that reflects the relying party’s subjective view of an entity’s trustworthiness, whereas reputation systems produce an entity’s (public) reputation score as seen by the whole community.


Some advantages which mobile agents have over conventional agents:
* Computation bundles - converts computational client/server round trips to relocatable data bundles, reducing network load.
* Parallel processing -asynchronous execution on multiple heterogeneous network hosts
* Dynamic adaptation - actions are dependent on the state of the host environment
* Tolerant to network faults - able to operate without an active connection between client and server
* Flexible maintenance - to change an agent's actions, only the source (rather than the computation hosts) must be updated
One particular advantage for remote deployment of software includes increased portability thereby making system requirements less influential.

What is Aglet

Aglets is a Java based mobile agent platform and library for building mobile agents based applications. An aglet is a Java agent which can autonomously and spontaneously move from one host to another carrying a piece of code with it. It can be programmed to execute at a remote host and show different behaviours at different hosts. Java based security implementations take care of authorised access to local resources at the remote hosts.
Aglets was originally developed by Mitsuru Oshima ("大島 満") and Danny Lange at the IBM Tokyo Research Laboratory. The original name of the project was AWB (Aglets WorkBench) and IBM was responsible for most of the 1.x release. However the project is now hosted at as an open source project, where it is distributed under the IBM Public License. In the beginning, the SourceForge releases had been only bug-fix ones, but 2.x series(most of which came from open source community only) had better security and thread management. It now includes a log4j based logging system and a few bug-fixes of the older versions.
Aglets is completely written in Java, thus allowing a high portability of both the agents and the platform. Aglets includes both a complete Java mobile agent platform, with a stand-alone server called Tahiti, and a library that allows developers to build mobile agents and to embed the Aglets technology in their applications.
No new releases of Aglets have been made since 2001, although an updated users manual was released in 2004. The future of the project is unclear.
The Aglets Software Development Kit (ASDK) is a framework and environment for developing and running mobile agents. Mobile Agents are a type of software agents that have the unique ability to transport themselves from one system to another. Doing so, an

Tools to develop Mobile Agent

The Aglets Software Development Kit (ASDK) is a framework and environment for developing and running mobile agents. Mobile Agents are a type of software agents that have the unique ability to transport themselves from one system to another. Doing so, an
References :