什么是J2EE?

在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了.

J2EE就是基于JAVA技术的一系列标准.

J2EE是Java2平台企业版(Java 2Platform Enterprise Edition),核心是一组技术规范与指南,其中所包含的各类组件,服务架构和技术层次,都有共同的标准及规格,让各种依云J2EE架构的不同平台之间,存在良好的兼容性.

J2EE的13种规范是什么?

1.JDBC(JavaDatabase Connectivity)

JDBC是以统一方式访问数据库的API.

它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序等等,只需要用JDBC API写一个程序就够了,它可以向相应数据库发送SQL调用.JDBC是Java应用程序与各种不同数据库之间进行对话的方法的机制.简单地说,它做了三件事:与数据库建立连接--发送操作数据库的语句--处理结果.

2.JNDI(JavaName and Directory Interface)

JNDI是一组在Java应用中访问命名和目录服务的API.

(命名服务将名称和对象联系起来,我们即可用名称访问对象.JNDI允许把名称同Java对象或资源关联起来,建立逻辑关联,而不必知道对象或资源的物理ID.)JNDI为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口,可访问的目录及服务如下表:

利用JNDI的命名与服务功能可满足企业级API对命名与服务的访问,诸如EJB,JMS,JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务.

JNDI和JDBC类似,都是构建在抽象层上.因为:

它提供了标准的独立于命名系统的API,这些API构建在命名系统之上.这一层有助于将应用与实际数据源分离,因此不管是访问的LDAP,RMI还是DNS.也就是说,JNDI独立于目录服务的具体实现,只要有目录的服务提供接口或驱动,就可以使用目录.

3.EJB(EnterpriseJavaBean)

J2EE将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能只是负责发送调用请求和显示处理结果。

在J2EE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB组件。其实就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

4.RMI(Remote MethodInvoke)

是一组用户开发分布式应用程序的API.

这一协议调用远程对象上的方法使用了序列化的方式在客户端和服务器之间传递数据,使得原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,即RMI机制实现了程序组件在不同操作系统之间的通信.它是一种被EJB使用的更底层的协议.

RMI/JNI: RMI可利用标准Java本机方法接口与现有的和原有的系统相连接

RMI/JDBC: RMI利用标准JDBC包与现有的关系数据库连接

这就实现了与非Java语言的现有服务器进行通信.

5.JavaIDL/CORBA(Common Object Request BrokerArchitecture)

Java接口定义语言/公用对象请求代理程序体系结构

在JavaIDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将新的应用和旧的系统相集成。

CORBA是面向对象标准的第一步,有了这个标准,软件的实现与工作环境对用户和开发者不再重要,可以把精力更多地放在本地系统的实现与优化上。

6.JSP(Java Server Pages)

JSP页面=HTML+Java,其根本是一个简化的Servlet设计.

服务器在页面被客户端请求后,对这些Java代码进行处理,然后将执行结果连同原HTML代码生成的新HTML页面返回给客户端浏览器.

7.Java Servlet

Servlet是一种小型的Java程序,扩展了Web服务器的功能,作为一种服务器的应用,当被请求时开始执行.Servlet提供的功能大多和JSP类似,不过,JSP通常是大多数的HTML代码中嵌入少量的Java代码,而Servlet全部由Java写成并生成HTML.

8.XML

XML是一个用来定义其它标记语言的语言,可用作数据共享。XML的发展和Java是相互独立的。不过,它和Java具有的相同目标就是跨平台。通过将Java与XML结合,我们可以得到一个完全与平台无关的解决方案。

9.JMS(JavaMessage Service)

它是一种与厂商无关的API,用来访问消息收发系统消息.它类似于JDBC.JDBC是可以用来访问不同关系数据库的API,而JMS则提供同样与厂商无关的访问消息收发服务的方法,这样就可以通过消息收发服务实现从一个JMS客户机向另一个JMS客户机发送消息,所需要的是厂商支持JMS.换句话说,JMS是Java平台上有关面向消息中间件的技术规范.

10.JTA(JavaTransaction API)

定义了一种标准API,应用程序由此可以访问各种事务监控.它允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据.JTA和JTS为J2EE 平台提供了分布式事务服务.

JTA事务比JDBC事务更强大,一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接.

11.JTS(JavaTransaction Service)

JTS是CORBA OTS事务监控器的一个基本实现。JTS指定了一个事务管理器的实现(Transaction Manager),这个管理器在一个高级别上支持JTA规范,并且在一个低级别上实现了OMGOTS规范的Java映射。一个JTS事务管理器为应用服务器、资源管理器、standalone应用和通信资源管理器提供事务服务。

12.JavaMail

用于访问邮件服务器的API,提供了一套邮件服务器的抽象类.

13.JAF(JavaBeansActivation Framework)

JAF是一个专用的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口.也就是说,JAF让Java程序知道怎么对一个数据源进行查看,编辑,打印等.

JavaMail利用JAF来处理MIME编码的邮件附件.

它们之间有什么关系?

以上介绍各个规范的同时也尽可能思考了各个规范之间的联系.最后用一张简单的图来表示各个规范之间的调用关系,纯属自己分析所得,还望高人指点…

Java基础之J2EE规范的更多相关文章

  1. Java基础84 javaBean规范

    1.javaBean的概述 1.javaBeam(咖啡豆)是一种开发规范,也可以说是一种技术.  2.JavaBean就是一个普通java类,只要符合以下规定才能称作为javaBean:        ...

  2. 《Java基础复习》—规范与基础

    参考书目<Java 编程思想>所以大家放心食用 一.注释规范以及API文档 1.注释 1.1三种注释方法 //注释内容 单行注释 /* 注释内容 */ 多行注释 /**注释内容*/ 文档注 ...

  3. JAVA基础语法:java编程规范和常用数据类型(转载)

    JAVA基础语法:java编程规范和常用数据类型 摘要 本文主要介绍了最基本的java程序规则,和常用数据类型,其中侧重说了数组的一些操作. 面向java编程 java是纯面向对象语言,所有的程序都要 ...

  4. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  5. java基础要点

    Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...

  6. 常见Java基础知识(较长)

    1.抽象:  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象, ...

  7. java基础面试题(转)

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...

  8. java基础知识4

    58.线程的基本概念.线程的基本状态以及状态之间的关系线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行.就绪.挂 ...

  9. Java学习之J2EE

    什么是J2EE  本文摘抄于其他博文. 什么是J2EE 一.准备篇 1 什么是J2EE?它和普通的Java有什么不同?答:J2EE全称为Java2 Platform Enterprise Editio ...

随机推荐

  1. 基于DDD的.NET开发框架ABP实例,多租户 (Sass)应用程序,采用.NET MVC, Angularjs, EntityFramework-介绍

    介绍 基于ABPZERO的多租户 (Sass)应用程序,采用ASP.NET MVC, Angularjs-介绍 ASP.NET Boilerplate作为应用程序框架. ASP.NET MVC和ASP ...

  2. Javascript—②函数

    新手Perfect教程之Javascript②教程-函数 前言:上回我们是从hello world开始的,本期将会讲"函数" 在学自定义函数之前,先了解几个已经定义好的函数: 1 ...

  3. jvm系列(七):jvm调优-工具篇

    16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗 ...

  4. kafka c++客户端编译

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是 ...

  5. loadrunner测试结果分析

    LR性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源 ...

  6. 利用IIS和Nginx实现负载均衡

    一直对Nginx反向代理和负载均衡感兴趣,今天在Windows下搭建了一个简单实例.步骤如下: 1.下载Nginx,我下载的是最新的1.11.10版本,地址http://nginx.org/downl ...

  7. 了解 : 多个Http请求设计方向 (batch)

    之前都是一个restful的请求,每次只能ajax一个资源,但是遇到比较多个请求时,都是用RPC来完成,但是却让后台开了许多接口,代码开始不整齐!当然roll back只能交给RPC来负责. 游览器没 ...

  8. 【Scala】Scala之Object

    一.前言 前面学习了Scala的Methods,接着学习Scala中的Object 二.Object Object在Scala有两种含义,在Java中,其代表一个类的实例,而在Scala中,其还是一个 ...

  9. MES设备支持快速完工

    1) 在菜单界面点击指定快速键 2) 初始界面 3) 一般流程 a) 扫描任务单号,即可完成工序加工 a1) 获取任务单工序的条件 按任务单卡号或配模的模具卡号搜索行状态为O的工序 a2) 工序完工操 ...

  10. WebGIS中自定义互联网地图局部注记的一种方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.    前言 实际项目中我们经常会遇到这样一种场景:地图底图可能是互 ...