Ken Nordby
IBM 软件工程师
2000 6 月
本文概述 Enterprise JavaBeans (EJB) 技术,旨在让读者快速理解基本 概念。第 1 部分讲述 EJB 技术的历史和某些目标、优点和技术。为了简洁 明了,有选择地讲述 EJB 技术的一些关键要素。请注意,虽然 EJB 组件依赖于一些基础 的 Java 服务(如 Java Transaction Service),但使 用 EJB 组件及认识这些组件的好处并不需要掌握这些相关技术的知识。
Enterprise JavaBeans 技术自 1998 年 3 月问世以来很受好评。下面这段话就是一个例子:
“自从两年多以前问世以来,Enterprise JavaBeanstm 技术在平台供应商和企业的开发小组中,同样都保持着空前的发展势头。这是因为 EJBtm 的服务器端组件模型简化了中间件组件的开发,这些中间组件都是事务性的、可伸缩的和可移植的。Enterprise JavaBeans 服务器通过为中间件服务(如事务处理、安全性、数据库连接及其他)提供自动支持,降低了开发中间件的复杂程度。”(Sun Microsystems 网站)
Enterprise JavaBeans 这一名称利用了 Java bean — 这种可移植、可重用 的 Java 软件组件的声望。Enterprise JavaBeans 技术把 Java 组件的概念从客户机域扩展到了 服务器域:这是 Java 技术成长过程中有重大意义的一步,它使 Java 技术发展成为一种强健的、可伸缩的环境,能够支持以任务为关键的企业信息系统。
服务器上的 Java 应用程序
Java 编程语言最初在 Web 开发人员中获得好评的一个原因是,它支持称 为 applet 的可下载 Java 程序。对 Applet 的支持以 Applet 类的形式内置到 了 1.0 版的 Java Development Kit (JDK) 中。按照 1.0 版的时间框架,Java 开发是以 applet 和 应用程序作为中心的。基于 JDK 1.0 版的 Java 读物都是从 applet 和应用程序的角度来描述 Java 编程的:
“Java 程序由更多的类定义中的某一个组成,每个类定义均已编译成它自已 的 Java 虚拟机对象代码的 .class 文件。这些类之一必须定义一个 叫做main()的方法,程序就是从这个方法开始运行的。想调用一个 Java 程序,需要运行 Java 解释器 java,并指定包含main()方法的类的名称。请注 意 Java applet 并不是一个应用程序 — 它是一个由已在运行的 Java 应用 程序(如 Web 浏览器或 applet 查看器)装入并运行的 Java 类。”(见 Flanagan 所着 的 Java in a Nutshell)
Java 应用程序可以在服务器上运行,但是不管是在客户机-服务器环境下,还是在基于 Web 的环境 下,JDK 中都没有提供让 Java 应用程序专用于服务器机器的接口或包。认识到 Java 在 Web 环境下作为一种服务器语言的潜力,Sun Microsystems 编写了 Java Servlet 规范。servlet 在许多方面 与 applet 相似,它是专门为在 Web 服务器机器上运行而设计的 Java 程序:
“servlet 是由容器管理的 Web 组件,可产生动态内容。servlet 是 一种小型的、与平台无关的 Java 类,被编译成体系结构中立的字节代码,这种代码可以动态地加载到 一个 web 服务器上,并由此 web 服务器运行。servlet 通过一种 由 servlet 容器实现的请求-响应模型与 Web 客户机进行交互。这种请求-响应模型建立在超文本传输协议 (HTTP) 行为的基础之上。”(见 JavaSoft 的“Java Servlet API Specification”)
在一台 Web 服务器控制下,在多台服务器上运行若干小型用户程序,这种想法并不新鲜 — 一段时间 以来,公共网关接口 (CGI) 程序(常被称为 CGI 脚本)一直起着这种作用,并推动了 Web 的普 及。但 Java servlet 可以以更高的效率和可移植性来实现这一目的,因而 可望最终会取代 CGI 程序。为 servlet 提供运行时环境的 软件(通常被称为 servlet 引擎)可以添加到现有的、本身并不支持 Java 可执行程序 的 Web 服务器上。






