无论是否需要管理 servlet 容器、设置服务器负载均衡、处理简单的 HTML 表单或甚至对 HTTP 数据流执行复杂的处理,servlet 体系结构和 API 都能使 Web 应用程序开发和部署变得非常容易。用 servlet 容器设置和管理 Web 服务器非常简单,只需要很少的配置。对于服务器部署,通常一个或两个 XML 文件就包含所有所需的配置设置。对 servlet 进行编程也很简单。servlet API 对以下过程中所涉及到的细节进行了抽象:截取客户机请求、将请求路由至相应的 servlet 实例、从线程池检索线程、调用正确的方法来处理请求(doGet()、doPost() 或其它任何从 service() 方法调用的方法)以及甚至为抽取和处理编码的 HTTP 数据提供方便的 API。
Java Web Start 实际上是 applet 和独立应用程序的混合物,它是一项较新的技术,它有许多较突出的优点(关于更多这方面的信息,请参阅参考资料)。象 applet 一样,可以从 Web 浏览器调用 Java Web Start,它也可以与 servlet 交互。与 applet 不同的是,Java Web Start 应用程序将文件缓存在本地硬盘,只有当需要时才下载额外的文件。可以从本地资源安装或通过 Web 远程安装 Java Web Start 应用程序。此外,启动的 GUI 是功能齐全的 Swing 客户机。可以在不妨碍应用程序的情况下关闭浏览器。其结果是结合了 applet 和非 applet 两者的优点。然而,Java Web Start 并不是十全十美。它需要将所有资源都包含在本地 JAR 文件中(而不是松散的文件中);它不允许直接访问资源(资源是通过抽象的资源管理机制来访问的);它不支持本机应用程序的部署。
Web 应用程序 在标准的基于 Web 的应用程序(譬如 Web 浏览器)情形下,您会采用支持 HTTP 的客户机,它需要访问一个或多个后端业务服务。在这种情形下,不需要考虑客户机位于防火墙的哪一侧,因为必须要使用 servlet。显而易见,HTTP 的需求会利用 Web 层。实质上将根据对 EJB 容器服务的相对需求来决定是否使用 EJB 组件。
多种客户机类型 最后一种情形是需要多种客户机类型。也许外部客户需要使用基于 Web 浏览器的客户机,而内部员工需要使用标准的桌面、丰富的 GUI。在提供高性能和可靠性的需求与重用需求之间,如何平衡?
如果不需要管理复杂的事务,或者不需要访问多个企业资源,则可以简单地使用与一系列助手类进行相互操作的 servlet 层来进行业务处理。外部浏览器客户机将通过这个 Web 层与系统进行相互操作。然后,重用助手 bean 来直接为内部应用程序的请求提供服务,或者内部应用程序通过 servlet 层进行通信。虽然这样能解决问题,但它不是最干净、最有效或可伸缩性最好的解决方案。