在开发任何新软件之前,都值得考虑是否用 JavaBean 的形式来开发它。如果软件模块要既能够可视地操作,又能够定制以达到某些效果,则这种软件模块就可能适于做成一个 JavaBean。为帮助您确定要开发的软件是否应该是一个 JavaBean,假定它应该是 用 Java 编写的,请向您自已提出以下问题,并相应地作出决定:
- 是否打算让它可重用?或者,它会是可重用的吗?
- 是否希望将它与其他可重用的 Java 组件一起使用?
- 是否预计会在 IDE 工具中使用它?
如果上述问题的答案都是肯定的,则它应该作为 JavaBean 来开 发。(见 developerWorks 的“JavaBeans Guidelines”)
JavaBean 概念是为了在 Java 编程环境中支持可重用的组件,它是一种一般性的设计方法,适用于客户机或服务器机器上运行的 Java 程序。由于对可视的构建器工具的强调,也由于许多 Java bean 都是图形用户界面 (GUI) 组件,所以 JavaBean 组件可能被视为一种客户端技术。但是,并不要求 Java bean 都是可视的,并且它们也可以用于服务器环境中。
编码为 Java bean 的 Java 类通常具有以下特征:
- 使用设计模式。这些模式就是方法和接口的编码约定。
- 支持可视的软件开发工具。类必须将变量(称为属性)、方法和事件展示出来。
- 可以定制。定制包括能支持缺省的属性编辑器,或者提供单一的定制规则。定制使开发人员得以在不更改源代码的情况下更改 bean 的行为。
- 支持自省 (introspection)。这指的是将属性、方法和事件公开给其他类,可以通过设计模式或通过创建 BeanInfo 类 来完成这种自省。
- 是持久的。这就允许在一个可视构建器中定制一个 bean,然后以其定制后的状态加以保存。
Java 2 Platform, Enterprise Edition
Sun Microsystems 发起了一项称为 Java 2 Platform, Enterprise Edition (J2EE) 的技术 创新,旨在将 Java 平台的范围扩展到大规模服务器环境:
“1997 年 4 月 12 日,Sun 宣布了一项为企业环境 开发 Java 平台的创新成果。使 用开放式的 Java Community Process,Sun 促进了一组标准的 Java 扩展的开发,称 为 Enterprise Java API。这些应用程序编程接口 (API) 为各种各样的中间件的实现提供了不依赖 供应商的编程 接口。Enterprise Java API 的要点是 Enterprise JavaBeans API,后者为 Java 应用程序服务器 定义了一个服务器端组件模型,以及一个不依赖供应商的编程接口。”(见 Thomas 的“Java 2 Platform, Enterprise Edition: Ensuring Consistency, Portability, and Interoperability”)
J2EE 为 Enterprise JavaBeans 技术提供了工作环境。事实上,Sun 把若干项软件技术都设想为这样的构件块,它们将使大型企业能够把以任务为关键的业务系统移植到 Java 环境 中,而 Enterprise JavaBeans 技术不过是这些技术之一。EJB 组件是按它们自己的规范定义 的,但 EJB 技术并不是一项独立的技术。它建立在 其他 Java 技术之上,这些技术由 Sun 和其他 IT 公司联合规定,它们一起提供了这个框架的内容,该框架就称为 Java 2 Platform, Enterprise Edition。
J2EE 中包括以下技术:
- Enterprise JavaBeans (EJB) 技术
- Java Interface Definition Language (IDL)
- Java Message Service (JMS) API
- Java Naming and Directory Interface (JNDI)
- Java Remote Method Invocation (RMI) 和 Object Serialization
- Java Servlet API
- Java Transaction API (JTA)
- Java Transaction Service (JTS)
- JavaServer Pages (JSP) 技术
- JDBC 数据库访问 API
参与到这个企业 Java 框架中,并不意味着每项技术都依赖于所有其他技术。单独的规范文档指出每项技术的相关性。例如,Enterprise JavaBeans 规范 1.0 发行版就指明了在定位各个组件时与 JNDI 的相关性,以及在编程中启动和停止事务处理时与 JTA 的相关性。






