1.2 为什么需要Java EE
1.2.1 企业级应用特征
Java EE是为了满足企业级应用开发而推出的。大部分读者可能都开发过应用程序,例如老师布置的作业或一些小的工具软件,但是这些应用程序与企业级应用程序有着本质的区别。企业级应用并不是特指为企业开发的应用软件,而是泛指那些为大型组织部门创建的、为大量用户提供连续服务的应用程序。如网上电子银行就是一个典型的企业应用。与常见的应用程序相比,企业级应用一般具有以下特点。
(1)多用户。企业级应用通常需要服务大量用户群体,少则是一个单位或组织内的几十名员工,多则是数以亿计的社会人群。
(2)分布式。企业级应用程序通常不是运行在某个单独的PC上,而是通过局域网运行在一个组织内部,或通过Internet连接分布在世界各地的部门或用户。
(3)连续性。企业级应用通常需要24×7连续不停的运转,即使是短暂的服务中断也可能是无法接受的,例如铁路调度系统、电子商务网站等。
(4)多变性。社会信息瞬息万变,企业组织必须不断地改变业务规则来适应社会信息的高速变化,相应地,对应用程序也不断提出新的需求。企业级应用程序必须具备能力来及时适应需求的改变,同时又尽可能地减少资金的投入。
(5)可扩展性。在网络环境内,应用的潜在用户可能成百上千,企业级应用除了要考虑能够更加有效地利用企业不断增长的信息资源外,还要充分考虑用户群体的膨胀给应用带来的性能上的扩展需求。
(6)安全性。实现应用系统的正常操作和运转,对于企业的成功来说至关重要。但仅仅做到这一点还不够,还必须保证企业信息的安全和系统运行的可靠性。
(7)集成化。企业应用除了满足自身的需求外,还经常需要与其他信息系统进行交互对接。例如一个电子商务网站通常需要与物流信息系统和电子支付系统进行交互。
注:Java EE是专为解决企业级应用开发提出的,牢记企业应用的上述特性是深入理解和灵活运用Java EE开发技术的前提和基础。
1.2.2 企业级应用架构体系
应用程序的体系结构是指应用程序内部各组件间的组织方式。企业级应用程序的体系结构的设计经历了从两层结构到三层结构、再到多层结构的演变过程。
1.两层体系结构应用程序
如图1-1所示,两层体系结构应用程序分为客户层(Client)和服务器层(Server),因此又称为C/S模式。在两层体系结构中,客户层的客户端程序负责实现人机交互、应用逻辑、数据访问等职能;服务器层由数据库服务器来实现,唯一职能是提供数据服务。
图1-1 两层体系结构应用程序
这种体系结构应用程序有以下缺点。
(1)安全性低。客户端程序与数据库服务器直接连接,非法用户容易通过客户端程序侵入数据库,造成数据损失。
(2)部署困难。集中在客户端的应用逻辑导致客户端程序肥大,而且随着业务规则的不断变化,需要不断更新客户端程序,大大增加了程序部署工作量。
(3)耗费系统资源。每个客户端程序都要直接连到数据库服务器,使服务器为每个客户端建立连接而消耗大量宝贵的服务器资源,导致系统性能下降。
2.三层体系结构应用程序
为了解决两层体系结构应用程序带来的问题,软件开发领域又提出三层体系结构应用程序,在两层体系结构应用程序的客户层与服务器层之间又添加了一个第三层——应用服务器层。这样应用程序共分为客户层、应用服务器层和数据服务器层三个层次,如图1-2所示。与两层体系结构应用程序相比,三层体系结构应用程序的客户层功能大大减弱,只用来实现人机交互,原来由客户端实现的应用逻辑、数据访问职能都迁移到应用服务器层上来实现,因此客户层通常被称做“瘦客户层”。数据服务层仍旧仅提供数据信息服务。由于客户层应用程序通常是由一个通用的浏览器(Browser)程序来实现的,因此这种体系结构又被称做B/S模式或“瘦客户机”模式。应用服务器层是位于客户层与数据服务器层中间的一层,因此应用服务器被称做“中间件服务器”或“中间件”,应用服务器层又被称做“中间件服务器层”。
图1-2 三层体系结构应用程序
与两层体系结构的应用程序相比,三层体系结构的应用程序具有以下优点。
(1)安全性高。中间件服务器层隔离了客户端程序对数据服务器的直接访问,保护了数据信息的安全。
(2)易维护。由于业务逻辑在中间件服务器上,当业务规则变化后,客户端程序基本不做改动,只需要升级应用服务器层的程序即可。
(3)快速响应。通过中间件服务器层的负载均衡以及缓存数据能力,可以大大提高对客户端的响应速度。
(4)系统扩展灵活。基于三层分布体系的应用系统,可以通过在应用服务器部署新的程序组件来扩展系统规模;当系统性能降低时,可以在中间件服务器层部署更多的应用服务器来提升系统性能,缩短客户端的响应。
3.多层体系结构应用程序
可以将中间件服务器层按照程序应用逻辑进一步划分为若干个子层,这样就形成了多层体系结构的应用程序。多层体系结构应用程序与三层体系结构类似,这里不再赘述。在有些文献中也将三层以及三层以上体系结构应用程序统称为多层体系结构应用程序。
为了满足开发多层体系结构的企业级应用的需求,Sun公司在早期的J2SE基础上,针对企业级应用的各种需求提出了Java EE。