???????? 這篇文章主要介紹在J2EE范例中使用的縮寫詞和概念哑诊。J2EE(Java 2 Platform, Entreprise Edition)代表Java企業(yè)版平臺铁蹈。它使得模塊化的Java程序可以在服務(wù)器上部署粥诫。Java SE是一組Java核心庫十绑,Java應(yīng)用程序在其上得以執(zhí)行漱挎,而J2EE是基于Java SE的廉涕。
概念綜述
???????? 在我們深入J2EE之前,先看一下綜述:
???????? 多層式應(yīng)用(Multitier Application)——多層式應(yīng)用(或者多層式架構(gòu))分成多個邏輯部分曙砂,大多在多層服務(wù)器上實現(xiàn)头谜。例如,三層應(yīng)用模型:用戶和瀏覽器鸠澈,應(yīng)用服務(wù)器柱告,數(shù)據(jù)庫服務(wù)器。其中應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器就是分別在不同的服務(wù)器上來處理應(yīng)用的請求款侵。
???????? 多層式服務(wù)(Multitier Service)——以三層架構(gòu)模型的服務(wù)為例末荐,應(yīng)用服務(wù)器響應(yīng)用戶的請求。數(shù)據(jù)庫服務(wù)器響應(yīng)應(yīng)用服務(wù)器的查詢求情新锈。
???????? Java Bean——由一些包含私有屬性的Java類組成甲脏,對外提供get和set方法。從技術(shù)上講妹笆,這些類必須保證有一個不含參數(shù)的構(gòu)造器并且實現(xiàn)Serializable接口块请。
J2EE 的概念
???????? Java EE應(yīng)用程序模型——這個模型描述了一個實現(xiàn)服務(wù)的多層架構(gòu)∪“什么是服務(wù)”沒有明確的界限墩新。事實上,服務(wù)只是一個邏輯上的概念窟坐,它的對應(yīng)實體取決于應(yīng)用實現(xiàn)的概念海渊。例如,客戶端/服務(wù)器模型就是一種服務(wù)哲鸳。
???????? Java EE 服務(wù)——這是一個J2EE中三層架構(gòu)的應(yīng)用服務(wù)范例臣疑。它是由網(wǎng)頁層(服務(wù)JSP頁面)和事務(wù)層(管理企業(yè)的數(shù)據(jù)層)組成的。
???????? Java EE 組件——“組件”是指獨立的軟件單元徙菠,可以和其他的組件組合來建立一個應(yīng)用讯沈。
???????? Web組件(Web Component)——web端生成的頁面或者對用戶請求的返回。代表性的有: Java Servlets, JavaServer Faces 和 Java Server Pages.
???????? 小程序(Applet)——一個小型的Java應(yīng)用程序可以作為響應(yīng)的一部分返回給用戶婿奔,用戶可以在他們的瀏覽器上運行此程序缺狠。這種小型的程序是Javascript的競爭對手。
???????? 客戶端程序(Application Client)——例如萍摊,一個用Java寫的桌面應(yīng)用程序挤茄。
???????? EJB(Enterprise Java Beans)——見下文。
???????? Java EE 客戶端——這個概念中包含三個其他的概念:
???????? 網(wǎng)頁客戶端(Web Client)或小型客戶端(thin client)——以前(也不是非常久以前)冰木,客戶端的請求返回的網(wǎng)頁會包含腳本代碼驮樊,這些代碼會在應(yīng)用服務(wù)器上執(zhí)行了再將運行結(jié)果返回給客戶端。這就是EE客戶端片酝。比如囚衔,用戶可以查詢員工的信息,并且對不同的結(jié)果按照他們喜歡的方式排列〉裱兀現(xiàn)在练湿,大多數(shù)開發(fā)者都不是在網(wǎng)頁中使用腳本了,因為這不是個好習(xí)慣审轮。他們更喜歡使用MVC設(shè)計原則肥哎,即禁止在網(wǎng)頁中使用腳本。
???????? 小程序(Applet)
???????? 應(yīng)用客戶端(Application Client)
???????? Java EE 服務(wù)器通信(Java EE Server Communication)——這是指發(fā)生在小型客戶端和應(yīng)用客戶端之間在服務(wù)器上的通信疾渣。具有代表性的是篡诽,小型客戶端和小程序在Web層通信,但是應(yīng)用客戶端在EJB通信榴捡。
???????? 你覺得這不夠清晰是嗎杈女?你覺得這很麻煩是嗎?這就對了吊圾!這就是REST以及MVC設(shè)計原理現(xiàn)在在開發(fā)中流行的緣故达椰。
???????? EJB(企業(yè)級Java Beans,Enterprise Java Beans)——這是一個邏輯概念项乒,與傳統(tǒng)的Java Beans無關(guān)啰劲。它主要試圖從多重應(yīng)用的后端(也就是服務(wù)器端)來壓縮事務(wù)邏輯。其中一個它試圖解決的問題是確保數(shù)據(jù)庫中事務(wù)處理的完整性檀何。警告:EJB有多個版本蝇裤,并且3.0版本已經(jīng)從早期的版本分離出來。
???????? JavaBean Component——Java Bean 的同義詞频鉴,主要用在JSP范例中栓辜。
???????? Java EE容器(Java EE Container)——這是部署組裝Java EE組件的地方(也就是應(yīng)用程序服務(wù)器)。它定義了Web容器(包含servlets和JSP)砚殿,還定義了EJB容器(包含的企業(yè)級Java Bean)以及應(yīng)用客戶端容器(運行獨立的應(yīng)用程序)和在瀏覽器上運行的小程序容器啃憎。
???????? 部署描述符(Deployment Descriptor )——這是一個為打包好的應(yīng)用提供部署信息的XML文件,點擊查看更多信息似炎。
???????? SOAP(簡單對象訪問協(xié)議辛萍,Simple Object Access Protocol)——這是一個通過網(wǎng)絡(luò)提供的服務(wù)傳輸信息的協(xié)議。信息是通過XML構(gòu)建的羡藐,能夠通過多個傳輸交換層贩毕,多數(shù)情況下是HTTP。SOAP是JSON和REST-like服務(wù)的競爭對手仆嗦。
???????? WSLD(網(wǎng)絡(luò)服務(wù)描述語言辉阶,Web Service Description Language)——它用XML文件來描述了網(wǎng)絡(luò)服務(wù)(名字,地點,通信模式)谆甜。
???????? UDDI(通用描述垃僚、發(fā)現(xiàn)與集成服務(wù),Universal Description, Discovery and Integration)——一種ebXML規(guī)范规辱,可以在線發(fā)布有關(guān)產(chǎn)品和服務(wù)的信息谆棺。
???????? Java Servlet——是用Java寫的一個服務(wù)器端小程序,可以處理用戶的HTTP請求罕袋,返回結(jié)果改淑。
???????? JSP (JavaServer Page)——一種基于HTML文件(就是一個模板)處理之后能夠生成靜態(tài)內(nèi)容≡⊙叮可以包含腳本代碼的片段朵夏,以在最終生成的腳本靜態(tài)文件中生成。
???????? JSTL(JSP標準標簽庫榆纽,JavaServer Page Standard Tag Library)——一組可以模仿腳本代碼功能的用在JSP的標準標簽仰猖。例如,遍歷客戶端并顯示他們對應(yīng)的信息÷雍樱現(xiàn)在亮元,在JSP中,這樣的標簽已經(jīng)已經(jīng)取代了腳本代碼唠摹。一般用于生成需要填充信息的頁面爆捞。
???????? JSF (Java Server Face)——包含JSF標簽(類似于LSTL標簽)的JSP頁面。此外勾拉,JSF允許在頁面中定義導(dǎo)航模塊(類似于Spring web flow)煮甥,包括Facelets。
???????? Facelets——Facelets是JSF的MVC視圖部分藕赞。它的主要功能是利用提供的數(shù)據(jù)(例如客戶端列表)將模板轉(zhuǎn)換成HTML文件成肘。它也可以將生成的文件(例如HTML主體)提取出來一部分并到另一個模板中,相當于Sitemesh斧蜕。
???????? The Java API for XML-based Web Services (Java中用來創(chuàng)建基于XML的Web的API双霍,JAX-WS)——對于使用XML通信的Web服務(wù)來說至關(guān)重要。
???????? The Java API for XML Binding (序列化為XML的API批销,JAXB)——一種可以在JavaBeans和XML文件之間相互轉(zhuǎn)化的方式點擊查看更多信息洒闸。
???????? JTA (Java事務(wù)處理API,Java Transaction API) ——劃清數(shù)據(jù)庫中上行和下行的通信界限均芽。
???????? JMS(Java信息服務(wù)丘逸,Java Message Service)——這個API保證服務(wù)器和應(yīng)用在網(wǎng)絡(luò)上的通信可靠、異步掀宋。ActiveMQ實現(xiàn)了JMS深纲。
???????? JavaMail API——提供通過應(yīng)用程序發(fā)送郵件方式仲锄。
???????? JAXP(加工XML文件的API,Java API for XML Processing)——提供了處理XML文件的方式湃鹊。
???????? JAXR(提供XML注冊的API儒喊,Java API for XML Registries)——一個可以注冊包含了元數(shù)據(jù)的XML的API。
???????? JDBC(Java數(shù)據(jù)庫連接涛舍,Java Database Connectivity)——這個API可以使應(yīng)用程序直接通過SQL通信來訪問數(shù)據(jù)庫澄惊。
???????? JCA(J2EE連接器架構(gòu),Java EE Connector Architecture)——使應(yīng)用程序能和信息系統(tǒng)(通常是數(shù)據(jù)庫)通信富雅。點擊查看更多
???????? JPA(Java持久化API,Java Persistence API)——這是一個在數(shù)據(jù)庫中存儲對象的ORM(對象關(guān)系表肛搬,Object/relational mapping)定義没佑。點擊查看范例
???????? JNDI(Java命名和目錄接口)——一種能存儲和檢索資源或者通過名字查找信息的方式,點擊查看更多
???????? JAAS(Java鑒別與授權(quán)服務(wù)温赔,Java Authentication and Authorization Service)——識別并控制服務(wù)權(quán)限的一張方式蛤奢。
J2EE 6的概念
???????? 在J2EE6中,大量的配置可以在源代碼中執(zhí)行陶贼。
???????? JAX-RS——定義REST(含狀態(tài)傳輸)之類的服務(wù)的API啤贩。
???????? Managed Beans——一個可以執(zhí)行嵌入代碼的Java對象。在Sping框架中拜秧,這是一些添加了@Autowired注釋的對象痹屹。
???????? CDI(上下文和依賴注入,Contexts and Dependency Injection for Java EE)——CDI是Java EE整個下一代類型安全的依賴注入的事實上的API枉氮。在Sping框架中志衍,應(yīng)用程序可以設(shè)計應(yīng)用的上下文,控制反轉(zhuǎn)(IoC)和依賴注入功能(DI)聊替。
???????? Bean確認——通過設(shè)定好的規(guī)則判斷Java Beans的狀態(tài)是有效的楼肪。
???????? JACC(Java Authorization Contract for Containers)——在J2EE應(yīng)用服務(wù)器和特定的授權(quán)認證服務(wù)器之間定義的一個連接的協(xié)約。
???????? JASPIC(Java認證服務(wù)提供者接口惹悄,Java Authentication Service Provider Interface)——這是與JACC互補認證的SPI(也就是服務(wù)API春叫,Service API)。它定義了應(yīng)用程序如何通過傳統(tǒng)的認證服務(wù)泣港。
總體上說暂殖,J2EE和Spring框架慢慢的朝著一個相同的方向發(fā)展。