Data Transfer Object is used for transferring a collection of data across application layers.
Value Object is an object that contains values that are needed to be transferred between application layers so DTO and VO are almost the same but it is used in different places.
Plain Old Java Object is a simple lightweight Java object which does not need specific container "like web or EJB container" to execute it.
JavaBean is a class that follows the JavaBeans conventions as defined by Sun:
- The class must have a public default constructor.
- The class properties must be accessible using get, set, and other methods.
- The class should be serializable.