Object evolution and separation of concerns are two important issues in building a complex information system using object-oriented design and programming technology. The two issues are closely related to role playing activities in an organization. Roles have been discussed in object modeling for a long time. It is well-accepted that supporting roles in programming languages is required. This paper clarifies the role concept in the sense of object evolution and claims that a role should be taken as a fundamental component in object evolution. It then discusses the mentioned issues in software design and their resolutions. It proposes a principle that keeps the object identity and structure unchanged when passing messages to relevant roles. Next, it introduces the role play regulations, hierarchies and history recording mechanism. A package of classes for role play in Java is developed. Finally, it proposes a method to visualize the object evolution and role hierarchy. The work offers a conceptually solid and practically simple way to have objects in Java play roles. With the proposed methods, it is easy to express the evolution and separation of concerns of objects. The advantages over the previous methods are also discussed. The work assumes fundamental significance in building new information systems.