[java] J2EE 之 13 个规范总结
J2EE( Java 2 Platform Enterprise Edition )
在说 13 个规范之前,我们需要先来谈谈 J2EE ,它产生的背景是什么,解决了什么问题,这样清楚之后,再来谈 13 个规范,不至于觉得太突兀.
产生的背景:
在企业级应用中,都有一些通用企业需求模块,比如数据库连接,邮件服务,事务处理等等.
既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,也就是我们说的中间件.这样做的好处,就是可以解决重复开发,开发周期长和代码可靠性差等问题.
但是,这个时候就有一个问题,我的公司有我自己的标准,你的公司有你独自的一套标准,那是不是两家公司的中间件不兼容的问题就出现了?这样当用户使用的时候,就没办法将它们组装在一起为自己服务了,对吧?
这个时候怎么办呢?你可以想想实际生活中,为什么插排买回来,插上就能用,为什么我知道空调要买特定的插排,而我买回来就能插上使用.因为有「标准」对吧?所以我们才不用管这个插排买回来能不能用的问题.制定好标准之后,大家都去遵守,然后统一生产,对用户来说也方便.
同样的道理和想法, J2EE 就诞生了. J2EE 就是基于 Java 技术的一系列标准.
既然是标准,那么它的核心就是:一组技术规范与指南,其中包含的各类组件,服务架构和技术层次都有共同的标准及规格,这样就能够让依循 J2EE 架构的不同平台之间,存在良好的兼容性,这样不就解决了上面那种问题了~
13 种规范
在理解 J2EE 之后,就应该有这样的认识:这 13 种规范,是我们应该去遵循的.问题就来了,我需要遵循哪儿些呢?接下来一个一个说(这个排名不分先后~)
1 , JDBC ( JavaDatabase Connectivity )
JDBC 是以统一方式访问数据库的 API .
它提供了独立于平台的数据库访问,也就是说,当我有了 JDBC API 的时候,就不必再为访问 Oracle 数据库专门写一个程序,为访问 Sybase 数据库又专门写一个程序等等,只需要用 JDBC API 写一个程序就够了,它可以向相应数据库发送 SQL 调用. JDBC 是 Java 应用程序与各种不同数据库之间进行对话的方法的机制.简单地说,它做了三件事:与数据库建立连接–发送操作数据库的语句–处理结果.
说到这里,有没有想起来 ODBC ?
如果想起来了,有没有想起来我写过一篇文章? [java]说说 JDBC ,再聊聊 ODBC
2 , JNDI ( JavaName and Directory Interface )
JNDI 是一组在 Java 应用中访问命名和目录服务的 API .
JNDI 为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口,利用 JNDI 的命名与服务功能可满足企业级 API 对命名与服务的访问,诸如 EJB , JMS , JDBC 2.0 以及 IIOP 上的 RMI 通过 JNDI 来使用 CORBA 的命名服务.
在这儿,想多说一点: JNDI 和 JDBC 类似,都是构建在抽象层上.因为它提供了标准的独立于命名系统的 API ,这些 API 构建在命名系统之上.这一层有助于将应用与实际数据源分离,因此不管是访问的 LDAP , RMI 还是 DNS .也就是说, JNDI 独立于目录服务的具体实现,只要有目录的服务提供接口或驱动,就可以使用目录.
3 , EJB ( Enterprise JavaBean )
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 结合,我们可以得到一个完全与平台无关的解决方案.
突然想起来,以前写过一篇博客,感兴趣可以看看:【XML】快速了解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 编码的邮件附件.
在学习过程中,找到了一篇文章,总结的非常棒(我这篇文章,几乎都是借鉴着写过来的),推荐大家看看,特别是最后一张图,感觉很形象:J2EE 的 13 个规范总结
感谢您的阅读~