您的位置:首页 > 编程语言 > Java开发

Beginning Java EE 6 Platform with GlassFish 3 (中文版) (一)

2010-11-30 00:19 330 查看

第一章 俯瞰 JAVA EE 6

当今企业生存在全球竞争的世界中。他们需要应用来支撑他们日渐复杂的业务需求。在这个全球化时代,企业扩张到整个大陆,跨越不同的国家,7*24小时地在因特网上运营。他们的系统必须实现国际化,并准备着处理不同的货币单位和时区。与此同时也必须做到缩减成本,降低系统服务响应时间,在安全可靠的存储上保存数据,提供不同的用户图形界面给客户、员工和供应商。
很多公司不得不将这些革新性的挑战整合到他们现存的企业信息系统(EIS)中,同时还要开发B2B应用与合作伙伴通信。企业协调整理在不同位置存储地、被多种语言处理地、通过多种协议传输地内部数据的情况也经常出现。当然,这些工作中必须防止损失,这意味着要防止系统崩溃,并且系统是有效、可扩展和安全的。企业应用必须面对变化、复杂,保持健壮性。这就是为什么Java Enterprise Edition恰到好处的被创造出来。
第一个Java EE版本(最初被称为J2EE)所关注的难题是企业在1999年所面临的:分布式组件。从那以后,应用软件已经不得不适应新的技术解决方案,例如SOAP或Restful web服务。Java EE平台提供不同的标准方式,在相同的规格要求上运行,以此来应对这些新技术需求。经历多年,Java EE已经改变,变得更加完善、简单、易用和可移植。
在这一章,我将给你一个Java EE的整体轮廓。在介绍完它的内部架构后,我将谈谈Java EE 6的新功能。本章的第二部分将集中于搭建你的开发环境,这样你就能够按照本书的代码动手实践。

1理解Java EE

当你想要处理集合对象是,你不必着手开发你自己的hashtable;你使用collection API。类似地,如果你需要事务性的、安全性的、互操作的¹和分布式的应用,你不会想去开发这些底层API;你使用Java企业级版本。就像Java 标准版本(Java SE)提供一个API处理集合一样,Java EE通过Java Transaction API (JTA)来提供一个标准方法处理事务,通过Java Message Service (JMS)处理消息,通过Java Persistence API (JPA)处理持久化。Java EE是面向企业级应用的一组规范。它可以被看做Java SE的延伸,让分布式的、健壮的、强大的、高可用的应用变得更易开发。
Java EE 6 是一个重要的里程碑。不仅仅在与它沿袭着Java EE 5的步伐聚焦在一个更简单、易用的开发模型上,它还引入了新的规范,作出了修订和剪裁,是其更加轻量。Java EE 6 的发布几乎恰逢企业平台十周年纪念。它融合了Java语言的优势和最近十年来获得的经验。而且,他获益于开源社区的活力和JCP²的严谨。今天Java EE是有一个被经验丰富的开发者、广大的开发社区很好证明了的一个平台,很多应用运行在生产服务器上。 Java EE是一组API,用于建立标准的基于组件的多层应用。这些组件部署在不同的容器中提供一系列服务。

1 互操作性(英文:Interoperability;中文又称为:协同工作能力,互用性)作为一种特性,它指的是不同的系统和组织机构之间相互合作,协同工作(即互操作)的能力。
2 JCP(Java Community Process)成立于1998年,是使有兴趣的各方参与定义Java的特征和未来版本的正式过程。

1.1回顾历史
十年是一段很好的时光来回顾了Java EE的发展历程(见图 1-1),最初它被称为J2EE,J2EE 1.2,由Sun公司开发,发布于1999年,作为一个重量级规范包括10个JAVA 规范请求(JSRs¹)。在那时,人们谈论的是CORBA²,J2EE在理论中创建了分布式系统。Enterprise Java Beans(EJBs)被介绍用来支持远程的有状态、无状态服务对象和可选的持久化对象(entity beans)。他们被建立在一个事务性和分布式的组件模型上,使用RMI-IIOP作为它的底层协议(Remote Method Invocation—Internet Inter-ORB Protocol),web层包含servlet和JavaServer Pages(JSPs),JMS被用来发送消息。



2003年,J2EE1.4(JSR 151) 包含20个规范说明,加入了支持web service。EJB允许会话bean在SOAP/HTTP协议上被调用。一个定时服务被创建用于允许EJB在指定的时间或间隔被调用。这个版本对应用的组装和部署提供了跟好的支持。
尽管它的支持者们已预料到它的广阔前景,但并不是所有的J2EE的承诺被实现。用它来创建一个系统太复杂,对于复杂的用户需求,部署时间经常超过整体比例。J2EE被看做为重量级组件模型:难测试,难部署,难运行。这时候像struts、spring或hibernate一样的框架出现,展现出一种新的企业级应用开发方法。幸运的是,在2006年的第二季度, Java EE 5 (JSR 244)发布,并被作出显著改进。他从开源框架中获得灵感,回到了 Plain Old Java Object (POJO) 编程model。源数据能够通过注释定义,而XML变成可选方式。从开发者的观点来看,EJB3和新的JPA的飞跃要远甚于整个平台的发展。JavaServer Faces(JSF)作为一个标准的表示层框架被引入, JAX-WS 2.0 取代JAX-RPC 作为 SOAP服务services API.
今天,Java EE 6(JSR 316)追随简化开发工作的道路,注释、POJO编程、异常配置机制等概念始终贯穿整个平台,包括在web层。一系列丰富的创新随之而来,例如崭新的JAX-RS 1.1;它简单成熟的API和EJB3.1一样,丰富了其他组成部分,如JPA2.0、定时器服务等。但是Java EE 6的重点是在可移植性(例如通过标准的全局JNDI naming)、撤销一些过期规范(通过剪裁),配置创建平台的子集合。在本书中,我将向你展示这些改进以及Java企业版本变得多么简洁丰富。

1.2标准化
如你所见,Java EE 是基于标准的,它是绑定了许多其他JSRs的重量级规范说明书。你可能会问为什么规范如此重要,因为一些非常成功的Java框架并没有标准化(Struts, Spring等等)。纵观历史,人类创造了标准来简化沟通与交流。一些明显例子是语言、货币、时间、坐标、度量、工具、铁路、电、电报、电话、协议和编程语言。在早期的Java年代,如果你做任何类型的web或企业开发,你将被封闭在私有的世界里。要不创建你自己的框架,要不使用某一种专门的商业框架。接下来,开源框架的时代来临,但是它们不是基于开放的标准下。你可以使用一个没有实现标准的开源软件,固定在其单一的实现下;或者使用一个实现了标准的开源软件来保证可移植性。多种商业的(WebLogic, Websphere, MQSeries等)或开源的(ClassFish, JBoss, Hibernate, Open JPA, Jersey等)框架在处理事务、安全、组件状体化、对象持久化等方面时实现了的Java EE 提供的开放性标准。相对于以往,今天你的应用只需很小的改动,就能部署到任何遵循标准的应用服务器上。

1.3架构
Java EE 是一组被不同容器实现的规范。容器是一个Java EE的运行环境,提供特定服务给它所侍奉的组件,如生命周期管理、依赖注入等等。这些组件使用公共约定与Java EE基础设施和其他组件通信。在部署前,组件需要按照特定方式打包(遵照一个规定的目录结构并被压缩,我们称之为归档文件)。Java EE是Java SE平台的超集,这意味着Java SE的API能被任何Java EE组件使用。图1-2展示了容器之间的逻辑关系。箭头表示容器间访问的协议。比如侍奉servlet的web容器通过RMI-IIOP协议访问EJB。



1.4组件
Java EE运行环境定义了四种组件,具体实现必须支持:
Applet是被浏览器执行的图形用户界面(GUI)应用,。它们使用Swing API提供强大的用户界面。
Application是在客户端执行的程序。它们是典型的GUI或批处理程序,能够访问所有的Java EE中间层工具。
Web应用(由servlet、servlet filter、web event listeners、JSP和JSF组成)在web容器中运行行,响应从web客户端来的HTTP协议请求。Servlet同时支持SOAP和RESTful web服务。从Java EE 6以后,web应用能够支持EJBs Lite(详见第6章)。
企业级应用(由EJB、Java Beans、Java Message Service、Java Transaction API、异步调用、定时器服务、RMI/IIOP组成)在EJB容器内运行。EJB是用来处理事务性的业务逻辑的容器托管组件。它们能够被RMI (或 HTTP for SOAP and RESTful web services)协议本地和远程的访问。

1.5容器
Java EE基础部件被分割成不同的逻辑领域,这些领域被称为容器(见图1-2)。每一个容器有特定的角色,支持一系列的API,为运行其中的组件提供服务(安全、数据库访问、事务处理、命名目录、资源注入)。容器隐藏了技术的复杂性,增强了可移植性。依据你所构建的应用类别,为了使用一个或多个容器,你必须明白每一个容器的本领和约束。比方你需要开发一个web应用,你将开发一个JSF层和EJB Lite层,并部署到一个web容器中。但如果你希望web应用能远程调用一个业务层,并使用消息服务和异步调用,则你需要web容器和EJB容器。
Applet容器被大多数web浏览器提供,用来执行applet组件。当你开发applet时,你能集中精力在应用的视觉效果上,容器负责了你环境的安全工作。Applet容器使用一种沙盒安全模型,代码只能在“沙盒”内,而不能在“沙盒”外运行,这意味着容器防止下载到你本地机器的代码访问系统本地资源,如进程、文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: