Sun Microsystems公司在1996年推出了一種新的純面向?qū)ο蟮木幊陶Z(yǔ)言,命名為Java。Java技術(shù)已成為20世紀(jì)軟件業(yè)界出現(xiàn)的最重要的技術(shù)之一,這種與平臺(tái)無(wú)關(guān)的編程語(yǔ)言的出現(xiàn),立刻掀起了軟件工業(yè)的一場(chǎng)革命,如今已是互聯(lián)網(wǎng)上最為流行的編程語(yǔ)言。Java是一種通過(guò)解釋方式來(lái)執(zhí)行的語(yǔ)言,其特點(diǎn)為:簡(jiǎn)單、面向?qū)ο蟆⒉灰蕾囉跈C(jī)器的結(jié)構(gòu),具有可移植性、魯棒性、安全性,并且提供了并發(fā)的機(jī)制以及與現(xiàn)代網(wǎng)絡(luò)技術(shù)的完美結(jié)合。目前,按照Sun Microsystems官方網(wǎng)站(http://java.sun.com)公布的標(biāo)準(zhǔn),根據(jù)不同的應(yīng)用領(lǐng)域?qū)ava語(yǔ)言被劃分為三大平臺(tái):
“ Java 2 Platform Micro Edition 簡(jiǎn)稱J2ME,Java 2平臺(tái)微型版。用于開(kāi)發(fā)掌上電腦、手機(jī)等移動(dòng)通信設(shè)備上使用的嵌入式系統(tǒng)。
“ Java 2 Platform Standard Edition 簡(jiǎn)稱J2SE,Java 2平臺(tái)標(biāo)準(zhǔn)版。主要用于開(kāi)發(fā)一般臺(tái)式機(jī)應(yīng)用程序。
“ Java 2 Platform Enterprise Edition 簡(jiǎn)稱J2EE,Java 2平臺(tái)企業(yè)版。主要用于快速設(shè)計(jì)、開(kāi)發(fā)、部署和管理企業(yè)級(jí)的軟件系統(tǒng)。
J2EE 是使用Java進(jìn)行企業(yè)開(kāi)發(fā)的一套擴(kuò)展規(guī)范,它提供基于組件設(shè)計(jì)、開(kāi)發(fā)、部署和管理企業(yè)應(yīng)用的解決方案。J2EE規(guī)范必須基于J2SE平臺(tái),它不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如“一次編譯、隨處運(yùn)行”的跨平臺(tái)特性、方便高效的數(shù)據(jù)庫(kù)提供無(wú)縫連接的技術(shù)JDBC(Java Data Base Connectivity,Java數(shù)據(jù)庫(kù)連接)、能夠在Internet應(yīng)用中確保數(shù)據(jù)完整性的安全模式以及支持多線程技術(shù)等,同時(shí)還針對(duì) Servlet/JSP、EJB、JMS、JTS/JTA、JCAT和XML等技術(shù)提供了全面的支持。J2EE已建立了一套能夠使企業(yè)級(jí)應(yīng)用開(kāi)發(fā)者縮短軟件產(chǎn)品開(kāi)發(fā)周期的標(biāo)準(zhǔn)架構(gòu)體系。
事實(shí)上,J2EE已成為企業(yè)級(jí)開(kāi)發(fā)的工業(yè)標(biāo)準(zhǔn)和主流平臺(tái)。J2EE為建立具有高可用性、高可擴(kuò)充性、易維護(hù)性的企業(yè)級(jí)系統(tǒng)提供了完美的機(jī)制和架構(gòu)模型。在 J2EE提供的統(tǒng)一開(kāi)發(fā)平臺(tái)下,可以大大降低開(kāi)發(fā)多層應(yīng)用的成本和復(fù)雜性,對(duì)于需要獲得高可用性、高安全性以及高可擴(kuò)充性軟件服務(wù)而又缺乏資金的企業(yè)來(lái)說(shuō),J2EE的中間層集成框架完全可以勝任并滿足其要求。同時(shí),J2EE自身具備的完備的目錄服務(wù)支持、高度的安全機(jī)制、高效的性能展現(xiàn)等眾多優(yōu)勢(shì)技術(shù),為企業(yè)平滑集成已有應(yīng)用系統(tǒng)發(fā)揮了巨大作用。
基于J2EE的企業(yè)級(jí)應(yīng)用系統(tǒng),不受任何特定操作系統(tǒng)、網(wǎng)絡(luò)環(huán)境、硬件平臺(tái)的束縛。應(yīng)用系統(tǒng)可開(kāi)發(fā)并部署在異構(gòu)的環(huán)境中,并能確保系統(tǒng)的可移植性。因此,只要符合J2EE規(guī)范的系統(tǒng)開(kāi)發(fā)一次即可部署到各種操作系統(tǒng)平臺(tái)和網(wǎng)絡(luò)平臺(tái)上。J2EE作為長(zhǎng)期的性能穩(wěn)定的企業(yè)級(jí)應(yīng)用系統(tǒng)平臺(tái),能保障7×24小時(shí)的不間斷服務(wù),以滿足企業(yè)客戶、合作伙伴的需要,是企業(yè)理想的運(yùn)行平臺(tái)也是Internet全球化發(fā)展的客觀必然要求。J2EE高伸縮性的特點(diǎn)在如今“隨需應(yīng)變”(IBM公司2002年底提出)電子商務(wù)戰(zhàn)略大行其道的時(shí)代,做出了卓越貢獻(xiàn)。J2EE采用負(fù)載平衡策略,使系統(tǒng)軟硬件資源利用率及性能表現(xiàn)最大化,消除了系統(tǒng)中的瓶頸。允許多臺(tái)服務(wù)器集成部署,實(shí)現(xiàn)可高度伸縮的系統(tǒng),在保存企業(yè)現(xiàn)有IT資產(chǎn)減少重復(fù)性投入的同時(shí)也滿足了未來(lái)商業(yè)應(yīng)用的需要。
1.2.2 J2EE體系架構(gòu)概述
J2EE 使用多層的分布式架構(gòu)模型,模型由組件組成,應(yīng)用程序的邏輯根據(jù)功能劃分被封裝在各組件中。由于是采用分布式架構(gòu),J2EE應(yīng)用中的大量組件部署在不同的機(jī)器中,通常這些機(jī)器具有不同的物理地址。J2EE架構(gòu)一般分為4層:客戶層、Web應(yīng)用層、企業(yè)組件層(業(yè)務(wù)層)、企業(yè)信息系統(tǒng)層。如圖1-4所示描述了J2EE架構(gòu)中典型的多層應(yīng)用架構(gòu)模型。

J2EE架構(gòu)的多層應(yīng)用模型
一個(gè)J2EE客戶層軟件可以是基于Web的,也可以是基于Application(應(yīng)用)的。Web客戶端由Web應(yīng)用層的Web組件動(dòng)態(tài)生成Web頁(yè)面,主要是HTML文件和XML文件。客戶端用戶在使用J2EE服務(wù)時(shí),無(wú)需安裝多余軟件,只要計(jì)算機(jī)上裝有一個(gè)Web瀏覽器即可,如MS Internet Explorer、NetScape、Mozilla Firefox,等等。基于應(yīng)用程序的客戶端,可以為用戶展示比Web客戶端更為豐富的人性化的圖形界面,如Java AWT/Swing開(kāi)發(fā)的圖形用戶界面。Web客戶端通過(guò)Web應(yīng)用層中的JSP/Servlet進(jìn)行通信,而應(yīng)用程序客戶端則可以跳過(guò)Web組件層直接訪問(wèn)運(yùn)行在企業(yè)組件層的Enterprise JavaBeans。
Web 應(yīng)用組件層提供的服務(wù)主要依賴于JSP頁(yè)面或是Servlet。JSP和Servlet都是J2EE應(yīng)用技術(shù)中的重要組成部分。JSP頁(yè)面由HTML文件、Java程序片段和JSP標(biāo)簽構(gòu)成,以Servlet的方式執(zhí)行。Servlet是Web應(yīng)用開(kāi)發(fā)的基礎(chǔ)。它完全用Java語(yǔ)言開(kāi)發(fā),是Java平臺(tái)上的CGI技術(shù)。它運(yùn)行于服務(wù)器端的J2EE容器中,具有很高的效率,能夠動(dòng)態(tài)地加載,動(dòng)態(tài)地生成Web頁(yè)面。Servlet擅長(zhǎng)于流程控制和事務(wù)處理,提供的擴(kuò)展服務(wù)功能可為企業(yè)定制靈活的開(kāi)發(fā)策略。Web應(yīng)用層主流的服務(wù)器有:Tomcat、Resin等。
企業(yè)組件層中主要是負(fù)責(zé)處理企業(yè)的業(yè)務(wù)流,并且將相關(guān)的業(yè)務(wù)邏輯封裝在Enterprise JavaBeans中。這一層提供了EJB的開(kāi)發(fā)、部署和運(yùn)行時(shí)管理環(huán)境。每一個(gè)EJB都是一個(gè)可重用的組件。EJB架構(gòu)定義了3種Enterprise JavaBean類型:會(huì)話Bean、實(shí)體Bean和消息驅(qū)動(dòng)Bean。其中,會(huì)話Bean又分為有狀態(tài)會(huì)話Bean和無(wú)狀態(tài)會(huì)話Bean。實(shí)體Bean 可以進(jìn)行自行狀態(tài)管理,也可以交由EJB容器進(jìn)行管理,兩種方式都為了完成實(shí)體Bean的持久性。消息驅(qū)動(dòng)Bean始終處于無(wú)狀態(tài)。三種類型的 Enterprise JavaBean有著不同的生命周期。企業(yè)組件層采用的主流服務(wù)器有:Weblogic、JBoss、Sun Application Server、WebSphere,等等。
企業(yè)信息系統(tǒng)層的特點(diǎn)是有數(shù)據(jù)庫(kù)系統(tǒng)的支持。企業(yè)信息系統(tǒng)軟件主要包括企業(yè)內(nèi)傳統(tǒng)信息系統(tǒng)如財(cái)務(wù)系統(tǒng)、CRM系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)和ERP等。
1.2.3 J2EE主要技術(shù)
在J2EE平臺(tái)中,包括了眾多的技術(shù),以便對(duì)開(kāi)發(fā)者提供更為全面的支持。
“ Servlet技術(shù) Servlet是Web應(yīng)用開(kāi)發(fā)的基礎(chǔ)。它完全用Java語(yǔ)言開(kāi)發(fā),是Java平臺(tái)上的CGI技術(shù)。它運(yùn)行于服務(wù)器端的J2EE容器中,具有很高的效率,能夠動(dòng)態(tài)地加載,動(dòng)態(tài)地生成Web頁(yè)面。Servlet擅長(zhǎng)于流程控制和事務(wù)處理,提供的擴(kuò)展服務(wù)功能可為企業(yè)定制靈活的開(kāi)發(fā)策略。
“ JSP技術(shù) 其本質(zhì)仍是Servlet,只是兩者創(chuàng)建方式不同。JSP文件由HTML文件、Java程序片段和JSP標(biāo)簽構(gòu)成。JSP將首先通過(guò)分析器生成相應(yīng)的 Servlet源文件,然后再對(duì)此Servlet文件進(jìn)行編譯運(yùn)行。JSP與Servlet一樣,具有相當(dāng)高的運(yùn)行效率。
“ EJB技術(shù) Enterprise Java Bean簡(jiǎn)稱EJB,它運(yùn)行在EJB服務(wù)器上,是由客戶端調(diào)用的非可視化遠(yuǎn)程對(duì)象。EJB擁有一系列協(xié)議,允許自身被遠(yuǎn)程訪問(wèn)或在特定服務(wù)器上進(jìn)行安裝或部署。允許將服務(wù)安全性、事務(wù)行為、并發(fā)性(支持多個(gè)客戶端同時(shí)訪問(wèn)的情況)和持久性(其狀態(tài)的生命周期)的主要方面授權(quán)給 EJB 服務(wù)器上其所在的容器。EJB提供的事務(wù)機(jī)制非常周全,但事務(wù)機(jī)制帶來(lái)的缺點(diǎn)是性能的降低。EJB支持分部式應(yīng)用系統(tǒng)。在EJB中定義了三種不同類別的 Enterprise Bean:會(huì)話Bean、實(shí)體Bean、消息驅(qū)動(dòng)Bean。EJB的完整執(zhí)行過(guò)程為:客戶端通過(guò)JNDI檢索Home對(duì)象的引用,JNDI返回Home對(duì)象的引用,請(qǐng)求創(chuàng)建一個(gè)新的EJB對(duì)象,創(chuàng)建EJB對(duì)象,返回EJB對(duì)象,調(diào)用相關(guān)業(yè)務(wù)邏輯方法,調(diào)用Enterprise Bean。一般J2EE應(yīng)用服務(wù)器都是EJB服務(wù)器,比如:Weblogic、Jboss、Sun Application Server、WebSphere等。
“ JMS技術(shù) Java Message Service,Java消息服務(wù)。JMS是J2EE平臺(tái)的重要組成部分。它是一組標(biāo)準(zhǔn)Java應(yīng)用接口,可以在各種企業(yè)通信系統(tǒng)間使用,提供創(chuàng)建、發(fā)送、接收、讀取消息等服務(wù)。為確保Java應(yīng)用能夠和各種消息中間件進(jìn)行異步通信,JMS定義了一組公共的應(yīng)用程序接口和相應(yīng)語(yǔ)法來(lái)滿足開(kāi)發(fā)需求。通過(guò)使用統(tǒng)一的JMS接口集,開(kāi)發(fā)人員可以無(wú)須掌握消息產(chǎn)品的使用方法,就來(lái)編寫(xiě)和操縱各種消息中間件。JMS支持點(diǎn)對(duì)點(diǎn)、發(fā)布/訂閱式的異步消息通信機(jī)制,并能夠最大限度地提升消息應(yīng)用的可移植性。
“ JNDI技術(shù) Java Naming and Directory Interface ,簡(jiǎn)稱JNDI。J2EE應(yīng)用程序組件通常分布在不同物理地址的機(jī)器上,所以需要一種機(jī)制以方便客戶端使用者查找和引用J2EE組件及企業(yè)系統(tǒng)資源。在 J2EE體系中,使用JNDI技術(shù)定位各種對(duì)象,包括EJB對(duì)象、數(shù)據(jù)庫(kù)驅(qū)動(dòng)對(duì)象、JDBC數(shù)據(jù)源對(duì)象及消息連接對(duì)象等。JNDI函數(shù)庫(kù)為應(yīng)用程序提供了一個(gè)統(tǒng)一的接口來(lái)完成規(guī)范定義的目錄操作,如通過(guò)對(duì)象屬性來(lái)查找和定位該對(duì)象。