JavaEE 7技术一览

jopen 10年前

JavaEE 体系结构非常膨大,从javaEE 5到现在的javaEE 7,新特性层出不穷。如果把一些偏门技术算进去,如一些基于JVM平台的Grails、Scala,主流SSH框架,谷歌的GWT,BPM工作流的 JBPM、Activiti,Vaadin,OSGI,Apache组织一大堆协议组件和库,各种开源模版技术,各种搜索引擎,各种规则引擎等等,没有你 想不到的,只有你不知道的。尽管如此,JavaEE足以解决企业开发的所有问题。

JavaEE 7提供了一个完整、全面、集成的堆栈来帮助你构建企业和Web应用程序。

JavaEE容器

主要就是JSF(JavaServer Faces)和EJB(Enterprise Java Bean)两大部分,JSF依赖于EJB,并且是重量级的,JSF使用了一大堆组件控制页面,跟Struts2的标签差不多;EJB目前做得不错,相比 Spring,EJB完全不需要作任何配置,内部包含JPA规范,可以和Hibernate无缝接入,但是学习曲线依然很大,并且对服务器有要求,用 tomcat做服务器还需要和JBoss搭配,新手学习可以使用Glassfish。

JavaEE 7技术一览

WEB容器

这部分内容比较多,JavaEE 7新添加的为下图棕黄色的部分,即WebSocket、Concurrency Utilities、Batch、JSON-P,新添加部分主要是为HTML5提供更好的伸缩性,这些Spring都有,不知是否是借鉴Spring的部 分功能。技术虽然很多,其实都有JSR白皮书规约的,有些已经有最终定稿,有些还处于草案和不断修改阶段(其实也没有最终定稿,而是处于维护阶段)。

JavaEE 7技术一览

下面说说一些常见的概念术语:

JWS:即Java Web Service,指与webservice相关的JavaEE技术部分,webservice是一种基于XML的独立的、跨平台的、互操作的应用程 序,XML又包含XSD、DTD、XPath等相关技术,这个撇开不说。webservice平台元素主要有SOAP(简易对象访问协议)、UDDI(通 用描述、发现及整理)、WSDL(WS描述语言)。

JAX:即Java Xml,类似地JAXB(Java Xml Binding)

目前JWS主要有:

  1. JAX-WS 全称JavaTM API forXML-Based Web Services 又叫JAX-RPC(远程调用),顾名思义就是基于Web Services
  2. JAX-RS 全称JavaTM API forRESTful Web Services 即使用REST风格
  3. JAXB
  4. JAXR
  5. SAAJ
  6. STAX

网上说关于JAX-WS与JAX-RS有这么说的: 两者是不同风格的SOA架构。前者以动词为中心,指定的是每次执行函数。而后者以名词为中心,每次执行的时候指的是资源。

感觉这个说法比较靠谱,JAX-WS是面向消息的,每次请求的时候指定了请求的方法。JAX-RS是面向资源的。后则将网络上的东西当做一种资源,每次请求都是对该资源进行操作,比如对资源的增删查改。

关于REST风格,在JAX-RS之前就已经出现,最早的出现的是Restlet、RestEasy框架,后来是Jersey,并且现在Oracle的 Glassfish使用的就是Jersey,相对来说Restlet功能齐全、组件膨大,页面和模版技术丰富,由于出现比较早,导致Restlet发展了 自己的一套MVC技术,Jersey也是一套JAX-RS产品,内部提供了好几套容器和服务器,大致有grizzly2、JDK-http、 simple-http、Jetty这几种。Jersey的MVC和Spring MVC有点类似(如其说是类似,简直就是一模一样),只是只有Jsp和Freemarker两种视图技术。

CDI:即Contexts Dependency Injection,和Spring的IOC差不多的东西,就是可以在组件中通过注解注入上下文、请求和响应等。

JTA:即Java Transaction API,使用过Hibernate和EJB的应该知道,就是事务处理,JTA依赖于所处的容器,如果不是分布式开发的话,我们一般使用本地事务,即是数据库本身的事务处理。

JPA:即Java Persistence API,就是最常用的持久化技术,原本属于EJB中的部分,EJB3.0之后分离出来,作为一个独立的规范。作为一种ORM技术,JPA提供了基本的统一 标准,现在JPA的草案处于维护阶段,对应的Hibernate框架的某些版本也处于Final版本。

JMS:即Java Message Service,和JDBC类似,提供了一个统一的API供其他厂商实现,主要用于客户机信息的交互,JMS主要有点到点和订阅/发布两种方式。

另外,像Java Mail、JSTL、JSP等这些再熟悉不过的就不说了。

下面列出一些常用的技术缩写:

EJB:  Enterprise  JavaBeans  企业JavaBean组件  
IDL:    Interface  Definition  Language  接口定义语言  
J2EE  CA:J2EE Connector Architecture J2EE 连接器架构
JAAS  :   The Java Authentication and Authorization Service  java认证授权服务
JACC: Java Authorization Contract with the Container??Java容器授权合约
JATMI:Java Application-to-Transaction Monitor Interface?Java 应用-事务监控接口
JBI   :   Java Business Integration Java业务集成
JCA   :  J2EE Connector Architecture Java连接器架构
JCP   :  Java Community Process Java组织
JDBC : Java Database Connectivity
JDO   :Java Data Objects
JDK:?Java Development Kit
JEMS : JBoss Enterprise Middleware Suite Jboss企业中间件
JMS :   Java Messaging Service Java消息服务
JMX   :Java Management extensions Java管理扩展
JNDI  : Java Naming and Directory Interface Java命名与目录借口服务
JPDA:  Java Platform Debugger Architecture??Java平台调试器架构
JRMP:Java Remote Message Protocol
JSP:   Java Server Page
JSTL: Java Standard Tag Library Java 标准标签库
JTS:   Java  Transaction  Service  Java事务服务
JTA :    Java Transaction API Java事务API
JVM  :  Java Virtual Machine Java虚拟机
MVC:   Model-View-Control
NIC:   Network Interface Card
O/R:   Object-Relational
OTS:   Object Transactional Services
PKI:   Public Key Infrastructure
POJO:  Plain Old Java Object
RMI:   Remote  Method  Invocation  远程方法调用 

RMI/IIOP:RMI protocol over IIOP

EJB分为三种:  
Session  Bean(会话BEAN)  
Entity  Bean(实体BEAN)  
Message  Driver  Bean(消息驱动BEAN)  

Session  Bean分为两种:  
Stateless  Session  Bean(无状态会话Bean)  
Statefull  Session  Bean(有状态会话Bean)  

Entity  Bean分为两种:  
CMP:  Container  Manager  Persistence(容器管理持久性)
BMP:  Bean  Manager  Persistence(Bean管理持久性) 

其他缩写名词:  
BPEL  :   Business Process Execution Language 业务流程执行语言
BPM   :   Business Process Management 业务流程管理
DAO   :  Database  Access  Object  数据库访问对象  
DOM  :   Document Object Model  文档对象模型
DTD :     Document Type Definition  文档类型定义
DTO   :  Data  Transport  Object  数据传输对象  
ESB :     EnterpriseService Bus 企业服务总线
POJO :  Proterozoic  Java  Object  Java原生对象  
SAAJ:   SOAP with Attachments API for JavaTM  Java 的带附件的SOAP API
SAX :    Simple API for XML Parsing XML解析处理简单API
SAML:    Security Assertions markup Language
SGML  :  Standard Generalized Markup Language  SAML(Security Assertion Markup Language ):安全断言标记语言
SLA:      Service Level Agreement服务级别协议
SNMP:    Simple Network Management Protocol:简单网络管理协议
SOA :    Service Oriented Architecture
SOAP:    Simple Object Access Protocol
SPENGO:Simple and Protected GSS-API Negotiation Mechanism 简单和受保护的GSS-API协商机制
SPI:     * *Service Provider Interface ):服务提供模块接口
SSL:     Secure Socket Layer):安全套接字层
SSO:     Single Sign-on):单点登录
SSPI:    Security Service Provider Interface):安全服务提供模块接口
StAX:    Streaming API for XML):XML 的流化API
UDDI:    Universal Description,Discovery,and Integration
VO   :    Value  Object  值对象  
WFMS:  workflow management system
WSDL:   Web Service Description Language
WSEE:  *Web Services Enterprise Edition
WSRP:  *OASIS Web Service for Remote Portlets
XA:      * *Extended Architecture 扩展架构
XACML:  XML Access Control Markup Language ):XML 访问控制标记语言
XSLT:   XML Stylesheet Language for Transformations

说明

严格来说,Java EE还有EJB容器和客户端容器。其中,EJB容器没有Servlet,客户端容器(Application Client Container)没有Servlet和持久化。