Java EE 程序设计
上QQ阅读APP看书,第一时间看更新

1.3 Java EE编程思想

Java EE为满足开发多层体系结构的企业级应用的需求,提出“组件-容器”的编程思想。Java EE应用的基本软件单元是Java EE组件。所有的Java EE组件都运行在特定的运行环境之中。组件的运行环境被称为容器。Java EE组件分为Web组件和EJB组件,相应地,Java EE容器也分为Web容器和EJB容器。

容器为组件提供必需的底层基础功能,容器提供的底层基础功能被称为服务。组件通过调用容器提供的标准服务来与外界交互。为满足企业级应用灵活部署,组件与容器之间必须既松散耦合,又能够高效交互。为实现这一点,组件与容器都要遵循一个标准规范。这个标准规范就是Java EE。

Java EE容器由专门的厂商来实现,容器必须实现的基本接口和功能由Java EE规范定义,但具体如何实现完全由容器厂商自己决定。常见的Java EE服务器中都包含Web容器或EJB容器的实现。组件一般由程序员根据特定的业务需求编程实现。

所有的Java EE组件都是在容器的Java虚拟机中进行初始化的,组件通过调用容器提供的标准服务来与外界交互。容器提供的标准服务有命名服务、数据库连接、持久化、Java消息服务、事务支持、安全服务等。因此在分布式组件的开发过程中,完全可以不考虑复杂多变的分布式计算环境,而专注于业务逻辑的实现,这样可大大提高组件开发的效率,降低开发企业级应用程序的难度。

那么组件与容器之间是如何实现交互的呢?即容器如何知道要为组件提供何种服务,组件又是如何来获取容器提供的服务呢?Java EE采用部署描述文件来解决这一难题。每个发布到服务器上的应用除了要包含自身实现的代码文件外,还要包括一个XML文件,称为部署描述文件。部署描述文件中详细描述了应用中的组件所要调用的容器服务的名称、参数等。部署描述文件就像组件与容器间达成的一个“契约”,容器根据部署描述文件的内容为组件提供服务,组件根据部署文件中的内容来调用容器提供的服务。

从上面的介绍中开发人员可以感觉,部署描述文件的配置是Java EE开发中的一项重要而又烦琐的工作。值得庆幸的是,自Java EE 5规范推出以来,Java EE支持在组件的实现代码中引入注解来取代配置复杂的部署描述文件。所谓注解,是JDK 5版本后支持的一种功能机制,它支持在Java组件的源代码中嵌入元数据信息,在部署或运行时应用服务器将根据这些元数据对组件进行相应的部署配置。关于注解,后面的章节中还会详细论述。容器在组件部署时通过提取注解信息来决定如何为组件提供服务。注解的出现大大简化了Java EE应用程序的开发和部署,是Java EE规范的一项重大进步。

更值得一提的是,从Java EE 6规范开始,还引入了一种“惯例优于配置”或者称为“仅异常才配置”的思想。通俗一点讲,就是对于Java EE组件的一些属性和行为,容器将按照一些约定俗成的惯例来自动进行配置,此时开发人员甚至连注解都可以省略。只有当组件的属性和行为不同于惯例时,才需要进行配置。这种编程方式大大降低了程序人员的工作量,也是需要开发人员逐渐熟悉和适应的一种编程技巧。