Clients can also be offered as stand-alone Java language applications. To support more complex user interactions, it may be necessary to provide functionality directly in the client tier. This functionality is typically implemented as JavaBeans TM components that interact with the service in the middle tier via servlets. Client-tier JavaBeans components would typically be provided by the service as an applet that is downloaded automatically into a user's browser. In this case, the enterprise would typically make operating system specific installation programs for the client available for users to download via their browsers.
Users execute the installation file and are then ready to access the service.
Since Java technology programs are portable across all environments, the service need only maintain a single version of the client program. Although the client program itself is portable, installation of the Java technology client typically requires OS-specific code. There are several commercial tools that automate the generation of these OS-specific installation programs. If desired, non-Java clients such as Visual Basic programs can present J2EE services to users. Since the service is presented by servlets in the middle tier to first-tier clients using the standard HTTP protocol, it is easy to access it from practically any program running on any operating system.