J2EE,在现在的企业应用开发中,这个词似乎已经成为了必不可少的口头禅了。前两天和"老板"聊天,谈到了J2EE,她不由的感慨道:前两三年,我们出去谈项目的时候,要
煞费苦心的劝说客户采用J2EE架构;可是现在呢,客户会主动跟我们说,"是采用J2EE的吗,不是可不行!"。J2EE的流行可见一斑了。下来呢,我想结合自己的一点学习体会,
引出一点J2EE的基本内容。
二
J2EE诞生的背景是什么?
Java 2平台企业版,也就是J2EE,定义了开发多层企业应用程序的标准。它的诞生并不是偶然的,它是在各种条件积累成熟之下的产物。
原因之一:java语言的巨大成功。1994年,java诞生,由于其语言的简单性和,"编写一次,任意运行"的优势,以及internet和intranet迅猛的增长,促使大量开发者和IT机构
在自己的项目中使用java。短短的几年,Java的风潮就席卷全球。
原因之二:c/s结构逐渐转变为多层体系结构。在带来巨大的灵活性后,也同时增加了创建、测试、配置、管理和维护应用组件的复杂性。J2EE平台的出现,正好降低了这些复
杂性。
原因之三:企业,公司纷纷需要参与Internet中来,各种业务都进入了网络。这些企业级应用的快速增长促使其需要一个强壮的、企业级的、以web为中心的应用结构来支撑。
终于,2000年,sun和它的合作者们(IBM等)联手为我们带来了J2EE。而现在用的最多的是J2EE 1.3版本。
三
那么,J2EE平台为企业应用带了什么好处呢?
首先,它在各种领域创建了使用于企业计算需要的一系列标准,如数据库链接、消息中间件、web组件、企业业务组件等等,这些标准构成了企业应用开发的全过程。
其次,J2EE基于开放标准,提供开发组件的标准平台,适用于不同的供应商,用户因此有了更多厂家的选择。
再次,J2EE缩短了产品投入市场时间。产品都是在现有的基础部件之上开发,从而摆脱了自己开发中间件的困扰而专注于自己的业务应用。
在一些资料上也提到了其他的一些好处,但我觉得以上三点应该是J2EE给这个世界带来的最根本的好处了。
四
J2EE到底是什么?
说到底,它是Sun公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。
J2EE架构包括以下四个层次:
(一) 用户层(Client Tier)
也就是客户端层。用来于用户交互,并把来自系统的信息显示给用户。包括html用户,applet和java application等。
(二) web层
web层由web服务器和web组件构成。J2EE web组件包括JSP和Servlet。该层主要用来处理客户请求,调用相应的逻辑模块,并把结果以动态网页的形式返回到客户端。
(三) 业务层 (Business Tier)
这一层处理应用的核心业务逻辑。业务组件通常被实现为运行在EJB容器内的EJB组件,EJB容器提供组件生命周期、管理持久性、事务和资源分配等。所以这一层也叫EJB层或
应用层。
四) 企业信息系统层 (EIS Tier)
处理企业系统软件,包括企业基础系统、数据库系统和其他遗留系统。EIS层是J2EE应用和非J2EE应用或遗产系统集成的连接点。
其中,业务层和Web层组成了三层J2EE应用的中间层。
五
为实现企业级分布式应用,J2EE定义了丰富的技术标准,包括API。这些API是J2EE每一个产品都必须提供给应用组件的。这些技术涵盖数据库访问、分布式通信、安全等等。
(一) 组件技术:J2EE的核心思想是基于组件和容器的应用。组件可以重用,共享,分布的。
(二) Servlet:用来生成动态页面或接受用户请求产生相应操作。例如作为MVC模式的controler。
(三) JSP:为用户编写动态页面提供了一种简便强大的工具,实际上是通过容器产生相应的Servlet来运行。
(四) EJB:这是J2EE的核心技术,但是并不是说J2EE就是EJB。EJB包括Session Bean,Entity Bean ,Message driven Bean三种形式。其中,Session Bean包括了有状态和无状态两种,它一般封装了具体的业务逻辑;Entity Bean分为CMP和BMP,它是持久数据的对象表示,与数据库中的表直接对应,具体开发中,会话bean和实体bean往往需要结合起来使用;至于Message driven Bean称作为消息驱动Bean,实际上是JMS应用的封装组件。
(五) JDBC:是JAVA语言提供的独立于特定数据库管理系统的开发接口。它提供了一个通用的访问SQL数据库和存储结构的机制,支持基本SQL功能。它包括四种类型的驱动程序:1)通过jdbc-odbc桥访问;2)通过数据库网络库来访问;3)通过中间件来访问;4)纯JAVA驱动,直接访问。其中,1,2,4属于JDBC两层应用,第3种是JDBC三层应用,需要在应用服务器中配置连接池和数据源。
(六) RMI/IIOP:远程方法调用以及Internet Inter-ORB协议。
(七) Java IDL:调用CORBA服务的API。将CORBA融入java平台来提供交互操作的服务。
(八) JNDI:java命名和目录接口,在企业命名和目录服务中访问数据的API。
(九) JMS:java消息服务,可以采用队列和主题两种消息发送方式达到消息的异步传输。
(十) Java 安全:安全是J2EE架构重要的一部分,它通过JAAS(java验证于授权服务),JCE(java安全扩展),JSSE(java安全套接字扩展)几部分来实现。
(十一) JTA:这是一组事务管理的API。程序可以自己来开始、提交、回滚事务,也可以是容器和事务管理器交互。
(十二) Java Mail:发送和接受电子邮件的API。
(十三) 其他,J2EE1.3还包括了对J2EE连接器结构,JAXP(XML解析的Java API)的支持。
总之,J2EE是一个庞大的,分支众多的技术联合体。同时又是一个不断接受新思想,产生新问题的系统,真让人头疼不已^_^。
六
最后,J2EE的提出者们认为,在企业应用的开发和配置的生命周期中,J2EE平台使用一系列的角色来概念化于各种工作流相关的任务。具体角色如下:
J2EE产品提供者
应用组件提供者
应用集成商
应用配置商
系统管理员
工具提供商
虽然有这样的分工,但实际往往一个厂家就做了两三部分的事情,而在开发过程中,一个人也承当了两种角色任务。但是应该清楚,企业应用是一个复杂的,需要许多组织共同协同才能完成的任务。
七
写这篇文章比较痛苦,没有太多自己的观点和实践,只是在总结和罗列别人规定好的东西。还好,在一些能够发挥的地方,尽量加了点自己的经验认识。这只是一个开头,关于J2EE这个大的体系中,有不少东西需要继续学习和探讨,下面的系列将逐步的展开讨论学习。