导读:看完了J2EE的视频,没有什么技术实践,现在就从理论上说明一下J2EE的13种规范,以及现在的自己对它的一个理解。可能会有偏差,但是,算是做为目前的一个记录。
一、13种规范
1.1、JDBC(Java Database Connectivity,java数据库链接)
JDBC是一组API,定义了用来访问数据源的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。JDBC对数据库的访问具有平台无关性。
JDBC API为访问不同的数据库提供了一种统一的途径,像ODBC一样,JDBC对开发者屏蔽了一些细节问题。JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
1.2、JNDI(Java Name and Directory Interface,java命名和目录接口)
JNDI是一个Java应用程序设计接口,它为我们提供了查找和访问各种命名和目录服务的通用、统一方式。JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置,便于部署。
有了JNDI,我们就不要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和密码是什么?”这些问题了。我们编写的程序不用关心对JDBC驱动的引用。我们只需要在J2EE容器中定义一个数据源,然后通过这个数据源访问后台数据库。
1.3、EJB(Enterprise JavaBean,企业级javabean)
1.3.1,概述
EJB不是一个具体的产品,而是一个Java服务器端组件开发的规范,软件厂商根据它来实现EJB服务器。
使用EJB——Java程序员可以将一些定义明确的程序块组合到一起,从而方便、快捷地建构分布式应用程序。–使用EJB可以使整个程序分块明确,并且EJB可以使用其它EJB或
JDBC等服务,从而增强了分布式应用程序的可扩展性和性能。
EJB规范在简化分布式应用程序开发复杂性方面做了大量的工作,所以EJB程序员不必太担心事务处理、多线程、资源管理等方面的问题,可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。EJB的使用增强了整个系统程序的可靠性、可管理性和可移植性。
1.3.2,EJB容器
EJB容器是EJB的运行环境。它提供规范中定义的接,使EJB类访问所需的服务。
容器厂商也可以在容器或服务器中提供额外服务的接口。它的责任包括:
1.3.3,EJB服务器
EJB服务器是管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性:优化的数据库访问接口,对其他服务:如CORBA服务的访问。一个EJB服务器必须提供支持对JNDI的名字服务和TS事务服务的可访问。
1.3.4,EJB会话
会话(session) bean:代表短暂的与客户的会话当客户结束执行时,会话bean及它的数据就消失了
实体(entity) bean:实体bean代表存储在数据库的表,如果客户结束程序或服务器关闭,潜在的服务方法会将数据存储。
消息驱动(message-driven) bean。
1.4、RMI(Remote Method Invoke,远程方法调用)
是一种被EJB使用的更底层的协议,正如其名字所表示的那样,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据。
1.5、Java CORBA(Common Object Request Broker Architecture)
是一个分布式对象体系结构,它独立于平台,也独立于语言。在这个体系结构中,一个对象可以被本机上的客户或远程客户通过方法激活来存取。客户(一个对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言。客户只要知道服务对象的逻辑地址和提供的接口。这种互操作性的关键是IDL(Interface Definition Language、接口定义语言),IDL说明对象接口中的方法,这些方法可以被其它对象(或应用)激活。
1.6、JSP(Java Server Pages,java服务端页面)
JSP是服务器端的脚本语言,是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。JSP(Java Server Pages)页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
特点:面向对象、跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。
应用:一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。
1.7、Java Servlet(java服务端小程序)
Servlets(Server + Applet):是一些运行于Web服务器端的Java小程序,用来扩展Web服务器的功能。Servlet是一种扩展Web服务器功能的技术,而且由于它是用Java编写的,所以能够访问整个Java API库,包括用于访问企业数据库的JDBC API。
Servlets用特定的Java解决方案替代了其它的Web服务器方编程模式(如:CGI、ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)。用来编写Servlets的Servlet API对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不像利用CGI程序等其它方式那样具有性能局限。Servlets也同样使用HTTP协议与客户端进行通讯,所以有时也称Sevlets为“HTTP Servlets“。
1.8、XML(Extensible Markup Language,可扩展性标记语言)
不多说,看【HTML/XML】系列博客
1.9、JMS(Java Message Service,java消息服务)
JMS是一种基于Java的技术,因此是平台无关的。它为消息服务定义了通用Java 语言接口,支持最常见的消息传递模型(发布/订阅和点到点)。通过对JMS(Java消息服务)API的访问可实现面向消息的通信。JMS通常用来实现异构系统之间的松散集成。
1.10、JTA(Java Transaction Architecture,java事务框架)
JTA允许应用程序执行分布式事务处理,在多个网络计算机资源上访问并且更新数据,极大地增强了数据访问能力。
1.11、JTS(Java Transaction Service,java事务服务)
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
1.12、JavaMail(java邮件)
为我们提供了电子邮件的开发接口。它可以方便的执行一些常用的邮件传输。JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。
1.13、JAF(JavaBeans Activation Framework,javabean活动框架)
JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF。
二、区分对比
2.1,RMI和CORBA
两者的关键差别在于语言环境,Java RMI是一个分布式对象计算的纯Java解决方案(如:在Java RMI中,对象的接口用Java定义,而不是用IDL)
其次:CORBA没有定义安全服务,而Java RMI继承了Java的安全性。
再者:CORBA有不同的实现,不同的独立软件开发商的不同实现均有独特性。这使得在不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台,而几乎所有平台都支持Java虚拟机。因此Java RMI具有更高的可移植性。如果客户对象和服务对象都基于Java虚拟机,那么Java RMI是分布对象计算的最好选择。
最后:IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势。
2.2,java Servlet和JSP
2.2.1,相似:
两者都是基于Java的技术,所以都继承了Java的所有特性:跨平台、多线程、OO 等都可以使用Java强大的API。
两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。
两者在J2EE体系结构中的工作层次相同:都负责与客户端的连接。
2.2.2,不同:
编程方式不同。Servlets是一些运行于Web服务器端的Java小程序,而JSP是脚本,编写起来更简单容易。
使用JSP的真正意义在于,可以将界面设计和业务逻辑设计分离。Servlet是java类,它能动态处理请求及响应。
Jsp页面是基于文档的,能像servlet一样执行。
三、总结
J2EE的视频看完了,在本篇博客中也将其常用的13种规范总结了一下,接下来就是实战性的练习了。理论离开了实践 ,就如同纸上谈兵,当时看视频做笔记做了一堆,现在看来不运用,过段时间也都给忘没了。