【文章內(nèi)容簡(jiǎn)介】
浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 4 第二章 相關(guān)理論與技術(shù) 本 系統(tǒng) 用 JAVA 技術(shù) 開(kāi)發(fā) , 開(kāi)發(fā)工具 是 eclipse, 涉及到 JAVA 多線程、 swing、HTTP 等 相關(guān) 技術(shù) , 本 章 將對(duì)上述 技術(shù) 進(jìn)行簡(jiǎn)要的闡述 。 JAVA 的 簡(jiǎn)介 Java 技術(shù)既是一種高級(jí)的面向?qū)ο蟮木幊陶Z(yǔ)言,也是一個(gè)平臺(tái)。 Java 技術(shù)基于 Java 虛擬機(jī)( Java virtual machine, JVM)的概念 —— 這是語(yǔ)言與底層軟件和硬件之間的一種轉(zhuǎn)換器。 Java 語(yǔ)言的所有實(shí)現(xiàn)都必須實(shí)現(xiàn) JVM,從而使 Java 程序可以在有 JVM 的任何系統(tǒng)上運(yùn)行 [6]。 Java 編程語(yǔ)言( Java programming language)與眾不同之處在于: Java 程序既是編譯型的( piled)(轉(zhuǎn)換為一種稱為 Java 字節(jié)碼的中間語(yǔ)言),又是解釋型的( interpreted)( JVM 對(duì)字節(jié)碼進(jìn)行解析和運(yùn)行)。編譯只進(jìn)行一次,而解釋在每次運(yùn)行程序時(shí)都會(huì)進(jìn)行。編譯后的字節(jié)碼采用一種針對(duì) JVM 優(yōu)化過(guò)的機(jī)器碼形式;解釋器是 JVM 的實(shí)現(xiàn)。 Java 平臺(tái)( Java platform) 是一種純軟件平臺(tái),它可以在各種基于硬件的平臺(tái)上運(yùn)行。它有三個(gè)版本(參見(jiàn)后面的 Java 平臺(tái)的多個(gè)版本 )。它由 JVM 和 Java 應(yīng)用程序編程接口( Java Application Programming Interface, API)組成。 Java API 是一個(gè)大型的現(xiàn)成軟件組件(類)集合,它可以簡(jiǎn)化 applet 和應(yīng)用程序的開(kāi)發(fā)和部署,包括健壯、安全且可互操作的企業(yè)應(yīng)用程序。它涵蓋從基本對(duì)象到連網(wǎng)和安全性,再到 XML 生成和 Web 服務(wù)的所有東西。 Java API 組織 成相關(guān)類和接口的庫(kù);庫(kù)也稱為包( package)。 除了 Java API 之外,每個(gè)完整的 Java 平臺(tái)實(shí)現(xiàn)還包含: ? 用來(lái)編譯、運(yùn)行、監(jiān)視、調(diào)試應(yīng)用程序以及建立應(yīng)用程序文檔的開(kāi)發(fā)工具。 ? 用來(lái)部署應(yīng)用程序的標(biāo)準(zhǔn)機(jī)制。 ? 用來(lái)創(chuàng)建復(fù)雜的圖形用戶界面( GUI)的用戶界面工具包。 ? 用來(lái)啟用數(shù)據(jù)庫(kù)訪問(wèn)和操作遠(yuǎn)程對(duì)象的集成庫(kù)。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 5 Java 技術(shù)是最初由 Sun Microsystems 公司開(kāi)發(fā)的。 Java Community Process( JCP,一個(gè)由全世界的 Java 開(kāi)發(fā)人員和獲得許可的人員組成的開(kāi)放性組織) 對(duì) Java 技術(shù)規(guī)范、參考實(shí)現(xiàn)和技術(shù)兼容性包進(jìn)行開(kāi)發(fā)和修訂。在 20xx 年 8 月, Sun Microsystems 宣布它打算開(kāi)放 Java 平臺(tái)的源碼,并開(kāi)始征詢對(duì)許可協(xié)議和管理方式的反饋 [7]。 Java 語(yǔ)言的主要好處是, Java 應(yīng)用程序可以跨硬件平臺(tái)和操作系統(tǒng)進(jìn)行移植 —— 這是因?yàn)槊總€(gè)平臺(tái)上安裝的 JVM 都可以理解同樣的字節(jié)碼。 Java 語(yǔ)言和平臺(tái)的可伸縮性非常強(qiáng)。在低端,現(xiàn)有的應(yīng)用程序可以很容易地適應(yīng)內(nèi)存資源有限的設(shè)備。這種語(yǔ)言是進(jìn)行服務(wù)器端 Web 編程的理想框架。因?yàn)樗辉O(shè)計(jì)為按照 一種安全的方式通過(guò)網(wǎng)絡(luò)運(yùn)行,在通過(guò)互聯(lián)網(wǎng)進(jìn)行操作時(shí),它提供了一定程度的安全性。在本質(zhì)上, Java 技術(shù)將用戶的計(jì)算能力從桌面擴(kuò)展到了 Web 資源。 Web 組件由稱為 Web 容器( Web container) 的運(yùn)行時(shí)平臺(tái)支持, Web 容器的服務(wù)包括請(qǐng)求分派、安全性、并發(fā)性、生命周期管理以及對(duì)命名、事務(wù)和電子郵件等 API 的訪問(wèn)。在高端, Java 應(yīng)用服務(wù)器( application server) 作為 Java 組件、 XML 和 Web 服務(wù)的 Web 容器,可以與數(shù)據(jù)庫(kù)進(jìn)行交互并提供動(dòng)態(tài)的 Web 內(nèi) 容;它們還為企業(yè)應(yīng)用程序提供應(yīng)用程序開(kāi)發(fā)環(huán)境,具有事務(wù)管理、安全性、集群、性能、可用性、連接性和可伸縮性等功能。 Java 平臺(tái)有三個(gè)版本,這使軟件開(kāi)發(fā)人員、服務(wù)提供商和設(shè)備生產(chǎn)商可以針對(duì)特定的市場(chǎng)進(jìn)行開(kāi)發(fā): (1) Java SE( Java Platform, Standard Edition) 。 Java SE 以前稱為 J2SE。它允許開(kāi)發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的 Java 應(yīng)用程序。Java SE 包含了支持 Java Web 服務(wù)開(kāi)發(fā)的類,并為 Java Platform, Enterprise Edition( Java EE)提供基礎(chǔ)。大多數(shù) Java 開(kāi)發(fā)人員使用 Java SE 5,也稱為 Java 或 “Tiger”( 20xx 年 6 月, Java SE 6 或 “Mustang” 發(fā)布了 beta 版。) Java EE( Java Platform, Enterprise Edition)。這個(gè)版本以前稱為 J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。 Java EE 是在 Java SE 的基礎(chǔ)上構(gòu)建的,它提供 Web 服務(wù)、組件模型、管理和通信 API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)( serviceoriented architecture, SOA)和 Web 應(yīng)用程序。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 6 (2) Java EE( Java Platform, Enterprise Edition)。這個(gè)版本以前稱為 J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。Java EE 是在 Java SE 的基礎(chǔ)上構(gòu)建的,它提供 Web 服務(wù)、組件模型、管理和通信 API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系 結(jié)構(gòu)( serviceoriented architecture,SOA)和 Web 應(yīng)用程序。 (3)Java ME( Java Platform, Micro Edition) 。這個(gè)版本以前稱為 J2ME。 Java ME 為在移動(dòng)設(shè)備和嵌入式設(shè)備(比如手機(jī)、 PDA、電視機(jī)頂盒和打印機(jī))上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境。 Java ME 包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的連網(wǎng)和離線應(yīng)用程序的豐富支持。基于 Java ME 規(guī)范的應(yīng)用程序只需編寫一次,就可以 用于許多設(shè)備,而且可以利用每個(gè)設(shè)備的本機(jī)功能 [8]。 本系統(tǒng)是基于 Java SE 開(kāi)發(fā)。 Swing 技術(shù)簡(jiǎn)介 Swing是一個(gè)用于開(kāi)發(fā) Java應(yīng)用程序用戶界面的開(kāi)發(fā)工具包。它以抽象窗口工具包( AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。 Swing開(kāi)發(fā)人員只用很少的代碼就可以利用 Swing豐富、靈活的功能和模塊化組件來(lái)創(chuàng)建優(yōu)雅的用戶界面。 Swing的體系結(jié)構(gòu) 如圖 圖 Swing的體系結(jié)構(gòu) Swing 的主要特性包括: Swing是由 100%純 Java實(shí)現(xiàn)的, Swing組件是用 Java實(shí)現(xiàn)的輕量級(jí)( lightweight)組件,沒(méi)有本地代碼,不依賴操作系統(tǒng)的支持,這是它與 AWT 組件的最大區(qū)別。由于 AWT 組件通過(guò)與具體平臺(tái)相關(guān)的對(duì)等類( Peer)實(shí)現(xiàn),因此, Swing 比 AWT浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 7 組件具有更強(qiáng)的實(shí)用性。 Swing 在不同的平臺(tái)上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其他特性。 Swing 采用了一種 MVC 的 設(shè) 計(jì) 范 式 , 即 “ 模型 視圖 控 制 器 ”( ModelViewController),其中,模型用來(lái)保存內(nèi)容,視圖用來(lái)顯示內(nèi)容,控制器用來(lái)控制用戶輸入。 Swing 采用可插入的外觀感覺(jué)( Pluggable Look and Feel, PLamp。F)。相對(duì)而言,在 AWT 組件中,由于控制組件外觀的對(duì)等類與具體平臺(tái)相關(guān),使得 AWT 組件總是只有與本機(jī)相關(guān)的外觀。而 Swing 使得程序在一個(gè)平臺(tái)上運(yùn)行時(shí)能夠有不同的外觀,用戶可以選擇自己習(xí)慣的外觀。 Swing是 AWT的擴(kuò)展,它提供了許多新的圖形界面組件。 Swing組件以 “J”開(kāi)頭,除了擁有與 AWT類似的按鈕( JButton)、標(biāo)簽( JLabel)、復(fù)選框( JCheckBox)、菜單( JMenu)等基本組件外,還增加了一個(gè)豐富的高層組件集合,如表格( JTable)、樹(shù)( JTree) [9]。如圖 : J C o m p o n e n tA b s t r a c t B u t t o nJ C o m b o B o xJ L a b e lJ L i s tJ M e n u B a rJ P a n e lJ P o n p u p M e n uJ S c r o l l B a rJ S c r o I I P a n eJ T e x t C o m p o n e n tJ B u t t o nJ M e n u I t e mJ T o g g l e B u t t o nJ C h e c k B o x M e n u I t e mJ M e n uJ R a d i o B u t t o n M e n u I t e mJ C h e c k B o xJ r a d i o B u t t o nJ E d i t o r P a n eJ T e x t A r e aJ T e x t F i e l dJ T e x t P a n eJ P a s s w o r d F i e l d 圖 Swing 組件 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 8 Swing 組件的簡(jiǎn)介 ( 1) MVC( ModelViewController)體系結(jié)構(gòu) 前面我們提到, Swing 勝過(guò) AWT 的主要優(yōu)勢(shì)在于 MVC 體系結(jié)構(gòu)的普遍使用。在一個(gè) MVC 用戶界面中,存在 3 個(gè)通信對(duì)象:模型、視圖和控件。模型是指定的邏輯表示法,視圖是模型的可視化表示法,而控件則指定了如何處理用戶輸入。當(dāng)模型發(fā)生改變時(shí),它會(huì)通知所有依賴它的視圖,視圖使用控件指定其相應(yīng)機(jī) 制。 為了簡(jiǎn)化組件的設(shè)計(jì)工作,在 Swing 組件中視圖和控件兩部分合為一體。每個(gè)組件都有一個(gè)相關(guān)的分離模型和它使用的界面(包括視圖和控件)。比如,按鈕JButton有一個(gè)存儲(chǔ)其狀態(tài)的分離模型 ButtonModel對(duì)象。組件的模型是自動(dòng)設(shè)置的,例如,一般都使用 JButton 而不是使用 ButtonModel 對(duì)象。另外,通過(guò) Model類的子類或通過(guò)實(shí)現(xiàn)適當(dāng)?shù)慕涌?,可以為組件建立自己的模型。用 setModel()方法把數(shù)據(jù)模型與組件聯(lián)系起來(lái)。 MVC 是現(xiàn)有的編程語(yǔ)言中制作圖形用戶界面的一種通用思想,其思路是把數(shù)據(jù)的 內(nèi)容本身和顯示方式分離開(kāi),這樣就使得數(shù)據(jù)的顯示更加靈活多樣。比如,某年級(jí)各個(gè)班級(jí)的學(xué)生人數(shù)是數(shù)據(jù)部分,而顯示方式可以是多種多樣的,既可以采用柱狀圖顯示,也可以采用餅圖顯示,還可以采用直接的數(shù)據(jù)輸出。因此在設(shè)計(jì)時(shí),考慮把數(shù)據(jù)和顯示方式分開(kāi),對(duì)于實(shí)現(xiàn)多種多樣的顯示是非常有幫助的。 ( 2)可存取性支持 所有的 Swing 組件都實(shí)現(xiàn)了 Accessible 接口,提供對(duì)可存取性的支持,使得輔助功能如屏幕閱讀器能夠十分方便地從 Swing 組件中得到信息。 ( 3)支持鍵盤操作 在 Swing 組件中,使用 JComponent 類的 registerKeyboardAction()方法,能使用戶通過(guò)鍵盤操作來(lái)替代鼠標(biāo)驅(qū)動(dòng) GUI 上 Swing 組件的相應(yīng)動(dòng)作。有些類還為鍵盤操作提供了更便利的方法,其實(shí)這就相當(dāng)于熱鍵,使得用戶可以只用鍵盤進(jìn)行操作。 ( 4)設(shè)置邊框 對(duì) Swing 組件可以設(shè)置一個(gè)或多個(gè)邊框。 Swing 中提供了各式各樣的邊框供用戶選用,也能建立組合邊框或自己設(shè)計(jì)邊框。一種空白邊框可以增大組件,同時(shí)協(xié)助布局管理器對(duì)容器中的組件進(jìn)行合理的布局。 Hibernate 的體系結(jié)構(gòu)如圖 所示。 浙江工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(論文) 9 A p p l i c a t i o nD a t a b a s eS e s s i o n F a c t o r yT r a n s a c t i o n F a c t o r yC o n n e c t i o n P r o v i d e rS e s s i o nT r a n s a c t i o nJ N D IJ D B CJ T AT r a n s a c t i o n O b j e c t sP e r s i s t e n t O b j e c t s 圖 Hibernate體系結(jié)構(gòu)圖 圖 : SessionFactory:針對(duì)單個(gè)數(shù)據(jù)庫(kù)映射關(guān)系經(jīng)過(guò)編譯后的內(nèi)在鏡像,是線程安全的,它是生成 Session的工廠。 Session:表示應(yīng)用程序與持久存儲(chǔ)層之間交互操作的一個(gè)單純種對(duì)象,此對(duì)象生存期很短。 其隱藏了 JDBC連接,也是 Transaction的工廠。 持久對(duì)象及集合:帶有持久化狀態(tài)的、具有業(yè)務(wù)功能的單線程對(duì)象, 此 對(duì)象生存期很短。這些對(duì)象可能