版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 譯文:</b></p><p> Java技術(shù)與SSH框架</p><p> Duke,Java語言的吉祥物語言最開始只是太陽微系統(tǒng)(Sun MicroSystems)公司在1990年12月開始研究的一個內(nèi)部項目。太陽微系統(tǒng)公司的一個叫做帕特里克?諾頓的工程師被公司自己開發(fā)的C++和C語言編譯器搞得焦頭爛額,因為其中的API極其難用。
2、帕特里克決定改用NeXT,同時他也獲得了研究公司的一個叫做“Stealth計劃”的項目的機會?!癝tealth計劃”后來改名為“Green計劃”,詹姆斯·高斯林和麥克?舍林丹也加入了帕特里克的工作小組。他們和其他幾個工程師一起在加利福尼亞州門羅帕克市沙丘路的一個小工作室里面研究開發(fā)新技術(shù),瞄準(zhǔn)下一代智能家電(如微波爐)的程序設(shè)計,太陽公司預(yù)料未來科技將在家用電器領(lǐng)域大顯身手。團隊最初考慮使用C++語言,但是很多成員包括太陽的首
3、席科學(xué)家比爾?喬伊,發(fā)現(xiàn)C++和可用的API在某些方面存在很大問題。工作小組使用的是內(nèi)嵌類型平臺,可以用的資源極其有限。很多成員發(fā)現(xiàn)C++太復(fù)雜以至很多開發(fā)者經(jīng)常錯誤使用。他們發(fā)現(xiàn)C++缺少垃圾回收系統(tǒng),還有可移植的安全性、分布程序設(shè)計、和多運行續(xù)功能。最后,他們想要一種易于移植到各種設(shè)備上的平臺。</p><p> 根據(jù)可用的資金,比爾?喬伊決定開發(fā)一種集C語言和Mesa語言大成的新語言,在一份報告上,喬伊把
4、它叫做“未來”,他提議太陽公司的工程師應(yīng)該在C++的基礎(chǔ)上,開發(fā)一種面向?qū)ο蟮沫h(huán)境。最初,高斯林試圖修改和擴展C++的功能,他自己稱這種新語言為C++ ++ --,但是后來他放棄了。他將要創(chuàng)造出一種全新的語言,被他命名為“Oak”(橡樹),以他的辦公室外的橡樹命名。就像很多開發(fā)新技術(shù)的秘密工程一樣,工作小組沒日沒夜地工作到了1992年的夏天,他們能夠演示新平臺的一部分了,包括Green操作系統(tǒng),Oak的程序設(shè)計語言,類庫及其硬件。最初的
5、嘗試是面向一種類PDA設(shè)備,被命名為Star7,這種設(shè)備有鮮艷的圖形界面和被稱為“Duke”的智能代理來幫助用戶。1992年12月3日,這臺設(shè)備進行了展示。同年11月,Green計劃被轉(zhuǎn)化成了“FirstPerson有限公司”,一個太陽公司的全資子公司,團隊也被重新安排到了帕洛阿爾托。FirstPerson團隊對建造一種高度交互的設(shè)備感興趣,當(dāng)時代華納發(fā)布了一個關(guān)于電視機頂盒的征求提議書時(Request for proposal),F(xiàn)
6、irstPerson改變了</p><p> Java和互聯(lián)網(wǎng)1994年6月、7月間,在經(jīng)歷了一場歷時三天的腦力激蕩的討論后,約翰·蓋吉、詹姆斯·高斯林、比爾·喬伊、帕特里克·諾頓、韋恩·羅斯因和埃里克·斯庫米,團隊決定再一次改變了努力的目標(biāo),這次他們決定將該技術(shù)應(yīng)用于萬維網(wǎng)。他們認(rèn)為隨著Mosaic瀏覽器的到來,因特網(wǎng)正在向同樣的高度互動的遠景演變,
7、而這一遠景正是他們在有線電視網(wǎng)中看到的。作為原型,帕特里克·諾頓寫了一個小型萬維網(wǎng)瀏覽器,WebRunner,后來改名為HotJava。Java和“Java”由于商標(biāo)搜索顯示,Oak已被一家顯卡制造商注冊。于是同年,Oak被改名為Java。當(dāng)使用十六進制編輯器打開由Java源代碼編譯出的二進制文件(.class文件)的話,最前面的32位將顯示為CA FE BA BE,即詞組“CAFE BABE”(咖啡屋寶貝)。[編輯] Jav
8、a和瀏覽器1994年10月,HotJava和Java平臺為公司高層進行演示。1994年,Java 1.0a版本已經(jīng)可以提供下載,但是Java和HotJava瀏覽器的第一次公開發(fā)布卻是在1995年3月23日SunWorld大會上進行的。升陽公司的科學(xué)指導(dǎo)約翰·蓋吉</p><p> 目前Java提供以下三個版本:Java Platform, Enterprise Edition(Java EE:Java
9、平臺企業(yè)版)、Java Platform, Standard Edition(Java SE:Java平臺標(biāo)準(zhǔn)版)、Java Platform, Micro Edition(Java ME:Java平臺微型版)Java Platform, Card Edition。Java開放源代碼項目2006年SUN在JavaOne公布Java 開放源代碼項目,并推出OpenJDK計劃。[2] Java虛擬機、Java編譯器和Java類庫以GNU通用
10、公共許可證公開。</p><p> Java語言之所以被開發(fā),是要達到以下五個目的:應(yīng)當(dāng)使用面向?qū)ο蟪绦蛟O(shè)計方法學(xué)、應(yīng)當(dāng)允許同一程序在不同的計算機平臺執(zhí)行、應(yīng)當(dāng)包括內(nèi)建的對計算機網(wǎng)絡(luò)的支持、應(yīng)當(dāng)被設(shè)計成安全地執(zhí)行遠端代碼、應(yīng)當(dāng)易于使用,并借鑒以前那些面向?qū)ο笳Z言(如C++)的長處。Java技術(shù)主要分成幾個部分:Java語言、運行環(huán)境JVM、類庫。一般情況下說Java時并不區(qū)分指的是哪個部分。Java在1.5版本
11、時,做了重大改變,太陽公司并1.5版本重命名為Java 5.0。面向?qū)ο驤ava的特點之一就是面向?qū)ο?,是程序設(shè)計方法的一種?!懊嫦?qū)ο蟪绦蛟O(shè)計語言”的核心之一就是開發(fā)者在設(shè)計軟件的時候可以使用自定義的類型和關(guān)聯(lián)操作。代碼和數(shù)據(jù)的實際集合體叫做“對象”。一個對象可以想像成綁定了很多“行為(代碼)”和“狀態(tài)(數(shù)據(jù))”的物體。對于數(shù)據(jù)結(jié)構(gòu)的改變需要和代碼進行通信然后操作,反之亦然。面向?qū)ο笤O(shè)計讓大型軟件工程的計劃和設(shè)計變得更容易管理,能增強
12、工程的健康度,減少失敗工程的數(shù)量。面向?qū)ο笤O(shè)計另外一個目標(biāo)就是能產(chǎn)生很多的有關(guān)聯(lián)的類,可以讓軟件的再開發(fā)變得簡單。舉例來說,很多軟件工程都有同樣的功能,尤其是很多應(yīng)用了同一原理組織的</p><p> Java語言在最開始應(yīng)用的時候是沒有解釋層的,所有需要編譯的代碼都直接轉(zhuǎn)換成機器的原始代碼。這樣做的后果就是獲得了最佳的性能,但是程序臃腫異常。從JIT技術(shù)開始,Java的程序都經(jīng)過一次轉(zhuǎn)換之后才變成機器碼。很多
13、老牌的第三方虛擬機都使用一種叫做“動態(tài)編譯”的技術(shù),也就是說虛擬機實時監(jiān)測和分析程序的運行行為,同時選擇性地對程序所需要的部分進行編譯和優(yōu)化。所有這些技術(shù)都改善了代碼的運行速度,但是又不會讓程序的體積變得失常。程序的輕便性事實上是軟件編寫很難達到的一個目標(biāo),Java雖然成功地實現(xiàn)了“一次編譯,到處運行”,但是由于平臺和平臺之間的差異,所編寫的程序在轉(zhuǎn)換代碼的時候難免會出現(xiàn)微小的、不可察覺的錯誤和意外。有些程序員對此非常頭疼,他們嘲笑Ja
14、va的程序不是“一次編譯,到處運行”,而是“一次編譯,到處調(diào)試”。</p><p> 平臺無關(guān)性讓Java在服務(wù)器端軟件領(lǐng)域非常成功。很多服務(wù)器端軟件都使用Java或相關(guān)技術(shù)創(chuàng)建。</p><p> Java的性能和復(fù)雜性:</p><p> 關(guān)于Java的批評Java試圖通過新的方式解決軟件編寫的復(fù)雜性。很多人認(rèn)為Java語言做到了它承諾的一切。但是Java
15、并不是一門完美的語言。整體性問題并不是所有的工程和環(huán)境需要企業(yè)級別的復(fù)雜性,比如一個簡單的個人網(wǎng)站或者獨自編程的程序師所寫的程序。這些程序師會發(fā)現(xiàn)Java的復(fù)雜管理對于自己要做的程序來說過于強大了。一些人覺得Java在面向?qū)ο笊厦孀龅臎]有Ruby和Smalltalk純粹。但是最新出現(xiàn)的用Java實現(xiàn)的語言Groovy解決了這些問題。</p><p> 作為一種已經(jīng)創(chuàng)建的新技術(shù),Java顯然綜合了很多語言的特性,
16、比如C++、C語言、Python等等。一些對于Java的評論認(rèn)為Java的不變性在動搖。</p><p> 語言問題有些程序師不喜歡原始類型(primitive type)和類(class)的分離,尤其是那些曾經(jīng)使用過Smalltalk和Ruby的程序師。Java的代碼相對于其他的代碼來說過于冗長,這與它的輕便化聲明相違背。Java是一種單層繼承的語言。這也導(dǎo)致了程序師在試圖使用多重繼承時候的不便,而很多語言都
17、可以使用這個特性。但是Java可以使用接口類,把多重繼承可能導(dǎo)致的風(fēng)險減少到最小。Java不支持運算符重載,這是為了防止運算符重載使得代碼的功能變得不清晰。但是用Java實現(xiàn)的語言Groovy可以進行運算符重載。過去Java對于文本的操作和其他語言,比如Perl和PHP相比差的較多,但Java在1.4版本時候引入了正則表達式。</p><p> 類庫問題使用Swing平臺編寫的帶有GUI(圖形用戶接口)的程序和
18、其他原始程序非常不同。選用AWT工具包編寫程序的程序師看到的都是原始接口,而且也無法獲得先進的GUI編程支持,如果使用的話,就要提供每個平臺上面所需的API,這將是一項龐大的工程。Swing則是完全用Java語言所寫的程序,避免了接口元素重復(fù)的問題,只使用所有平臺都支持的最基本的繪圖機制。但是很多用戶不知道如何在Java風(fēng)格和Windows風(fēng)格之間進行轉(zhuǎn)換,結(jié)果造成了Java程序的接口在很多程序中非常特殊。蘋果電腦已經(jīng)提供了優(yōu)化過的Ja
19、va運行時程序,包含了Mac OS X的經(jīng)典Aqua接口風(fēng)格。性能問題由于Java編譯器和虛擬機的不同對Java代碼的性能影響比語言本身的影響大的多,所以統(tǒng)一討論Java的程序的性能經(jīng)常是有誤導(dǎo)性的。據(jù)IBM的數(shù)據(jù),在同樣的硬件上2001年時的IBM JDK版本的性能是1996年的JDK版本的十倍左右。見IBM東京研究院的數(shù)據(jù): http://www.is.titech.ac.jp/ppl2004/proceedings/ishizak
20、i_slides.pdf 而即使是在同一時期,不同公司</p><p> Java語言的一些特性不可避免的有額外的性能代價,例如數(shù)組范圍檢查、運行時類型檢查等等。Java程序的性能還會因為不同的動態(tài)復(fù)雜性和垃圾處理機制使用的多少而各有不同。如果JVM的實現(xiàn)比較優(yōu)化的話,那么這些功能甚至可以增加存儲器分配的性能。這和總是使用STL或者托管C++的程序的情況類似。</p><p> 盡管如
21、此,仍然有許多人認(rèn)為Java的性能低。這部分歸因于Sun公司最初的JVM實現(xiàn)使用未優(yōu)化的解釋機制來運行字節(jié)碼。一些新版本的JVM使用Just-In-Time(JIT)編譯器,在加載字節(jié)碼的時候?qū)⑵渚幾g成針對運行環(huán)境的本地代碼來實現(xiàn)一些本地編譯器的優(yōu)化特性。Just-In-Time機制和本地編譯的性能比較仍舊是一個有爭議的話題。JIT編譯需要很多時間,對于運行時間不長或者代碼很多的大型程序并不適宜。但是不算JIT編譯階段的話,程序的運行性
22、能在很多JVM下可以和本地編譯的程序一爭短長,甚至在一些計算比較密集的數(shù)值計算領(lǐng)域也是這樣。目前,Java已經(jīng)使用更先進的HotSpot技術(shù)來代替JIT技術(shù),Java的性能有了更進一步的提升。另外,在使用-server選項運行java程序時,也可以對java進行更深入的優(yōu)化,比如在運行時將調(diào)用較多的方法內(nèi)聯(lián)(inline)到程序中來提高運行速度,這就是所謂的“動態(tài)優(yōu)化”,而本地編譯器是無法做到這一點的;這也是一些java代碼比對應(yīng)用C/
23、C++等語言編寫的本地代碼運行的更快的原因之一。微軟的.NET平臺也使用JIT編譯器,所以也有類似問題。</p><p> Java的設(shè)計目的主要是安全性和可攜性,所以對于一些特性,比如對硬件架構(gòu)和存儲器地址訪問的直接訪問都被去除了。如果需要間接調(diào)用這些底層功能的話,就需要使用JNI(Java本地接口)來調(diào)用本地代碼,而間接訪問意味著頻繁調(diào)用這些特性時性能損失會很大,微軟的.NET平臺也有這樣的問題。所以到目前
24、為止,性能敏感的代碼,例如驅(qū)動程序和3D視頻游戲,還是大多使用本地編譯,甚至直接以不直接支持面向?qū)ο蟮腃語言或機器碼編寫。但最近已經(jīng)有了許多用純Java編寫的3D游戲,其效果與用C語言編寫的不相上下,例如“合金戰(zhàn)士”(英文名:Chrome)。這主要是因為新版的Java 3D技術(shù)已經(jīng)能像C++一樣調(diào)用硬件加速,也就是使用顯卡來加速,無論是C++還是Java語言寫的3D游戲都是使用顯卡及GPU來處理,從而使得CPU可以專注于其他方面的工作。
25、</p><p><b> 垃圾回收機制:</b></p><p> 自動垃圾回收(Garbage Collection)C++語言被用戶詬病的原因之一是大多數(shù)C++編譯器不支持垃圾收集機制。通常使用C++編程的時候,程序員于程序中初始化對象時,會在主機存儲器堆棧上分配一塊存儲器與地址,當(dāng)不需要此對象時,進行解構(gòu)或者刪除的時候再釋放分配的存儲器地址。如果對象是在堆
26、棧上分配的,而程序員又忘記進行刪除,那么就會造成存儲器泄漏(Memory Leak)。長此以往,程序運行的時候可能會生成很多不清除的垃圾,浪費了不必要的存儲器空間。因此如果同一存儲器地址被刪除兩次的話,程序會變得不穩(wěn)定,甚至崩潰。因此有經(jīng)驗的C++程序員都會在刪除之后將指針重置為0,然后在刪除之前先判斷指針是否為0。C++中也可以使用“智能指針”(Smart Pointer)或者使用C++托管擴展編譯器的方法來實現(xiàn)自動化存儲器釋放,智能
27、指針可以在標(biāo)準(zhǔn)類庫中找到,而C++托管擴展被微軟的Visual C++ 7.0及以上版本所支持。智能指針的優(yōu)點是不需引入緩慢的垃圾收集機制,而且可以不考慮線程安全的問題,但是缺點是如果不善使用智能指針的話,性能有可能不如垃圾收集機制,而且不斷地分配和釋放存儲器可能</p><p> String str = "這是一段字串";</p><p> System.out
28、.println(s);</p><p> for(int i){</p><p> System.out.println("Hallo Would"+i);</p><p><b> }</b></p><p> 在循環(huán)開始之前,字符串str已經(jīng)不會再用到了,但未將這個參考指向null,因此
29、字符串str無法被gc所回收。這種存儲器泄漏必須等到一個函數(shù)退出之后才會被系統(tǒng)取回,自不過發(fā)生的機率要比不激活垃圾收集機制的C++程序少很多。但是總體來講,自動垃圾收集機制要安全和簡單許多。</p><p> 不同廠商、不同版本的JVM中的存儲器垃圾回收機制并不完全一樣,通常越新版本的存儲器回收機制越快,IBM、BEA、SUN等等開發(fā)JVM的公司都曾宣稱過自己制造出了世界上最快的Template:WhatJVM
30、,JVM性能的世界紀(jì)錄也在不斷的被打破并提高。</p><p> IBM有一篇有關(guān)Java存儲器回收機制比不激活垃圾收集機制的C++存儲器處理快數(shù)倍的技術(shù)文章,而著名的Java技術(shù)書籍《Java編程思想》(Thinking in Java)也有一段論述Java存儲器及性能達到甚至超過C++的章節(jié)。</p><p> Java的設(shè)計者們不想讓Java有多重繼承的特性,因為C++的多重繼承
31、顯示了這種特性的困難。Java的接口功能可以提供同樣的功能,但是又不會很復(fù)雜。應(yīng)用程序開發(fā)接口在Java語言中,應(yīng)用程序接口(API)化身成類,并且分組成為包。每個包中包含有相關(guān)的接口和類。對于不同的平臺,Java提供了不同版本的包。API的設(shè)定由sun公司和其他公司通過JCP(Java社區(qū)程序)決定。任何公司和個人都可以參與這個工程,對API進行設(shè)計。2004年,IBM和BEA公司準(zhǔn)備聯(lián)合對官方的Java開源軟件工程進行支持,但是20
32、05年初,sun公司拒絕了這個支持。</p><p><b> Spring </b></p><p> Spring Framework 是一個開源的Java/Java EE全功能棧(full-stack)的應(yīng)用程序框架,以Apache許可證形式發(fā)布,也有.NET平臺上的移植版本。該框架基于 Expert One-on-One Java EE Design an
33、d Development(ISBN 0-7645-4385-7)一書中的代碼,最初由 Rod Johnson 和 Juergen Hoeller等開發(fā)。Spring Framework 提供了一個簡易的開發(fā)方式,這種開發(fā)方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。Spring 中包含的關(guān)鍵特性:強大的基于 JavaBeans 的采用控制翻轉(zhuǎn)(Inversion of Control,IoC)原則的配置管理,使
34、得應(yīng)用程序的組建更加快捷簡易。一個可用于從 applet 到 Java EE 等不同運行環(huán)境的核心 Bean 工廠。數(shù)據(jù)庫事務(wù)的一般化抽象層,允許聲明式(Declarative)事務(wù)管理器,簡化事務(wù)的劃分使之與底層無關(guān)。內(nèi)建的針對 JTA 和 單個 JDBC 數(shù)據(jù)源的一般化策略,使 Spring 的</p><p> JDBC 抽象層提供了有針對性的異常等級(不再從SQL異常中提取原始代碼),簡化了錯誤處理,大
35、大減少了程序員的編碼量。再次利用JDBC時,你無需再寫出另一個 '終止' (finally) 模塊。并且面向JDBC的異常與Spring 通用數(shù)據(jù)訪問對象(Data Access Object)異常等級相一致。</p><p> 以資源容器,DAO 實現(xiàn)和事務(wù)策略等形式與 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用眾多的翻轉(zhuǎn)控制方便特性來全面支持,解決了許多典型的
36、Hibernate集成問題。所有這些全部遵從Spring通用事務(wù)處理和通用數(shù)據(jù)訪問對象異常等級規(guī)范。</p><p> 靈活的基于核心 Spring 功能的 MVC 網(wǎng)頁應(yīng)用程序框架。開發(fā)者通過策略接口將擁有對該框架的高度控制,因而該框架將適應(yīng)于多種呈現(xiàn)(View)技術(shù),例如 JSP,F(xiàn)reeMarker,Velocity,Tiles,iText 以及 POI。值得注意的是,Spring 中間層可以輕易地結(jié)合于
37、任何基于 MVC 框架的網(wǎng)頁層,例如 Struts,WebWork,或 Tapestry,提供諸如事務(wù)管理等服務(wù)的面向方面編程框架。</p><p> 在設(shè)計應(yīng)用程序Model時,MVC 模式(例如Struts)通常難于給出一個簡潔明了的框架結(jié)構(gòu)。Spring卻具有能夠讓這部分工作變得簡單的能力。程序開發(fā)員們可以使用Spring的 JDBC 抽象層重新設(shè)計那些復(fù)雜的框架結(jié)構(gòu)。</p><p&
38、gt; Struts技術(shù)介紹</p><p> Struts項目是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術(shù),實現(xiàn)了基于Java EE Web應(yīng)用的Model-View-Controller〔MVC〕設(shè)計模式的應(yīng)用框架〔Web Framework〕,是MVC經(jīng)典設(shè)計模式中的
39、一個經(jīng)典產(chǎn)品。</p><p> MVC結(jié)構(gòu)在Struts中,已經(jīng)由一個名為ActionServlet的Servlet充當(dāng) 控制器(Controller)的角色,根據(jù)描述模型、視圖、控制器對應(yīng)關(guān)系的struts-config.xml的配置文件,轉(zhuǎn)發(fā)視圖(View)的請求,組裝響應(yīng)數(shù)據(jù)模型(Model)。在MVC的 模型(Model)部分,經(jīng)常劃分為兩個主要子系統(tǒng)(系統(tǒng)的內(nèi)部數(shù)據(jù)狀態(tài)與改變數(shù)據(jù)狀態(tài)的邏輯動作),這
40、兩個概念子系統(tǒng)分別具體對應(yīng)Struts里的ActionForm與Action兩個需要繼承實現(xiàn)超類。在這里,Struts可以與各種標(biāo)準(zhǔn)的數(shù)據(jù)訪問技術(shù)結(jié)合在一起,包括Enterprise Java Beans(EJB), JDBC與JNDI。在Struts的視圖(View)端,除了使用標(biāo)準(zhǔn)的JavaServer Pages(JSP)以外,還提供了大量的標(biāo)簽庫使用,同時也可以與其他表現(xiàn)層組件技術(shù)(產(chǎn)品)進行整合,比如Velocity Temp
41、lates,XSLT等。通過應(yīng)用Struts的框架,最終用戶可以把大部分的關(guān)注點放在自己的業(yè)務(wù)邏輯(Action)與 映射關(guān)系的配置文件(struts-config.xml)中。</p><p> 發(fā)展歷程在Java EE的Web應(yīng)用發(fā)展的初期,除了使用Servlet技術(shù)以外,普遍是在JavaServer Pages(JSP)的源代碼中,采用HTML與Java代碼混合的方式進行開發(fā)。因為這兩種方式不可避免的要把
42、表現(xiàn)與業(yè)務(wù)邏輯代碼混合在一起,都給前期開發(fā)與后期維護帶來巨大的復(fù)雜度。為了擺脫上述的約束與局限,把業(yè)務(wù)邏輯代碼從表現(xiàn)層中清晰的分離出來,2000年,Craig McClanahan采用了MVC的設(shè)計模式開發(fā)Struts。后來該框架產(chǎn)品一度被認(rèn)為是最廣泛、最流行JAVA的WEB應(yīng)用框架。</p><p> Struts 2的合并示意圖2006年,WebWork與Struts這兩個優(yōu)秀的Java EE Web框架(
43、Web Framework〕的團體,決定合作共同開發(fā)一個新的,整合了WebWork與Struts優(yōu)點,并且更加優(yōu)雅、擴展性更強的框架,命名為“Struts 2”,原Struts的1.x版本產(chǎn)品稱為“Struts 1”。至此,Struts項目并行提供與維護兩個主要版本的框架產(chǎn)品——Struts 1與Struts 2。很多開發(fā)人員認(rèn)為Struts目前尚不成熟,應(yīng)用的成本較高。 附帶的一點點建議: Struts的優(yōu)點主要集中體現(xiàn)在兩個方面:T
44、aglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。 Struts這個名字來源于在建筑和舊式飛機中使用的支持金屬架。它的目的是為了減少在運用MVC設(shè)計模型來開發(fā)Web應(yīng)用的時間。你仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過它將可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點,使開發(fā)者能更深入的了解其內(nèi)部實現(xiàn)機制。</p>
45、<p> Hibernate開源框架介紹</p><p> Hibernate是一種Java語言下的對象關(guān)系映射解決方案。 它是使用GNU寬通用公共許可證發(fā)行的自由、開源的軟件。它為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的映射,提供了一個使用方便的框架。 概覽它的設(shè)計目標(biāo)是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來。無論是從設(shè)計草案還是從一個遺留數(shù)據(jù)庫開始,開發(fā)人員都可以采用Hibe
46、rnate。</p><p> Hibernate不僅負(fù)責(zé)從Java類到數(shù)據(jù)庫表的映射(還包括從Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供了面向?qū)ο蟮臄?shù)據(jù)查詢檢索機制,從而極大地縮短的手動處理SQL和JDBC上的開發(fā)時間。.NET 上的 HibernateHibernate 有個在 .NET Framework 上的實現(xiàn)版本,稱為 NHibernate,在 ADO.NET Entity Framework
47、 發(fā)表之前,NHibernate 是在 .NET Framework 上經(jīng)常被使用的 ORM 實現(xiàn)。</p><p> Hibernate的架構(gòu)有三個主要部分組成:</p><p> 1連接管理:Hibernate的連接管理服務(wù)提供的數(shù)據(jù)庫連接的有效管理。數(shù)據(jù)庫連接是與數(shù)據(jù)庫進行交互,因為它需要大量資源的開放和關(guān)閉數(shù)據(jù)庫連接的最昂貴的部分。 </p><p>
48、 2交易管理:事務(wù)管理服務(wù)提供給用戶能夠同時執(zhí)行多個數(shù)據(jù)庫報表。</p><p> 3對象關(guān)系映射:對象關(guān)系映射是從對象映射模型的數(shù)據(jù)表示為關(guān)系數(shù)據(jù)模型的技術(shù)。這部分是用來休眠選擇,插入,更新和刪除記錄窗體的基礎(chǔ)表。當(dāng)我們傳遞一個對象到Session.save()的方法時,Hibernate讀取該對象的變量的狀態(tài),并執(zhí)行必要的查詢。 Hibernate是很好的工具盡可能對象關(guān)系映射的關(guān)注,但在連接管理和事
49、務(wù)管理方面,它在性能和能力缺乏。所以通常冬眠與其他正在使用的連接管理和事務(wù)管理工具。例如Apache的二溴氯丙烷是用于與Hibernate的連接池。Hibernate提供了使用中的靈活性。它被稱為“輕型”的體系結(jié)構(gòu)時,我們只使用對象關(guān)系映射的組成部分。而在“全面解決”的體系結(jié)構(gòu)的所有三個組件對象關(guān)系映射,連接管理和事務(wù)管理)的使用。 </p><p><b> 原文:</b></p&
50、gt;<p> Java Technology and SSH Frame</p><p> Duke, the Java mascotJames Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991. Java was originally designed f
51、or interactive television, but it was too advanced for the digital cable television industry at the time. The language was initially called Oak after an oak tree that stood outside Gosling's office; it went by the na
52、me Green later, and was later renamed Java, from a list of random words.Gosling aimed to implement a virtual machine and a language </p><p> Sun Microsystems released the first public implementation as Java
53、 1.0 in 1995. It promised "Write Once, Run Anywhere" (WORA), providing no-cost run-times on popular platforms. Fairly secure and featuring configurable security, it allowed network- and file-access restrictions
54、. Major web browsers soon incorporated the ability to run Java applets within web pages, and Java quickly became popular. With the advent of Java 2 (released initially as J2SE 1.2 in December 1998–1999), new versions had
55、 mult</p><p> In 1997, Sun Microsystems approached the ISO/IEC JTC1 standards body and later the Ecma International to formalize Java, but it soon withdrew from the process. Java remains a de facto standard
56、, controlled through the Java Community Process. At one time, Sun made most of its Java implementations available without charge, despite their proprietary software status. Sun generated revenue from Java through the sel
57、ling of licenses for specialized products such as the Java Enterprise System. Sun distin</p><p> Following Oracle Corporation's acquisition of Sun Microsystems in 2009–2010, Oracle has described itself
58、as the "steward of Java technology with a relentless commitment to fostering a community of participation and transparency".</p><p> PrinciplesThere were five primary goals in the creation of the
59、Java language:1.It should be "simple, object oriented, and familiar"、2.It should be "robust and secure".</p><p> 3.It should be "architecture neutral and portable"、4.It should
60、execute with "high performance"、5.It should be "interpreted, threaded, and dynamic".</p><p> Java PlatformMain articles: Java (software platform) and Java Virtual Machine</p><
61、p> One characteristic of Java is portability, which means that computer programs written in the Java language must run similarly on any supported hardware/operating-system platform. This is achieved by compiling the
62、Java language code to an intermediate representation called Java bytecode, instead of directly to platform-specific machine code. Java bytecode instructions are analogous to machine code, but are intended to be interpret
63、ed by a virtual machine (VM) written specifically for the host hard</p><p> A major benefit of using bytecode is porting. However, the overhead of interpretation means that interpreted programs almost alway
64、s run more slowly than programs compiled to native executables would. Just-in-Time compilers were introduced from an early stage that compile bytecodes to machine code during runtime.ImplementationsSun Microsystems offic
65、ially licenses the Java Standard Edition platform for Linux, Mac OS X, and Solaris. Although in the past Sun has licensed Java to Microsoft, the licen</p><p> Sun's trademark license for usage of the Ja
66、va brand insists that all implementations be "compatible". This resulted in a legal dispute with Microsoft after Sun claimed that the Microsoft implementation did not support RMI or JNI and had added platform-s
67、pecific features of their own. Sun sued in 1997, and in 2001 won a settlement of US$20 million, as well as a court order enforcing the terms of the license from Sun. As a result, Microsoft no longer ships Java with Windo
68、ws, and in recent versions </p><p> Java performance and garbage collectors:</p><p> Programs written in Java have a reputation for being slower and requiring more memory than those written in
69、 C. However, Java programs' execution speed improved significantly with the introduction of Just-in-time compilation in 1997/1998 for Java 1.1, the addition of language features supporting better code analysis (such
70、as inner classes, StringBuffer class, optional assertions, etc.), and optimizations in the Java Virtual Machine itself, such as HotSpot becoming the default for Sun's JVM in 200</p><p> Some platforms o
71、ffer direct hardware support for Java; there are microcontrollers that can run java in hardware instead of a software JVM, and ARM based processors can have hardware support for executing Java bytecode through its Jazell
72、e option.</p><p> Automatic memory managementJava uses an automatic garbage collector to manage memory in the object lifecycle. The programmer determines when objects are created, and the Java runtime is re
73、sponsible for recovering the memory once objects are no longer in use. Once no references to an object remain, the unreachable memory becomes eligible to be freed automatically by the garbage collector. Something similar
74、 to a memory leak may still occur if a programmer's code holds a reference to an object that</p><p> One of the ideas behind Java's automatic memory management model is that programmers can be spare
75、d the burden of having to perform manual memory management. In some languages, memory for the creation of objects is implicitly allocated on the stack, or explicitly allocated and deallocated from the heap. In the latter
76、 case the responsibility of managing memory resides with the programmer. If the program does not deallocate an object, a memory leak occurs. If the program attempts to access or deall</p><p> Garbage collec
77、tion may happen at any time. Ideally, it will occur when a program is idle. It is guaranteed to be triggered if there is insufficient free memory on the heap to allocate a new object; this can cause a program to stall mo
78、mentarily. Explicit memory management is not possible in Java.</p><p> Java does not support C/C++ style pointer arithmetic, where object addresses and unsigned integers (usually long integers) can be used
79、interchangeably. This allows the garbage collector to relocate referenced objects and ensures type safety and security.</p><p> As in C++ and some other object-oriented languages, variables of Java's pr
80、imitive data types are not objects. Values of primitive types are either stored directly in fields (for objects) or on the stack (for methods) rather than on the heap, as commonly true for objects (but see Escape analysi
81、s). This was a conscious decision by Java's designers for performance reasons. Because of this, Java was not considered to be a pure object-oriented programming language. However, as of Java 5.0, autoboxing</p>
82、<p> A class that is not declared public may be stored in any .java file. The compiler will generate a class file for each class defined in the source file. The name of the class file is the name of the class, wi
83、th .class appended. For class file generation, anonymous classes are treated as if their name were the concatenation of the name of their enclosing class, a $, and an integer. </p><p> The keyword public de
84、notes that a method can be called from code in other classes, or that a class may be used by classes outside the class hierarchy. The class hierarchy is related to the name of the directory in which the .java file is loc
85、ated.</p><p> The keyword static in front of a method indicates a static method, which is associated only with the class and not with any specific instance of that class. Only static methods can be invoked
86、without a reference to an object. Static methods cannot access any method variables that are not static.</p><p> The keyword void indicates that the main method does not return any value to the caller. If a
87、 Java program is to exit with an error code, it must call System.exit() explicitly.</p><p> The method name "main" is not a keyword in the Java language. It is simply the name of the method the Ja
88、va launcher calls to pass control to the program. Java classes that run in managed environments such as applets and Enterprise JavaBean do not use or need a main() method. A java program may contain multiple classes that
89、 have main methods, which means that the VM needs to be explicitly told which class to launch from.</p><p> The main method must accept an array of String objects. By convention, it is referenced as args al
90、though any other legal identifier name can be used. Since Java 5, the main method can also use variable arguments, in the form of public static void main(String... args), allowing the main method to be invoked with an ar
91、bitrary number of String arguments. The effect of this alternate declaration is semantically identical (the args parameter is still an array of String objects), but allows an alterna</p><p> The Java launch
92、er launches Java by loading a given class (specified on the command line or as an attribute in a JAR) and starting its public static void main(String[]) method. Stand-alone programs must declare this method explicitly. T
93、he String[] args parameter is an array of String objects containing any arguments passed to the class. The parameters to main are often passed by means of a command line.</p><p> Criticism of Java:</p>
94、;<p> A number of criticisms have been leveled at Java programming language for various design choices in the language and platform. Such criticisms include the implementation of generics, the handling of unsigne
95、d numbers, the implementation of floating-point arithmetic, and security vulnerabilities.</p><p> Class libraries: </p><p> Java Platform and Class libraries diagramJava libraries are the comp
96、iled bytecodes of source code developed by the JRE implementor to support application development in Java. Examples of these libraries are: </p><p> The core libraries, which include: </p><p>
97、 Collection libraries that implement data structures such as lists, dictionaries, trees, sets, queues and double-ended queue, or stacks</p><p> XML Processing (Parsing, Transforming, Validating) libraries&l
98、t;/p><p><b> Security</b></p><p> Internationalization and localization libraries</p><p> The integration libraries, which allow the application writer to communicate wi
99、th external systems. These libraries include: </p><p> The Java Database Connectivity (JDBC) API for database access</p><p> Java Naming and Directory Interface (JNDI) for lookup and discovery
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機外文翻譯---jsp技術(shù)與主流java+ee開源框架(ssh)技術(shù)簡介
- 計算機專業(yè) java外文翻譯
- 外文翻譯---jsp技術(shù)與主流java+ee開源框架(ssh)技術(shù)簡介
- 外文翻譯---java技術(shù)及ssh框架和jsp技術(shù)的介紹
- 計算機外文翻譯---jsp應(yīng)用框架
- 計算機外文翻譯---jsp 應(yīng)用框架
- 計算機類外文文獻翻譯---java核心技術(shù)
- 計算機科學(xué)與技術(shù)外文翻譯
- 計算機外文翻譯--java編程語言的介紹
- 計算機專業(yè)英語java介紹外文翻譯
- 計算機專業(yè)外文翻譯---jsp 應(yīng)用框架
- 計算機專業(yè)外文翻譯--計算機
- 計算機科學(xué)與技術(shù)外文資料翻譯
- 計算機外文翻譯--java抽象窗口工具包
- 計算機外文翻譯---計算機引論
- [雙語翻譯]--計算機外文翻譯---安全型java servlet的開發(fā)
- java及ssh框架與jsp技術(shù)介紹
- 計算機控制技術(shù)外文翻譯
- [雙語翻譯]計算機專業(yè)外文翻譯—云計算中的java web部署
- 計算機科學(xué)與技術(shù)外文文獻翻譯
評論
0/150
提交評論