已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
外文翻譯JAVA技術(shù)及SSH框架和JSP技術(shù)的介紹JAVA,是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,由當(dāng)時(shí)任職太陽(yáng)微系統(tǒng)的詹姆斯高斯林(JAMESGOSLING)等人于1990年代初開發(fā)。它最初被命名為OAK,目標(biāo)設(shè)置在家用電器等小型系統(tǒng)的編程語(yǔ)言,來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。由于這些智能化家電的市場(chǎng)需求沒有預(yù)期的高,SUN放棄了該項(xiàng)計(jì)劃。就在OAK幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,SUN看到了OAK在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了OAK,在1995年5月以“JAVA”的名稱正式發(fā)布了。JAVA伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,逐漸成為重要的網(wǎng)絡(luò)編程語(yǔ)言。JAVA編程語(yǔ)言的風(fēng)格十分接近C語(yǔ)言。繼承了C語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,JAVA舍棄了C語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(OPERATOROVERLOADING)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間。在JAVASE15版本中JAVA又引入了泛型編程(GENERICPROGRAMMING)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。JAVA不同于一般的編譯運(yùn)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成字節(jié)碼(BYTECODE),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),這同時(shí)也在一定程度上降低了JAVA程序的運(yùn)行效率。但在J2SE142發(fā)布后,JAVA的運(yùn)行速度有了大幅提升。與傳統(tǒng)程序不同SUN公司在推出JAVA之際就將其作為一種開放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的JAVA開發(fā)公司被要求所設(shè)計(jì)的JAVA軟件必須相互兼容?!癑AVA語(yǔ)言靠群體的力量而非公司的力量”是SUN公司的口號(hào)之一,并獲得了廣大軟件開發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。SUN公司對(duì)JAVA編程語(yǔ)言的解釋是JAVA編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。JAVA的歷史DUKE,JAVA語(yǔ)言的吉祥物語(yǔ)言最開始只是太陽(yáng)微系統(tǒng)(SUNMICROSYSTEMS)公司在1990年12月開始研究的一個(gè)內(nèi)部項(xiàng)目。太陽(yáng)微系統(tǒng)公司的一個(gè)叫做帕特里克諾頓的工程師被公司自己開發(fā)的C和C語(yǔ)言編譯器搞得焦頭爛額,因?yàn)槠渲械腁PI極其難用。帕特里克決定改用NEXT,同時(shí)他也獲得了研究公司的一個(gè)叫做“STEALTH計(jì)劃”的項(xiàng)目的機(jī)會(huì)。“STEALTH計(jì)劃”后來(lái)改名為“GREEN計(jì)劃”,詹姆斯高斯林和麥克舍林丹也加入了帕特里克的工作小組。他們和其他幾個(gè)工程師一起在加利福尼亞州門羅帕克市沙丘路的一個(gè)小工作室里面研究開發(fā)新技術(shù),瞄準(zhǔn)下一代智能家電(如微波爐)的程序設(shè)計(jì),太陽(yáng)公司預(yù)料未來(lái)科技將在家用電器領(lǐng)域大顯身手。團(tuán)隊(duì)最初考慮使用C語(yǔ)言,但是很多成員包括太陽(yáng)的首席科學(xué)家比爾喬伊,發(fā)現(xiàn)C和可用的API在某些方面存在很大問題。工作小組使用的是內(nèi)嵌類型平臺(tái),可以用的資源極其有限。很多成員發(fā)現(xiàn)C太復(fù)雜以至很多開發(fā)者經(jīng)常錯(cuò)誤使用。他們發(fā)現(xiàn)C缺少垃圾回收系統(tǒng),還有可移植的安全性、分布程序設(shè)計(jì)、和多運(yùn)行續(xù)功能。最后,他們想要一種易于移植到各種設(shè)備上的平臺(tái)。根據(jù)可用的資金,比爾喬伊決定開發(fā)一種集C語(yǔ)言和MESA語(yǔ)言大成的新語(yǔ)言,在一份報(bào)告上,喬伊把它叫做“未來(lái)”,他提議太陽(yáng)公司的工程師應(yīng)該在C的基礎(chǔ)上,開發(fā)一種面向?qū)ο蟮沫h(huán)境。最初,高斯林試圖修改和擴(kuò)展C的功能,他自己稱這種新語(yǔ)言為C,但是后來(lái)他放棄了。他將要?jiǎng)?chuàng)造出一種全新的語(yǔ)言,被他命名為“OAK”(橡樹),以他的辦公室外的橡樹命名。就像很多開發(fā)新技術(shù)的秘密工程一樣,工作小組沒日沒夜地工作到了1992年的夏天,他們能夠演示新平臺(tái)的一部分了,包括GREEN操作系統(tǒng),OAK的程序設(shè)計(jì)語(yǔ)言,類庫(kù)及其硬件。最初的嘗試是面向一種類PDA設(shè)備,被命名為STAR7,這種設(shè)備有鮮艷的圖形界面和被稱為“DUKE”的智能代理來(lái)幫助用戶。1992年12月3日,這臺(tái)設(shè)備進(jìn)行了展示。同年11月,GREEN計(jì)劃被轉(zhuǎn)化成了“FIRSTPERSON有限公司”,一個(gè)太陽(yáng)公司的全資子公司,團(tuán)隊(duì)也被重新安排到了帕洛阿爾托。FIRSTPERSON團(tuán)隊(duì)對(duì)建造一種高度交互的設(shè)備感興趣,當(dāng)時(shí)代華納發(fā)布了一個(gè)關(guān)于電視機(jī)頂盒的征求提議書時(shí)(REQUESTFORPROPOSAL),F(xiàn)IRSTPERSON改變了他們的目標(biāo),作為對(duì)征求意見書的響應(yīng),提出了一個(gè)機(jī)頂盒平臺(tái)的提議。但是有線電視業(yè)界覺得FIRSTPERSON的平臺(tái)給予用戶過(guò)多的控制權(quán),因此FIRSTPERSON的投標(biāo)敗給了SGI。與3DO公司的另外一筆關(guān)于機(jī)頂盒的交易也沒有成功,由于他們的平臺(tái)不能在電視工業(yè)產(chǎn)生任何效益,公司被并回太陽(yáng)公司。JAVA和互聯(lián)網(wǎng)1994年6月、7月間,在經(jīng)歷了一場(chǎng)歷時(shí)三天的腦力激蕩的討論后,約翰蓋吉、詹姆斯高斯林、比爾喬伊、帕特里克諾頓、韋恩羅斯因和埃里克斯庫(kù)米,團(tuán)隊(duì)決定再一次改變了努力的目標(biāo),這次他們決定將該技術(shù)應(yīng)用于萬(wàn)維網(wǎng)。他們認(rèn)為隨著MOSAIC瀏覽器的到來(lái),因特網(wǎng)正在向同樣的高度互動(dòng)的遠(yuǎn)景演變,而這一遠(yuǎn)景正是他們?cè)谟芯€電視網(wǎng)中看到的。作為原型,帕特里克諾頓寫了一個(gè)小型萬(wàn)維網(wǎng)瀏覽器,WEBRUNNER,后來(lái)改名為HOTJAVA。JAVA和“JAVA”由于商標(biāo)搜索顯示,OAK已被一家顯卡制造商注冊(cè)。于是同年,OAK被改名為JAVA。當(dāng)使用十六進(jìn)制編輯器打開由JAVA源代碼編譯出的二進(jìn)制文件(CLASS文件)的話,最前面的32位將顯示為CAFEBABE,即詞組“CAFEBABE”(咖啡屋寶貝)。編輯JAVA和瀏覽器1994年10月,HOTJAVA和JAVA平臺(tái)為公司高層進(jìn)行演示。1994年,JAVA10A版本已經(jīng)可以提供下載,但是JAVA和HOTJAVA瀏覽器的第一次公開發(fā)布卻是在1995年3月23日SUNWORLD大會(huì)上進(jìn)行的。升陽(yáng)公司的科學(xué)指導(dǎo)約翰蓋吉聲明JAVA技術(shù)。這個(gè)發(fā)布是與網(wǎng)景公司的執(zhí)行副總裁馬克安德森的驚人發(fā)布一起進(jìn)行的,宣布網(wǎng)景將在其瀏覽器中包含對(duì)JAVA的支持。1996年1月,升陽(yáng)公司成立了JAVA業(yè)務(wù)集團(tuán),專門開發(fā)JAVA技術(shù)。JAVA近況在流行幾年之后,JAVA在瀏覽器中的地位被逐步侵蝕。它在簡(jiǎn)單交互性動(dòng)畫方面的用途已經(jīng)完全被ADOBE公司的FLASH排擠,2005年JAVA傾向只被用于雅虎游戲那樣的更為復(fù)雜的應(yīng)用程序。JAVA同時(shí)遭受到來(lái)自微軟的反對(duì),他們決定在新版本的INTERNETEXPLORER和WINDOWS中不再附帶JAVA平臺(tái)。與此相反。在萬(wàn)維網(wǎng)的服務(wù)器端和手持設(shè)備上,JAVA變得更加流行。很多網(wǎng)站在后端使用JSP和其他的JAVA技術(shù)。在桌面系統(tǒng)上,獨(dú)立的JAVA程序還是相對(duì)少見,這是因?yàn)镴AVA平臺(tái)的運(yùn)行開銷較大,而許多人的電腦上沒有安裝JAVA,由于網(wǎng)絡(luò)帶寬在以前較小,下載JAVA曾經(jīng)是個(gè)耗時(shí)的事情。但是隨著計(jì)算機(jī)計(jì)算能力、網(wǎng)絡(luò)帶寬在10年中取得了很大的進(jìn)步,同時(shí)虛擬機(jī)和編譯器的質(zhì)量得到了提高,許多應(yīng)用程序得到了廣泛的使用,包括開源軟件NETBEANS和ECLIPSE等軟件開發(fā)工具、JEDIT、AZUREUSBITTORRENT客戶端、JNODE操作系統(tǒng)、APACHE軟件基金會(huì)的ANT、DERBY、HADOOP、JAKARTA、POI和TOMCAT、JBOSS和GLASSFISH應(yīng)用服務(wù)器;商用軟件EIOFFICE(永中OFFICE)、純JAVA3D游戲合金戰(zhàn)士CHROME、IBMWEBSPHERE、COLDFUSION和WEBLOGIC。目前JAVA提供以下三個(gè)版本JAVAPLATFORM,ENTERPRISEEDITION(JAVAEEJAVA平臺(tái)企業(yè)版)、JAVAPLATFORM,STANDARDEDITION(JAVASEJAVA平臺(tái)標(biāo)準(zhǔn)版)、JAVAPLATFORM,MICROEDITION(JAVAMEJAVA平臺(tái)微型版)JAVAPLATFORM,CARDEDITION。JAVA開放源代碼項(xiàng)目2006年SUN在JAVAONE公布JAVA開放源代碼項(xiàng)目,并推出OPENJDK計(jì)劃。2JAVA虛擬機(jī)、JAVA編譯器和JAVA類庫(kù)以GNU通用公共許可證公開。JAVA語(yǔ)言之所以被開發(fā),是要達(dá)到以下五個(gè)目的應(yīng)當(dāng)使用面向?qū)ο笮蛟O(shè)計(jì)方法學(xué)、應(yīng)當(dāng)允許同一程序在不同的計(jì)算機(jī)平臺(tái)執(zhí)行、應(yīng)當(dāng)包括內(nèi)建的對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的支持、應(yīng)當(dāng)被設(shè)計(jì)成安全地執(zhí)行遠(yuǎn)端代碼、應(yīng)當(dāng)易于使用,并借鑒以前那些面向?qū)ο笳Z(yǔ)言(如C)的長(zhǎng)處。JAVA技術(shù)主要分成幾個(gè)部分JAVA語(yǔ)言、運(yùn)行環(huán)境JVM、類庫(kù)。一般情況下說(shuō)JAVA時(shí)并不區(qū)分指的是哪個(gè)部分。JAVA在15版本時(shí),做了重大改變,太陽(yáng)公司并15版本重命名為JAVA50。面向?qū)ο驤AVA的特點(diǎn)之一就是面向?qū)ο?,是程序設(shè)計(jì)方法的一種?!懊嫦?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言”的核心之一就是開發(fā)者在設(shè)計(jì)軟件的時(shí)候可以使用自定義的類型和關(guān)聯(lián)操作。代碼和數(shù)據(jù)的實(shí)際集合體叫做“對(duì)象”。一個(gè)對(duì)象可以想像成綁定了很多“行為(代碼)”和“狀態(tài)(數(shù)據(jù))”的物體。對(duì)于數(shù)據(jù)結(jié)構(gòu)的改變需要和代碼進(jìn)行通信然后操作,反之亦然。面向?qū)ο笤O(shè)計(jì)讓大型軟件工程的計(jì)劃和設(shè)計(jì)變得更容易管理,能增強(qiáng)工程的健康度,減少失敗工程的數(shù)量。面向?qū)ο笤O(shè)計(jì)另外一個(gè)目標(biāo)就是能產(chǎn)生很多的有關(guān)聯(lián)的類,可以讓軟件的再開發(fā)變得簡(jiǎn)單。舉例來(lái)說(shuō),很多軟件工程都有同樣的功能,尤其是很多應(yīng)用了同一原理組織的軟件工程。軟件的二次開發(fā)者想自己為軟件開發(fā)插件以增強(qiáng)功能的時(shí)候,絕對(duì)不想看到混亂的開發(fā)代碼和管理計(jì)劃。面向?qū)ο蟮哪康木褪遣簧a(chǎn)難懂且難以使用的代碼,為軟件各個(gè)功能群之間創(chuàng)建有效的通信通道。很多開源軟件社區(qū)正在計(jì)劃給軟件作者提供更多的類來(lái)讓軟件的二次開發(fā)變得簡(jiǎn)便??缙脚_(tái)性JAVA語(yǔ)言的第二個(gè)特性就是跨平臺(tái)性,也就是說(shuō)使用JAVA語(yǔ)言編寫的程序可以在編譯后不用經(jīng)過(guò)任何更改,就能在任何硬件設(shè)備條件下運(yùn)行。這個(gè)特性經(jīng)常被稱為“一次編譯,到處運(yùn)行”。執(zhí)行JAVA應(yīng)用程序必須安裝JAVARUNTIMEENVIRONMENT(JRE),JRE內(nèi)部有一個(gè)JAVA虛擬機(jī)(JAVAVIRTUALMACHINE,JVM)以及一些標(biāo)準(zhǔn)的類庫(kù)(CLASSLIBRARY)。通過(guò)JVM的虛擬機(jī)才能在電腦系統(tǒng)執(zhí)行JAVA應(yīng)用程序(JAVAAPPLICATION),這與NETFRAMEWORK的情況一樣,所以電腦上沒有安裝JVM,那么這些程序?qū)⒉荒軌驁?zhí)行。實(shí)現(xiàn)跨平臺(tái)性的方法是大多數(shù)編譯器在進(jìn)行JAVA語(yǔ)言程序的編碼時(shí)候會(huì)生成一個(gè)用字節(jié)碼(BYTECODE)寫成的“半成品”,這個(gè)“半成品”會(huì)在JAVA虛擬機(jī)(解釋層)的幫助下運(yùn)行,虛擬機(jī)會(huì)把它轉(zhuǎn)換成當(dāng)前所處硬件平臺(tái)的原始代碼。之后,JAVA虛擬機(jī)會(huì)打開標(biāo)準(zhǔn)庫(kù),進(jìn)行數(shù)據(jù)(圖片、線程和網(wǎng)絡(luò))的訪問工作。類庫(kù)問題使用SWING平臺(tái)編寫的帶有GUI(圖形用戶接口)的程序和其他原始程序非常不同。選用AWT工具包編寫程序的程序師看到的都是原始接口,而且也無(wú)法獲得先進(jìn)的GUI編程支持,如果使用的話,就要提供每個(gè)平臺(tái)上面所需的API,這將是一項(xiàng)龐大的工程。SWING則是完全用JAVA語(yǔ)言所寫的程序,避免了接口元素重復(fù)的問題,性能問題由于JAVA編譯器和虛擬機(jī)的不同對(duì)JAVA代碼的性能影響比語(yǔ)言本身的影響大的多,所以統(tǒng)一討論JAVA的程序的性能經(jīng)常是有誤導(dǎo)性的。據(jù)IBM的數(shù)據(jù),在同樣的硬件上2001年時(shí)的IBMJDK版本的性能是1996年的JDK版本的十倍左右。見IBM東京研究院的數(shù)據(jù)HTTP/WWWISTITECHACJP/PPL2004/PROCEEDINGS/ISHIZAKI_SLIDESPDF而即使是在同一時(shí)期,不同公司的JDK和JRE的性能也不一樣,比如SUN、IBM、BEA等公司都有自己開發(fā)的JDK和JRE。JAVA語(yǔ)言的一些特性不可避免的有額外的性能代價(jià),例如數(shù)組范圍檢查、運(yùn)行時(shí)類型檢查等等。JAVA程序的性能還會(huì)因?yàn)椴煌膭?dòng)態(tài)復(fù)雜性和垃圾處理機(jī)制使用的多少而各有不同。如果JVM的實(shí)現(xiàn)比較優(yōu)化的話,那么這些功能甚至可以增加存儲(chǔ)器分配的性能。這和總是使用STL或者托管C的程序的情況類似。JAVA的設(shè)計(jì)目的主要是安全性和可攜性,所以對(duì)于一些特性,比如對(duì)硬件架構(gòu)和存儲(chǔ)器地址訪問的直接訪問都被去除了。如果需要間接調(diào)用這些底層功能的話,就需要使用JNI(JAVA本地接口)來(lái)調(diào)用本地代碼,而間接訪問意味著頻繁調(diào)用這些特性時(shí)性能損失會(huì)很大,微軟的NET平臺(tái)也有這樣的問題。所以到目前為止,性能敏感的代碼,例如驅(qū)動(dòng)程序和3D視頻游戲,還是大多使用本地編譯,甚至直接以不直接支持面向?qū)ο蟮腃語(yǔ)言或機(jī)器碼編寫。但最近已經(jīng)有了許多用純JAVA編寫的3D游戲,其效果與用C語(yǔ)言編寫的不相上下,例如“合金戰(zhàn)士”(英文名CHROME)。這主要是因?yàn)樾掳娴腏AVA3D技術(shù)已經(jīng)能像C一樣調(diào)用硬件加速,也就是使用顯卡來(lái)加速,無(wú)論是C還是JAVA語(yǔ)言寫的3D游戲都是使用顯卡及GPU來(lái)處理,從而使得CPU可以專注于其他方面的工作。垃圾回收機(jī)制自動(dòng)垃圾回收(GARBAGECOLLECTION)C語(yǔ)言被用戶詬病的原因之一是大多數(shù)C編譯器不支持垃圾收集機(jī)制。通常使用C編程的時(shí)候,程序員于程序中初始化對(duì)象時(shí),會(huì)在主機(jī)存儲(chǔ)器堆棧上分配一塊存儲(chǔ)器與地址,當(dāng)不需要此對(duì)象時(shí),進(jìn)行解構(gòu)或者刪除的時(shí)候再釋放分配的存儲(chǔ)器地址。如果對(duì)象是在堆棧上分配的,而程序員又忘記進(jìn)行刪除,那么就會(huì)造成存儲(chǔ)器泄漏(MEMORYLEAK)。長(zhǎng)此以往,程序運(yùn)行的時(shí)候可能會(huì)生成很多不清除的垃圾,浪費(fèi)了不必要的存儲(chǔ)器空間。因此如果同一存儲(chǔ)器地址被刪除兩次的話,程序會(huì)變得不穩(wěn)定,甚至崩潰。因此有經(jīng)驗(yàn)的C程序員都會(huì)在刪除之后將指針重置為0,然后在刪除之前先判斷指針是否為0。C中也可以使用“智能指針”(SMARTPOINTER)或者使用C托管擴(kuò)展編譯器的方法來(lái)實(shí)現(xiàn)自動(dòng)化存儲(chǔ)器釋放,智能指針可以在標(biāo)準(zhǔn)類庫(kù)中找到,而C托管擴(kuò)展被微軟的VISUALC70及以上版本所支持。智能指針的優(yōu)點(diǎn)是不需引入緩慢的垃圾收集機(jī)制,而且可以不考慮線程安全的問題,但是缺點(diǎn)是如果不善使用智能指針的話,性能有可能不如垃圾收集機(jī)制,而且不斷地分配和釋放存儲(chǔ)器可能造成存儲(chǔ)器碎片,需要手動(dòng)對(duì)堆進(jìn)行壓縮。除此之外,由于智能指針是一個(gè)基于模板的功能,自動(dòng)刪除這個(gè)對(duì)象所占用的空間,釋放存儲(chǔ)器以避免存儲(chǔ)器泄漏。注意程序員不需要修改FINALIZE方法,自動(dòng)垃圾收集也會(huì)發(fā)生作用。但是存儲(chǔ)器泄漏并不是就此避免了,當(dāng)程序員疏忽大意地忘記解除一個(gè)對(duì)象不應(yīng)該有的參考的時(shí)候,存儲(chǔ)器泄漏仍然不可避免,例如以下的程序STRINGSTR“這是一段字串“SYSTEMOUTPRINTLNSFORINTISYSTEMOUTPRINTLN“HALLOWOULD“I在循環(huán)開始之前,字符串STR已經(jīng)不會(huì)再用到了,但未將這個(gè)參考指向NULL,因此字符串STR無(wú)法被GC所回收。這種存儲(chǔ)器泄漏必須等到一個(gè)函數(shù)退出之后才會(huì)被系統(tǒng)取回,自不過(guò)發(fā)生的機(jī)率要比不激活垃圾收集機(jī)制的C程序少很多。但是總體來(lái)講,自動(dòng)垃圾收集機(jī)制要安全和簡(jiǎn)單許多。JSP技術(shù)簡(jiǎn)介JSPJAVASERVERPAGES是由SUNMICROSYSTEMS公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件HTM,HTML中插入JAVA程序段SCRIPTLET和JSP標(biāo)記TAG,從而形成JSP文件JSP。用JSP開發(fā)的WEB應(yīng)用是跨平臺(tái)的,即能在LINUX下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。WEB服務(wù)器在遇到訪問JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的JAVA程序段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)等,以實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)頁(yè)所需要的功能。JSP與JAVASERVLET一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的10規(guī)范的最后版本是1999年9月推出的,12月又推出了11規(guī)范。目前較新的是JSP12規(guī)范,JSP20規(guī)范的征求意見稿也已出臺(tái)。JSP頁(yè)面由HTML代碼和嵌入其中的JAVA代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些JAVA代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。JAVASERVLET是JSP的技術(shù)基礎(chǔ),而且大型的WEB應(yīng)用程序的開發(fā)需要JAVASERVLET和JSP配合才能完成。JSP具備了JAVA技術(shù)的簡(jiǎn)單易用,完全的面向?qū)ο?,具有平臺(tái)無(wú)關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。SPRINGSPRINGFRAMEWORK是一個(gè)開源的JAVA/JAVAEE全功能棧(FULLSTACK)的應(yīng)用程序框架,以APACHE許可證形式發(fā)布,也有NET平臺(tái)上的移植版本。該框架基于EXPERTONEONONEJAVAEEDESIGNANDDEVELOPMENT(ISBN0764543857)一書中的代碼,最初由RODJOHNSON和JUERGENHOELLER等開發(fā)。SPRINGFRAMEWORK提供了一個(gè)簡(jiǎn)易的開發(fā)方式,這種開發(fā)方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。SPRING中包含的關(guān)鍵特性強(qiáng)大的基于JAVABEANS的采用控制翻轉(zhuǎn)(INVERSIONOFCONTROL,IOC)原則的配置管理,使得應(yīng)用程序的組建更加快捷簡(jiǎn)易。一個(gè)可用于從APPLET到JAVAEE等不同運(yùn)行環(huán)境的核心BEAN工廠。數(shù)據(jù)庫(kù)事務(wù)的一般化抽象層,JDBC抽象層提供了有針對(duì)性的異常等級(jí)(不再?gòu)腟QL異常中提取原始代碼),簡(jiǎn)化了錯(cuò)誤處理,大大減少了程序員的編碼量。再次利用JDBC時(shí),你無(wú)需再寫出另一個(gè)終止FINALLY模塊。并且面向JDBC的異常與SPRING通用數(shù)據(jù)訪問對(duì)象(DATAACCESSOBJECT)異常等級(jí)相一致。可以與各種標(biāo)準(zhǔn)的數(shù)據(jù)訪問技術(shù)結(jié)合在一起,包括ENTERPRISEJAVABEANS(EJB),JDBC與JNDI。在STRUTS的視圖(VIEW)端,除了使用標(biāo)準(zhǔn)的JAVASERVERPAGES(JSP)以外,還提供了大量的標(biāo)簽庫(kù)使用,同時(shí)也可以與其他表現(xiàn)層組件技術(shù)(產(chǎn)品)進(jìn)行整合,比如VELOCITYTEMPLATES,XSLT等。通過(guò)應(yīng)用STRUTS的框架,最終用戶可以把大部分的關(guān)注點(diǎn)放在自己的業(yè)務(wù)邏輯(ACTION)與映射關(guān)系的配置文件(STRUTSCONFIGXML)中。STRUTS2的合并示意圖2006年,WEBWORK與STRUTS這兩個(gè)優(yōu)秀的JAVAEEWEB框架(WEBFRAMEWORK的團(tuán)體,決定合作共同開發(fā)一個(gè)新的,整合了WEBWORK與STRUTS優(yōu)點(diǎn),并且更加優(yōu)雅、擴(kuò)展性更強(qiáng)的框架,命名為“STRUTS2”,原STRUTS的1X版本產(chǎn)品稱為“STRUTS1”。至此,STRUTS項(xiàng)目并行提供與維護(hù)兩個(gè)主要版本的框架產(chǎn)品STRUTS1與STRUTS2。STRUTS這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支持金屬架。它的目的是為了減少在運(yùn)用MVC設(shè)計(jì)模型來(lái)開發(fā)WEB應(yīng)用的時(shí)間。你仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過(guò)它將可以完成其中一些繁重的工作。STRUTS跟TOMCAT、TURBINE等諸多APACHE項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn),使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。HIBERNATE開源框架介紹HIBERNATE是一種JAVA語(yǔ)言下的對(duì)象關(guān)系映射解決方案。它是使用GNU寬通用公共許可證發(fā)行的自由、開源的軟件。它為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的映射,提供了一個(gè)使用方便的框架。概覽它的設(shè)計(jì)目標(biāo)是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來(lái)。無(wú)論是從設(shè)計(jì)草案還是從一個(gè)遺留數(shù)據(jù)庫(kù)開始,開發(fā)人員都可以采用HIBERNATE。HIBERNATE不僅負(fù)責(zé)從JAVA類到數(shù)據(jù)庫(kù)表的映射(還包括從JAVA數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供了面向?qū)ο蟮臄?shù)據(jù)查詢檢索機(jī)制,從而極大地縮短的手動(dòng)處理SQL和JDBC上的開發(fā)時(shí)間。HIBERNATE的架構(gòu)有三個(gè)主要部分組成1連接管理HIBERNATE的連接管理服務(wù)提供的數(shù)據(jù)庫(kù)連接的有效管理。數(shù)據(jù)庫(kù)連接是與數(shù)據(jù)庫(kù)進(jìn)行交互,因?yàn)樗枰罅抠Y源的開放和關(guān)閉數(shù)據(jù)庫(kù)連接的最昂貴的部分。2交易管理事務(wù)管理服務(wù)提供給用戶能夠同時(shí)執(zhí)行多個(gè)數(shù)據(jù)庫(kù)報(bào)表。3對(duì)象關(guān)系映射對(duì)象關(guān)系映射是從對(duì)象映射模型的數(shù)據(jù)表示為關(guān)系數(shù)據(jù)模型的技術(shù)。這部分是用來(lái)休眠選擇,插入,更新和刪除記錄窗體的基礎(chǔ)表。當(dāng)我們傳遞一個(gè)對(duì)象到SESSIONSAVE()的方法時(shí),HIBERNATE讀取該對(duì)象的變量的狀態(tài),并執(zhí)行必要的查詢。HIBERNATE是很好的工具盡可能對(duì)象關(guān)系映射的關(guān)注,但在連接管理和事務(wù)管理方面,它在性能和能力缺乏。所以通常冬眠與其他正在使用的連接管理和事務(wù)管理工具。例如APACHE的二溴氯丙烷是用于與HIBERNATE的連接池。HIBERNATE提供了使用中的靈活性。它被稱為輕型的體系結(jié)構(gòu)時(shí),我們只使用對(duì)象關(guān)系映射的組成部分。而在全面解決的體系結(jié)構(gòu)的所有三個(gè)組件對(duì)象關(guān)系映射,連接管理和事務(wù)管理)的使用。HISTORYDUKE,THEJAVAMASCOTJAMESGOSLING,MIKESHERIDAN,ANDPATRICKNAUGHTONINITIATEDTHEJAVALANGUAGEPROJECTINJUNE1991JAVAWASORIGINALLYDESIGNEDFORINTERACTIVETELEVISION,BUTITWASTOOADVANCEDFORTHEDIGITALCABLETELEVISIONINDUSTRYATTHETIMETHELANGUAGEWASINITIALLYCALLEDOAKAFTERANOAKTREETHATSTOODOUTSIDEGOSLINGSOFFICEITWENTBYTHENAMEGREENLATER,ANDWASLATERRENAMEDJAVA,FROMALISTOFRANDOMWORDSGOSLINGAIMEDTOIMPLEMENTAVIRTUALMACHINEANDALANGUAGETHATHADAFAMILIARC/CSTYLEOFNOTATIONSUNMICROSYSTEMSRELEASEDTHEFIRSTPUBLICIMPLEMENTATIONASJAVA10IN1995ITPROMISED“WRITEONCE,RUNANYWHERE“WORA,PROVIDINGNOCOSTRUNTIMESONPOPULARPLATFORMSFAIRLYSECUREANDFEATURINGCONFIGURABLESECURITY,ITALLOWEDNETWORKANDFILEACCESSRESTRICTIONSMAJORWEBBROWSERSSOONINCORPORATEDTHEABILITYTORUNJAVAAPPLETSWITHINWEBPAGES,ANDJAVAQUICKLYBECAMEPOPULARWITHTHEADVENTOFJAVA2RELEASEDINITIALLYASJ2SE12INDECEMBER19981999,NEWVERSIONSHADMULTIPLECONFIGURATIONSBUILTFORDIFFERENTTYPESOFPLATFORMSFOREXAMPLE,J2EETARGETEDENTERPRISEAPPLICATIONSANDTHEGREATLYSTRIPPEDDOWNVERSIONJ2MEFORMOBILEAPPLICATIONSMOBILEJAVAJ2SEDESIGNATEDTHESTANDARDEDITIONIN2006,FORMARKETINGPURPOSES,SUNRENAMEDNEWJ2VERSIONSASJAVAEE,JAVAME,ANDJAVASE,RESPECTIVELYIN1997,SUNMICROSYSTEMSAPPROACHEDTHEISO/IECJTC1STANDARDSBODYANDLATERTHEECMAINTERNATIONALTOFORMALIZEJAVA,BUTITSOONWITHDREWFROMTHEPROCESSJAVAREMAINSADEFACTOSTANDARD,CONTROLLEDTHROUGHTHEJAVACOMMUNITYPROCESSATONETIME,SUNMADEMOSTOFITSJAVAIMPLEMENTATIONSAVAILABLEWITHOUTCHARGE,DESPITETHEIRPROPRIETARYSOFTWARESTATUSSUNGENERATEDREVENUEFROMJAVATHROUGHTHESELLINGOFLICENSESFORSPECIALIZEDPRODUCTSSUCHASTHEJAVAENTERPRISESYSTEMSUNDISTINGUISHESBETWEENITSSOFTWAREDEVELOPMENTKITSDKANDRUNTIMEENVIRONMENTJREASUBSETOFTHESDKTHEPRIMARYDISTINCTIONINVOLVESTHEJRESLACKOFTHECOMPILER,UTILITYPROGRAMS,ANDHEADERFILESONNOVEMBER13,2006,SUNRELEASEDMUCHOFJAVAASOPENSOURCESOFTWAREUNDERTHETERMSOFTHEGNUGENERALPUBLICLICENSEGPLONMAY8,2007,SUNFINISHEDTHEPROCESS,MAKINGALLOFJAVASCORECODEAVAILABLEUNDERFREESOFTWARE/OPENSOURCEDISTRIBUTIONTERMS,ASIDEFROMASMALLPORTIONOFCODETOWHICHSUNDIDNOTHOLDTHECOPYRIGHTSUNSVICEPRESIDENTRICHGREENHASSAIDTHATSUNSIDEALROLEWITHREGARDSTOJAVAISASAN“EVANGELIST“FOLLOWINGORACLECORPORATIONSACQUISITIONOFSUNMICROSYSTEMSIN20092010,ORACLEHASDESCRIBEDITSELFASTHE“STEWARDOFJAVATECHNOLOGYWITHARELENTLESSCOMMITMENTTOFOSTERINGACOMMUNITYOFPARTICIPATIONANDTRANSPARENCY“PRINCIPLESTHEREWEREFIVEPRIMARYGOALSINTHECREATIONOFTHEJAVALANGUAGE1ITSHOULDBE“SIMPLE,OBJECTORIENTED,ANDFAMILIAR“、2ITSHOULDBE“ROBUSTANDSECURE“3ITSHOULDBE“ARCHITECTURENEUTRALANDPORTABLE“、4ITSHOULDEXECUTEWITH“HIGHPERFORMANCE“、5ITSHOULDBE“INTERPRETED,THREADED,ANDDYNAMIC“JAVAPLATFORMMAINARTICLESJAVASOFTWAREPLATFORMANDJAVAVIRTUALMACHINEONECHARACTERISTICOFJAVAISPORTABILITY,WHICHMEANSTHATCOMPUTERPROGRAMSWRITTENINTHEJAVALANGUAGEMUSTRUNSIMILARLYONANYSUPPORTEDHARDWARE/OPERATINGSYSTEMPLATFORMTHISISACHIEVEDBYCOMPILINGTHEJAVALANGUAGECODETOANINTERMEDIATEREPRESENTATIONCALLEDJAVABYTECODE,INSTEADOFDIRECTLYTOPLATFORMSPECIFICMACHINECODEJAVABYTECODEINSTRUCTIONSAREANALOGOUSTOMACHINECODE,BUTAREINTENDEDTOBEINTERPRETEDBYAVIRTUALMACHINEVMWRITTENSPECIFICALLYFORTHEHOSTHARDWAREENDUSERSCOMMONLYUSEAJAVARUNTIMEENVIRONMENTJREINSTALLEDONTHEIROWNMACHINEFORSTANDALONEJAVAAPPLICATIONS,ORINAWEBBROWSERFORJAVAAPPLETSSTANDARDIZEDLIBRARIESPROVIDEAGENERICWAYTOACCESSHOSTSPECIFICFEATURESSUCHASGRAPHICS,THREADING,ANDNETWORKINGAMAJORBENEFITOFUSINGBYTECODEISPORTINGHOWEVER,THEOVERHEADOFINTERPRETATIONMEANSTHATINTERPRETEDPROGRAMSALMOSTALWAYSRUNMORESLOWLYTHANPROGRAMSCOMPILEDTONATIVEEXECUTABLESWOULDJUSTINTIMECOMPILERSWEREINTRODUCEDFROMANEARLYSTAGETHATCOMPILEBYTECODESTOMACHINECODEDURINGRUNTIMEIMPLEMENTATIONSSUNMICROSYSTEMSOFFICIALLYLICENSESTHEJAVASTANDARDEDITIONPLATFORMFORLINUX,MACOSX,ANDSOLARISALTHOUGHINTHEPASTSUNHASLICENSEDJAVATOMICROSOFT,THELICENSEHASEXPIREDANDHASNOTBEENRENEWEDTHROUGHANETWORKOFTHIRDPARTYVENDORSANDLICENSEES,ALTERNATIVEJAVAENVIRONMENTSAREAVAILABLEFORTHESEANDOTHERPLATFORMSSUNSTRADEMARKLICENSEFORUSAGEOFTHEJAVABRANDINSISTSTHATALLIMPLEMENTATIONSBE“COMPATIBLE“THISRESULTEDINALEGALDISPUTEWITHMICROSOFTAFTERSUNCLAIMEDTHATTHEMICROSOFTIMPLEMENTATIONDIDNOTSUPPORTRMIORJNIANDHADADDEDPLATFORMSPECIFICFEATURESOFTHEIROWNSUNSUEDIN1997,ANDIN2001WONASETTLEMENTOFUS20MILLION,ASWELLASACOURTORDERENFORCINGTHETERMSOFTHELICENSEFROMSUNASARESULT,MICROSOFTNOLONGERSHIPSJAVAWITHWINDOWS,ANDINLATTERCASETHERESPONSIBILITYOFMANAGINGMEMORYRESIDESWITHTHEPROGRAMMERIFTHEPROGRAMDOESNOTDEALLOCATEANOBJECT,AMEMORYLEAKOCCURSIFTHEPROGRAMATTEMPTSTOACCESSORDEALLOCATEMEMORYTHATHASALREADYBEENDEALLOCATED,THERESULTISUNDEFINEDANDDIFFICULTTOPREDICT,ANDTHEPROGRAMISLIKELYTOBECOMEUNSTABLEAND/ORCRASHTHISCANBEPARTIALLYREMEDIEDBYTHEUSEOFSMARTPOINTERS,BUTTHESEADDOVERHEADANDCOMPLEXITYNOTETHATGARBAGECOLLECTIONDOESNOTPREVENT“LOGICAL“MEMORYLEAKS,IETHOSEWHERETHEMEMORYISSTILLREFERENCEDBUTNEVERUSEDGARBAGECOLLECTIONMAYHAPPENATANYTIMEIDEALLY,ITWILLOCCURWHENAPROGRAMISIDLEITISGUARANTEEDTOBETRIGGEREDIFTHEREISINSUFFICIENTFREEMEMORYONTHEHEAPTOALLOCATEANEWOBJECTTHISCANCAUSEAPROGRAMTOSTALLMOMENTARILYEXPLICITMEMORYMANAGEMENTISNOTPOSSIBLEINJAVAJAVADOESNOTSUPPORTC/CSTYLEPOINTERARITHMETIC,WHEREOBJECTADDRESSESANDUNSIGNEDINTEGERSUSUALLYLONGINTEGERSCANBEUSEDINTERCHANGEABLYTHISALLOWSTHEGARBAGECOLLECTORTORELOCATEREFERENCEDOBJECTSANDENSURESTYPESAFETYANDSECURITYASINCANDSOMEOTHEROBJECTORIENTEDLANGUAGES,VARIABLESOFJAVASPRIMITIVEDATATYPESARENOTOBJECTSVALUESOFPRIMITIVETYPESAREEITHERSTOREDDIRECTLYINFIELDSFOROBJECTSORONTHESTACKFORMETHODSRATHERTHANONTHEHEAP,ASCOMMONLYTRUEFOROBJECTSBUTSEEESCAPEANALYSISTHISWASACONSCIOUSDECISIONBYJAVASDESIGNERSFORPERFORMANCEREASONSBECAUSEOFTHIS,JAVAWASNOTCONSIDEREDTOBEAPUREOBJECTORIENTEDPROGRAMMINGLANGUAGEHOWEVER,ASOFJAVA50,AUTOBOXINGENABLESPROGRAMMERSTOPROCEEDASIFPRIMITIVETYPESWEREINSTANCESOFTHEIRWRAPPERCLASSJAVACONTAINSMULTIPLETYPESOFGARBAGECOLLECTORSBYDEFAULT,HOTSPOTUSESTHECONCURRENTMARKSWEEPCOLLECTOR,ALSOKNOWNASTHECMSGARBAGECOLLECTORHOWEVER,THEREAREALSOSEVERALOTHERGARBAGECOLLECTORSTHATCANBEUSEDTOMANAGETHEHEAPFOR90OFAPPLICATIONSINJAVA,THECMSGARBAGECOLLECTORISGOODENOUGHACLASSTHATISNOTDECLAREDPUBLICMAYBESTOREDINANYJAVAFILETHECOMPILERWILLGENERATEACLASSFILEFOREACHCLASSDEFINEDINTHESOURCEFILETHENAMEOFTHECLASSFILEISTHENAMEOFTHECLASS,WITHCLASSAPPENDEDFORCLASSFILEGENERATION,ANONYMOUSCLASSESARETREATEDASIFTHEIRNAMEWERETHECONCATENATIONOFTHENAMEOFTHEIRENCLOSINGCLASS,A,ANDANINTEGERTHEKEYWORDPUBLICDENOTESTHATAMETHODCANBECALLEDFROMCODEINOTHERCLASSES,ORTHATACLASSMAYBEUSEDBYCLASSESOUTSIDETHECLASSHIERARCHYTHECLASSHIERARCHYISRELATEDTOTHENAMEOFTHEDIRECTORYINWHICHTHEJAVAFILEISLOCATEDTHEKEYWORDSTATICINFRONTOFAMETHODINDICATESASTATICMETHOD,WHICHISASSOCIATED
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 富士康廠長(zhǎng)培訓(xùn)課件
- 家長(zhǎng)安全工作培訓(xùn)會(huì)講話課件
- 家長(zhǎng)培訓(xùn)課件軟件
- 公眾責(zé)任保險(xiǎn)合同2026年供應(yīng)協(xié)議
- 2026年電商直播品牌代言合同
- 2026年安保系統(tǒng)維護(hù)合同
- 2026年廣告投放效果承諾合同協(xié)議
- 2026年車輛產(chǎn)權(quán)抵押合同協(xié)議
- 2026年工業(yè)設(shè)備供電合同協(xié)議
- 知識(shí)產(chǎn)權(quán)許可合同2026年使用許可協(xié)議
- 買房分手協(xié)議書范本
- 污水管道疏通方案
- 氟橡膠膠漿壽命的研究
- HGT20638-2017化工裝置自控工程設(shè)計(jì)文件深度規(guī)范
- 東北抗聯(lián)英雄人物智慧樹知到期末考試答案章節(jié)答案2024年牡丹江師范學(xué)院
- 【課堂練】《聲音》單元測(cè)試
- Turning Red《青春變形記(2022)》完整中英文對(duì)照劇本
- 《抽水蓄能電站建設(shè)征地移民安置規(guī)劃大綱編制規(guī)程》
- MOOC 數(shù)字邏輯電路實(shí)驗(yàn)-東南大學(xué) 中國(guó)大學(xué)慕課答案
- 安全的電氣施工方案
- 北師大版七年級(jí)數(shù)學(xué)上冊(cè) (認(rèn)識(shí)一元一次方程)一元一次方程課件教學(xué)
評(píng)論
0/150
提交評(píng)論