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应用程序组件 
J2EE应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:

  • 应用客户端程序和applets是客户层组件.
  • Java Servlet和JavaServer Pages(JSP)是web层组件.
  • Enterprise JavaBeans(EJB)是业务层组件.

客户层组件 
J2EE应用程序可以是基于web方式的,也可以是基于传统方式的.

web 层组件 
J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。

正如下图所示的客户层那样,web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。

业务层组件 
业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。

有三种企业级的bean: 会话(session) beans, 实体(entity) beans, 和 消息驱动(message-driven) beans. 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录. 当客户端程序中止或服务器关闭时, 就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息.

以上参考自:http://www.ibm.com/developerworks/cn/java/j2ee/  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产品提供者
应用组件提供者
应用集成商
应用配置商
系统管理员
工具提供商
虽然有这样的分工,但实际往往一个厂家就做了两三部分的事情,而在开发过程中,一个人也承当了两种角色任务。但是应该清楚,企业应用是一个复杂的,需要许多组织共同协同才能完成的任务。

参考:http://blog.csdn.net/chensheng913/article/details/27863

j2ee概览的更多相关文章

  1. J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件

    EJB (EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK).其称为Java 企业Bean,是 ...

  2. Activity之概览屏幕(Overview Screen)

    概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...

  3. Atitit 软件工程概览attilax总结

    Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...

  4. J2EE 项目读写分离

    先回答下 1.为啥要读写分离? 大家都知道最初开始,一个项目对应一个数据库,基本是一对一的,但是由于后来用户及数据还有访问的急剧增多, 系统在数据的读写上出现了瓶颈,为了让提高效率,想读和写不相互影响 ...

  5. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  6. 配置eclipse J2EE环境

    早已习惯使用eclipse做Java相关的开发,因为之前安装的是RCP版本,今天发现对于J2EE的开发,在perference中居然没有Axis2的支持,需要添加J2EE的支持插件,特在此说明安装方式 ...

  7. J2EE或MyEclipse简单配置以及第一个web页面

    首先打开你下载安装好的MyEclipse,配置你开发需要的环境. 大致分为3步:①配置编码:Window-->preferences-->General-->Workspace--& ...

  8. 滑动验证的设计与实现J2EE

    滑动验证的设计与实现J2EE 注:本博文为博主原创,转载请注明出处. 项目源码地址:https://github.com/zhangxy1035/Verify 本篇博文的主要目录如下: 一.项目简介二 ...

  9. iOS开发系列—Objective-C之基础概览

    概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...

随机推荐

  1. Shell工具:jsondiff.sh

    逻辑很简单,无非就是通过curl在不同的服务器上取得结果集,然后diff即可,不过这里有几点需要注意的地方:首先,JSON就一行,直接 diff会失去意义:其次,JSON中汉字会被编码,不利于查看:另 ...

  2. UML--核心元素之参与者Actor

    参与者(actor):在系统之外与系统交互的某人或某事物.例如,管理员,用户等等. 参与者位于边界之外,边界之内的都不叫参与者.用一个词来形容更准确,主角.也就是只有主动启动了这个业务的人,才是参与者 ...

  3. back_insert_iterator和iterator用起来不一样。

    先看代码: #include<iostream> #include<vector> #include<algorithm> #include<iterator ...

  4. CF 578A A Problem about Polyline

    题意: There is a polyline going through points (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - ( ...

  5. 【POJ3299】Humidex(简单的数学推导)

    公式题中已经给出,直接求解即可. #include <iostream> #include <cstdlib> #include <cstdio> #include ...

  6. thinkjs初试

    背景          什么是thinkjs?thinkjs是奇舞团开源的一款NodejsMVC框架,该框架底层基于Promise来实现,很好的解决了Nodejs里异步回调的问题.我为什么会使用thi ...

  7. JavaScript 基础二

    JavaScript 事件处理程序就是一组语句,在事件(如点击鼠标或移动鼠标等)发生时执行 ●当事件之间互相影响时,需要有个先后顺序,这时我们声明一个Bool值来做约束 浏览对象: window 对象 ...

  8. javascript 执行环境,变量对象,作用域链

    前言 这几天在看<javascript高级程序设计>,看到执行环境和作用域链的时候,就有些模糊了.书中还是讲的不够具体. 通过上网查资料,特来总结,以备回顾和修正. 要讲的依次为: EC( ...

  9. C#操作IE

    操作IE主要使用两个Com Dll: 1.Microsoft Internet Controls 2.Microsoft HTML Object Library 使用Microsoft Interne ...

  10. OCP-1Z0-051-题目解析-第6题

    6. Examine the structure of the SHIPMENTS table: name                    Null        Type PO_ID      ...