Current methods of manipulating data on the Web are too limited for general purpose applications that involve client-generated updates. The forms and CGI scripts used to get information from a user are slow and limited in functionality. CGI-based applications run on a server machine; one exchange of information between a user and the application takes two network transmissions, one to send the user's input to the application, and one for the application's response. These transmissions are subject to varying network and server delays that are perceived by the user. In contrast, an application front-end running directly on the user's machine can respond immediately to user input. Network transmissions for propagating updates can be coalesced and transmitted in the background when network bandwidth is available.
Another argument for running application code on the client side is that it permits a more flexible user interface. The user interface for forms is currently limited to textfields, lists, and buttons, which are insufficient for the advanced data types of DCAs. Application code on the client side can support custom graphics for visual controls for application specific data types. In general, a programmable client side offers a tremendous amount of flexibility that is not available with standard formatting and display tools like HTML.
The introduction of the Java programming language provides an alternative to forms and CGI scripts for interaction between user and application. Java gives us the ability to design custom controls for data types, and bring interactive graphical controls to predominantly static web pages.
Running Java through a Web browser also has the advantage of moving the application from a server to the user's machine. Users' actions are handled immediately and application state is updated locally. This results in faster response time and fewer network transmissions. In addition, the programming language is a tool we can use to design caches for optimal application performance.