Java基础之13种核心规范

十三个规范其实就是十三个API文档,我们可能每天都在使用,但是不知道它是什么。

【1】JDBC(Java Database Connectivity)

用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

跟微软的ODBC很像,应该说是ODBC和ADO的结合,创建连接和发送SQL只用JDBC一个就行了,而ODBC只是创建一个连接,还需要用ADO来进行数据操作。ODBC把简单功能跟高级功能放到了一起,相对来说比较难学,而JDBC尽量保证简单功能的简便性,同时又可以在需要的时候使用高级功能。

JDBC是Java应用程序与各种不同数据库之间进行对话的方法的机制。简单地说,它做了三件事:与数据库建立连接–发送操作数据库的语句–处理结果。

【2】JNDI(Java Name and Directory Interface)

Java命名和目录接口,提供了一种统一的方式可以在网络上查找和访问服务,通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必需的信息。

JNDI是一组在Java应用中访问命名和目录服务的API。(命名服务将名称和对象联系起来,我们即可用名称访问对象。JNDI允许把名称同Java对象或资源关联起来,建立逻辑关联,而不必知道对象或资源的物理ID。)

个人理解: JNDI是为了对高级网络应用开发中使用的目录基础结构进行访问。这个目录其实是一个特殊的数据库,提供了对存储数据的快速访问,不象传统的目录服务访问方式那样必须提供不同的API接口去访问不同的目录服务(如:LDAP,NIS,ADS等),它统一了不同类型目录访问的接口。JDNI与JDBC都构建在抽象层上。

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

【3】EJB(Enterprise JavaBean)

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。包括四种对象类型:无状态会话bean(提供独立服务),有状态会话bean(提供会话交互),实体bean(持久性数据在内存中的体现,服务器崩溃后可恢复),消息驱动bean。

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

关于实体Bean,我感觉很像三层里面的DAL+Entity。只不过,在这里,Bean可以由容器实现,也可以由Bean自己实现。由容器实现,在使用过程中,感觉很像为某个空间设置数据源,只需要通过自己选择一下,语句就可以出来。而有Bean自己控制的Bean,感觉就很像三层里面的DAL+Entiry了。

会话Bean,可以作为三层架构中的业务逻辑层出现。而消息驱动Bean,更多的是用在了JMS(Java massage Service)中。

【4】RMI(Remote Method Invoke)

远程方法调用,能够让在某个java虚拟机上的对象调用本地对象一样的调用另一个java虚拟机中高的对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。

个人理解:RMI是非常重要的底层技术,是分布式的基础所在,刚刚提到的EJB就是建立在RMI的基础之上的。相比Web Service这样重量级的组件来说,RMI比较简单,更适合一些小型应用的使用。

【5】Java IDL/CORBA

Java接口定义语言/公用对象请求代理程序体系结构在JavaIDL的支持下,开发人员可以将Java和CORBA集成在一起。

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

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

【6】JSP(Java Server Pages)

JSP页面=HTML+Java,其根本是一个简化的Servlet设计。 服务器在页面被客户端请求后,对这些Java代码进行处理,然后将执行结果连同原HTML代码生成的新HTML页面返回给客户端浏览器 。

JSP跟ASP很像,ASP是在HTML的基础上加入了.Net代码,而JSP是在HTML的基础上加入了Java代码,它们都是动态网页,而JSP最大的优势就是跨平台,不但可以在Windows平台运行,还可以在Linux或者其他操作系统上运行。

【7】Java Servlet

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

Servlet是位 于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

【8】XML(Extensible Markup Language)

XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平 台独立性的解决方案。

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

【9】JMS(Java Message Service)

JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

参考博文:你所用过的那些消息中间件

【10】JTA(Java Transaction Architecture)

Java事务API。允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性。

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

【11】JTS(Java Transaction Service)

组件事务监视器,TPM 是一个程序,它代表应用程序协调分布式事务的执行。TPM 与数据库出现的时间长短差不多。在 60 年代后期,IBM 首先开发了 CICS,至今人们仍在使用。经典的(或者说 程序化)TPM 管理被程序化定义为针对事务性资源(比如数据库)的操作序列的事务。

随着分布式对象协议,如 CORBA、DCOM 和 RMI 的出现,人们希望看到事务更面向对象的前景。将事务性语义告知面向对象的组件要求对 TPM 模型进行扩展 ― 在这个模型中事务是按照事务性对象的调用方法定义的。JTS 只是一个组件事务监视器(有时也称为 对象事务监视器(object transaction monitor)),或称为 CTM。

JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTSspecification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

【12】JavaMail

JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。

参考博文:SpringBoot实现邮件发送

【13】JAF(JavaBeans Activation Framework)

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

JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF。

总结:

J2EE的基石是EJB,它是Java中的服务器端组件标准。

13个规范解决了背景中提到的问题,好比全世界制造轴承的标准是一样的,只有遵循标准自己生产的轴承才能被全世界使用。那么这些规范之间的关系是什么样的呢,它们到底怎么运转呢?

让我来看下边这张图:

在这里插入图片描述

参考博文:Java的十三中规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值