JavaEE 7技術一覽
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。
WEB容器
這部分內容比較多,JavaEE 7新添加的為下圖棕黃色的部分,即WebSocket、Concurrency Utilities、Batch、JSON-P,新添加部分主要是為HTML5提供更好的伸縮性,這些Spring都有,不知是否是借鑒Spring的部 分功能。技術雖然很多,其實都有JSR白皮書規約的,有些已經有最終定稿,有些還處于草案和不斷修改階段(其實也沒有最終定稿,而是處于維護階段)。
下面說說一些常見的概念術語:
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主要有:
- JAX-WS 全稱JavaTM API forXML-Based Web Services 又叫JAX-RPC(遠程調用),顧名思義就是基于Web Services
- JAX-RS 全稱JavaTM API forRESTful Web Services 即使用REST風格
- JAXB
- JAXR
- SAAJ
- 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和持久化。