The application must address the following properties:
• Multiple processing entities in the form of clients and servers.
• Shared data/state information.
• Robust operation in the form of communication, processing, and crash/restart capability.
• Must only use the Java language packages (no external packages other than for user interface support).
• Must be non-trivial and use literature support as the basis for the inspiration.