A user's perception of an enterprise application is often closely tied to the behavior of the application's client tier. A client makes requests to the server on behalf of the user, and presents the outcomes of those requests to the user. Therefore, it's important to choose a client configuration that best addresses the requirements of the application and empowers the user with a rich interface.
The J2EE platform supports many types of clients. A J2EE client can connect across the World Wide Web, or inside an enterprise's intranet. Clients can run on hardware ranging from powerful desktop machines to tiny wearable assistants. They can provide a browser-based or stand-alone interface. A client can communicate with, and use the services provided by, one or more tiers of the enterprise application. Clients can also be written in a number of languages and use a variety of development environments.
Since client software executes on user systems, it can be hard to control aspects of the client environment such as hardware, operating system platform, and browser version. In any distributed application, there are trade-offs to be made in partitioning application responsibility between server and client. The more functionality you keep on the client (closer to the user), the better perceived quality of service the user gets. The more you provide on the server, the easier it is to distribute, deploy, and manage the application.
This chapter presents considerations for J2EE client design and provides guidelines for choosing among the available options. First, it discusses the requirements to consider before deciding on a client type. Then it presents a classification of clients based on the differences in the implementation model, and provide rules for translating client requirements into a choice of a client implementation.