对于用户而言,最有前途的中间件之一就是互联网的平台——J2EE应用服务器。在J2EE应用服务器领域,IBM、BEA、东方通、Apusic都在积极推动市场的发展。那么,J2EE到底有哪些好处呢?
J2EE的全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂商共同制定并得到广泛认可的工业标准。业界各大中间件厂商如BEA、IBM、Oracle都积极地促进了它的“诞生”、“长大”。
从一开始,J2EE走的就是开放路线——众多厂商共同制定规范,使得J2EE吸收了这些厂商多年来在系统设计、系统集成方面的经验、教训。同时,这些厂商对新技术发展的预测以及各自独到的观点,也会在J2EE的规范中体现。所以,J2EE产品可以满足当前不断变化、日趋复杂的商业需求,很快就成为企业构建新系统的首选产品。由此带来的巨大商业利润又使得各厂商更加努力地完善J2EE,从而造就了J2EE强大的生命力。
保护企业的投资
对于很多企业而言,在多年的发展过程中,它会有自己的技术人员设计开发的系统,也会有从专业软件公司那里买来的系统。这些系统可能是由同一种编程语言写的,也可能是由不同的编程语言写的;可能运行在相同的操作系统上,也可能需要运行在不同的操作系统上。
为了保护已有投资,企业在构建新系统的时候,会尽量利用已有的系统以节约人力物力并加快系统开发的速度。参加J2EE规范制定的各厂商都在自己的产品中实现了和老系统的接口,如BEA的WebLogic可以直接调用Tuxedo中的服务,IBM的WebSphere也可以调用CICS的服务。Java本身的跨平台性,使得J2EE产品几乎可以在任何操作系统上运行。因此,选择J2EE,企业可以充分利用已有硬件和操作系统。
对于系统将来的扩展,J2EE规范也考虑得很周全。J2EE规范强制开发者把业务逻辑封装成可重用的组件模式。在系统扩展的时候,原来的组件可以直接使用。另外,即使企业重新购买了别的J2EE产品,由于所有的J2EE产品都遵循一个统一的规范,原来的组件只要经过极少的改动就可以在新的J2EE产品上使用。这样,也避免了企业被一家厂商绑死。
缩短企业进入市场的时间
当今的市场竞争十分激烈,需求变化日趋复杂、瞬息万变。面对这样的环境,企业的反应必须及时。哪怕是延迟一点点,也要花很多的时间才能弥补回来。J2EE设计的初衷就是加快开发的速度,减少从投入到产出之间的时间周期。基于组件的开发,可以使开发者专注于业务逻辑的实现,而其余复杂的功能(如分布式事务处理、自动容错等)则由厂商负责实现,降低了对开发者编程水平的要求,也减轻了他们的负担。
具有稳定的可用性
许多系统都必须24小时不停运转,一旦宕机将造成不可接受的损失。通常的解决方案是采用集群技术。通过把用户数据备份在不同的物理机器上,J2EE产品能够有效防止数据丢失。在不同机器上的用户数据和它的备份会实时地保持同步,如果某台机器因故障宕机了,用户的请求会被转发到备份数据所在的机器上。这样,用户的请求仍会被正常处理。从用户的角度看来,他根本感觉不到系统出了故障。
使用J2EE产品作集群没有对硬件和操作系统的要求,而一般采用硬件的集群则要求集群中的所有硬件必须是一家厂商的,因为不同厂商的硬件无法作集群。这就可能要求企业购买新的硬件,无法使用原有的资源。所以,使用J2EE产品也能节约企业的支出。
背景知识:
J2EE的多层应用通常被称为三层应用,因为整个系统分布在三个地方:客户端机器、J2EE服务器和后端的数据库。图1描述了J2EE的多层结构(EIS是Enterprise Information System的简称,意为企业信息系统)。大多数J2EE的系统都分成三层或四层,复杂的系统层次会更多一些。这样的划分,使系统结构十分清晰,每个层次都各尽其责。
]
图1 J2EE的多层结构
J2EE应用是由一个个的组件构成的。组件是一种具有独立功能的软件单元,它可以在J2EE服务器中执行,也可以调用别的组件的功能。J2EE说明书中定义了以下的J2EE组件:
◆客户端应用程序和Applet是客户层组件;
◆Java Servlet和Java Server Page(JSP)是Web层组件;
◆Enterprise JavaBean(EJB)是业务层组件。
一个J2EE的客户端可以是Web Clients、Applets或客户端应用程序。Web Client包括两部分:动态的网页和浏览器。Web Client简单方便,但不能做复杂的操作。Applet是一个小的客户端程序,它需要浏览器的JVM来执行,可以把一部分的业务逻辑用Applet来实现。客户端应用程序提供了更加友好的图形界面的功能,它可以直接调用业务逻辑层中的EJB,当然,也可以打开一个HTTP联接,与Web层的Servlet通讯。
Web层和业务逻辑层都在J2EE服务器上。Web层的组件可以是Servlets或是JSPs。Servlets和JSPs都用来生成动态网页,它们的主要作用是接受并检验用户输入的数据,把数据传给后端的业务逻辑层,并把业务逻辑层处理的结果返回给用户。业务层代码的逻辑用来满足银行、零售、金融等特殊商务领域的需要,由运行在业务层上的EJB来实现。
企业信息系统层包括ERP、CRM、大型机事务处理、数据库系统以及其它的遗留信息系统等。通常企业信息系统层仅仅是数据库,但随着商业逻辑的复杂化,越来越多的系统需要和ERP、CRM互连。J2EE1.3规范颁布了JCA(Java Connector Adapter)规范,对如何与ERP、CRM等企业信息系统层互连作了统一的规定。
看了上面的层次划分,你会知道构建一个以J2EE为平台的系统的主要时间都花在Web层和业务逻辑层的开发上。上面提到J2EE可以使开发者专注于业务逻辑的实现,而不必考虑分布式事务处理、自动容错等其它关键功能的实现,从而加快开发速度。
名词解释:
Tuxedo:这是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主Novell公司,1996年BEA公司收购到旗下。经过十多年的不断更新和完善,Tuxedo已经成为交易中间件领域的代表产品之一。
CICS:Customer Information Control System(客户信息控制系统)的缩写。