Usually a 'Controller' is the interface between a user interface component and a model (e.g. Purchase). Controllers should be thin classes, doing little more than mapping user interface events to model functions.
A 'Manager' is a code smell. The purchase should manage itself, or it could be managed by an owning class, like Vendor or Buyer.
A 'Handler' is usually a single function wrapped in an object. These are needed when programming in legacy languages without first-class functions.
Yes, the concepts are different.
Simulation
A simulation
is a system that behaves similar to something else, but is implemented in an entirely different way. It provides the basic behaviour of a system, but may not necessarily adhere to all of the rules of the system being simulated. It is there to give you an idea about how something works.
Example
Think of a flight simulator as an example. It looks and feels like you are flying an airplane, but you are completely disconnected from the reality of flying the plane, and you can bend or break those rules as you see fit. For example, fly an Airbus A380 upside down between London and Sydney without breaking it.
Emulation
An emulation
is a system that behaves exactly like something else, and adheres to all of the rules of the system being emulated. It is effectively a complete replication of another system, right down to being binary compatible with the emulated system's inputs and outputs, but operating in a different environment to the environment of the original emulated system. The rules are fixed, and cannot be changed, or the system fails.
Example
The M.A.M.E. system is built around this very premise. All those old arcade systems that have been long forgotten, that were implemented almost entirely in hardware, or in the firmware of their hardware systems can be emulated right down to the original bugs and crashes that would occur when you reached the highest possible score.
Best Answer
People tend to casually refer to Java classes as "Java beans" in conversations and articles.
When written as one word, however, "JavaBeans" are classes conforming to a particular convention. A JavaBean is a Java Object that is serializable, has a nullary constructor, and allows access to properties using getter and setter methods. See Wikipedia's article on JavaBeans for more information.
It's also important to note the difference between a Javabean and an EJB.