La programmation à objets provient du besoin d'exprimer des interactions. Jusqu'à présent, deux objets ne peuvent interagir que si l'un invoque une méthode de l'autre objet : cette forme d'interaction est ainsi limitée à la réponse d'un objet à un autre objet. Un objet actif ou agent est un objet doté d'un comportement qui lui permet d'agir sans qu'il soit sollicité par d'autres objets. En Java, un agent est une instance d'une classe réalisant l'interface Runnable. Celle-ci déclare la méthode run :
package java.lang; public interface Runnable { void run(); }