【正文】
through the selling of licenses for specialized products such as the Java Enterprise System. Sun distinguishes between its Software Development Kit (SDK) and Runtime Environment (JRE) (a subset of the SDK)。 Hibernate的體系結(jié)構(gòu)外文原文(復印件)History Duke, the Java mascotJames Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991. Java was originally designed for 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 Gosling39。它被稱為“輕型”的體系結(jié)構(gòu)時,我們只使用對象關(guān)系映射的組成部分。例如Apache的二溴氯丙烷是用于與Hibernate的連接池。 Hibernate是很好的工具盡可能對象關(guān)系映射的關(guān)注,但在連接管理和事務(wù)管理方面,它在性能和能力缺乏。這部分是用來休眠選擇,插入,更新和刪除記錄窗體的基礎(chǔ)表。 2交易管理:事務(wù)管理服務(wù)提供給用戶能夠同時執(zhí)行多個數(shù)據(jù)庫報表。Hibernate的架構(gòu)有三個主要部分組成:1連接管理:Hibernate的連接管理服務(wù)提供的數(shù)據(jù)庫連接的有效管理。Hibernate不僅負責從Java類到數(shù)據(jù)庫表的映射(還包括從Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供了面向?qū)ο蟮臄?shù)據(jù)查詢檢索機制,從而極大地縮短的手動處理SQL和JDBC上的開發(fā)時間。 概覽它的設(shè)計目標是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來。 它是使用GNU寬通用公共許可證發(fā)行的自由、開源的軟件。Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點,使開發(fā)者能更深入的了解其內(nèi)部實現(xiàn)機制。它的目的是為了減少在運用MVC設(shè)計模型來開發(fā)Web應用的時間。Taglib是Struts的標記庫,靈活動用,能大大提高開發(fā)效率。很多開發(fā)人員認為Struts目前尚不成熟,應用的成本較高。Struts 2的合并示意圖2006年,WebWork與Struts這兩個優(yōu)秀的Java EE Web框架(Web Framework〕的團體,決定合作共同開發(fā)一個新的,整合了WebWork與Struts優(yōu)點,并且更加優(yōu)雅、擴展性更強的框架,命名為“Struts 2”,“Struts 1”。為了擺脫上述的約束與局限,把業(yè)務(wù)邏輯代碼從表現(xiàn)層中清晰的分離出來,2000年,Craig McClanahan采用了MVC的設(shè)計模式開發(fā)Struts。發(fā)展歷程在Java EE的Web應用發(fā)展的初期,除了使用Servlet技術(shù)以外,普遍是在JavaServer Pages(JSP)的源代碼中,采用HTML與Java代碼混合的方式進行開發(fā)。在Struts的視圖(View)端,除了使用標準的JavaServer Pages(JSP)以外,還提供了大量的標簽庫使用,同時也可以與其他表現(xiàn)層組件技術(shù)(產(chǎn)品)進行整合,比如Velocity Templates,XSLT等。在MVC的 模型(Model)部分,經(jīng)常劃分為兩個主要子系統(tǒng)(系統(tǒng)的內(nèi)部數(shù)據(jù)狀態(tài)與改變數(shù)據(jù)狀態(tài)的邏輯動作),這兩個概念子系統(tǒng)分別具體對應Struts里的ActionForm與Action兩個需要繼承實現(xiàn)超類。它通過采用Java Servlet/JSP技術(shù),實現(xiàn)了基于Java EE Web應用的ModelViewController〔MVC〕設(shè)計模式的應用框架〔Web Framework〕,是MVC經(jīng)典設(shè)計模式中的一個經(jīng)典產(chǎn)品。Spring結(jié)構(gòu)框架Struts技術(shù)介紹Struts項目是Apache軟件基金會(ASF)贊助的一個開源項目。Spring卻具有能夠讓這部分工作變得簡單的能力。值得注意的是,Spring 中間層可以輕易地結(jié)合于任何基于 MVC 框架的網(wǎng)頁層,例如 Struts,WebWork,或 Tapestry,提供諸如事務(wù)管理等服務(wù)的面向方面編程框架。靈活的基于核心 Spring 功能的 MVC 網(wǎng)頁應用程序框架。利用眾多的翻轉(zhuǎn)控制方便特性來全面支持,解決了許多典型的Hibernate集成問題。并且面向JDBC的異常與Spring 通用數(shù)據(jù)訪問對象(Data Access Object)異常等級相一致。終止39。JDBC 抽象層提供了有針對性的異常等級(不再從SQL異常中提取原始代碼),簡化了錯誤處理,大大減少了程序員的編碼量。數(shù)據(jù)庫事務(wù)的一般化抽象層,允許聲明式(Declarative)事務(wù)管理器,簡化事務(wù)的劃分使之與底層無關(guān)。Spring 中包含的關(guān)鍵特性:強大的基于 JavaBeans 的采用控制翻轉(zhuǎn)(Inversion of Control,IoC)原則的配置管理,使得應用程序的組建更加快捷簡易。該框架基于 Expert OneonOne Java EE Design and Development(ISBN 0764543857)一書中的代碼,最初由 Rod Johnson 和 Juergen Hoeller等開發(fā)。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο螅哂衅脚_無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應用程序的開發(fā)變得迅速和容易。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。JSP技術(shù)有點類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。2004年,IBM和BEA公司準備聯(lián)合對官方的Java開源軟件工程進行支持,但是2005年初,sun公司拒絕了這個支持。API的設(shè)定由sun公司和其他公司通過JCP(Java社區(qū)程序)決定。每個包中包含有相關(guān)的接口和類。Java的接口功能可以提供同樣的功能,但是又不會很復雜。IBM有一篇有關(guān)Java存儲器回收機制比不激活垃圾收集機制的C++存儲器處理快數(shù)倍的技術(shù)文章,而著名的Java技術(shù)書籍《Java編程思想》(Thinking in Java)也有一段論述Java存儲器及性能達到甚至超過C++的章節(jié)。但是總體來講,自動垃圾收集機制要安全和簡單許多。}在循環(huán)開始之前,字符串str已經(jīng)不會再用到了,但未將這個參考指向null,因此字符串str無法被gc所回收。(s)。注意程序員不需要修改finalize方法,自動垃圾收集也會發(fā)生作用。對象的創(chuàng)建和放置都是在存儲器堆棧上面進行的。除此之外,由于智能指針是一個基于模板的功能,所以沒有經(jīng)驗的程序員在需要使用多態(tài)特性進行自動清理時也可能束手無策。C++中也可以使用“智能指針”(Smart Pointer)或者使用C++托管擴展編譯器的方法來實現(xiàn)自動化存儲器釋放,智能指針可以在標準類庫中找到,而C++托管擴展被微軟的Visual C++ 。因此如果同一存儲器地址被刪除兩次的話,程序會變得不穩(wěn)定,甚至崩潰。如果對象是在堆棧上分配的,而程序員又忘記進行刪除,那么就會造成存儲器泄漏(Memory Leak)。垃圾回收機制自動垃圾回收(Garbage Collection)C++語言被用戶詬病的原因之一是大多數(shù)C++編譯器不支持垃圾收集機制。但最近已經(jīng)有了許多用純Java編寫的3D游戲,其效果與用C語言編寫的不相上下,例如“合金戰(zhàn)士”(英文名:Chrome)。如果需要間接調(diào)用這些底層功能的話,就需要使用JNI(Java本地接口)來調(diào)用本地代碼,而間接訪問意味著頻繁調(diào)用這些特性時性能損失會很大。所以也有類似問題。目前,Java已經(jīng)使用更先進的HotSpot技術(shù)來代替JIT技術(shù),Java的性能有了更進一步的提升。JIT編譯需要很多時間,對于運行時間不長或者代碼很多的大型程序并不適宜。一些新版本的JVM使用JustInTime(JIT)編譯器,在加載字節(jié)碼的時候?qū)⑵渚幾g成針對運行環(huán)境的本地代碼來實現(xiàn)一些本地編譯器的優(yōu)化特性。盡管如此,仍然有許多人認為Java的性能低。如果JVM的實現(xiàn)比較優(yōu)化的話,那么這些功能甚至可以增加存儲器分配的性能。Java語言的一些特性不可避免的有額外的性能代價,例如數(shù)組范圍檢查、運行時類型檢查等等。據(jù)IBM的數(shù)據(jù),在同樣的硬件上2001年時的IBM JDK版本的性能是1996年的JDK版本的十倍左右。蘋果電腦已經(jīng)提供了優(yōu)化過的Java運行時程序,包含了Mac OS X的經(jīng)典Aqua接口風格。Swing則是完全用Java語言所寫的程序,避免了接口元素重復的問題,只使用所有平臺都支持的最基本的繪圖機制。類庫問題使用Swing平臺編寫的帶有GUI(圖形用戶接口)的程序和其他原始程序非常不同。但是用Java實現(xiàn)的語言Groovy可以進行運算符重載。但是Java可以使用接口類,把多重繼承可能導致的風險減少到最小。Java是一種單層繼承的語言。語言問題有些程序師不喜歡原始類型(primitive type)和類(class)的分離,尤其是那些曾經(jīng)使用過Smalltalk和Ruby的程序師。作為一種已經(jīng)創(chuàng)建的新技術(shù),Java顯然綜合了很多語言的特性,比如C++、C語言、Python等等。一些人覺得Java在面向?qū)ο笊厦孀龅臎]有Ruby和Smalltalk純粹。整體性問題并不是所有的工程和環(huán)境需要企業(yè)級別的復雜性,比如一個簡單的個人網(wǎng)站或者獨自編程的程序師所寫的程序。很多人認為Java語言做到了它承諾的一切。很多服務(wù)器端軟件都使用Java或相關(guān)技術(shù)創(chuàng)建。有些程序員對此非常頭疼,他們嘲笑Java的程序不是“一次編譯,到處運行”,而是“一次編譯,到處調(diào)試”。所有這些技術(shù)都改善了代碼的運行速度,但是又不會讓程序的體積變得失常。從JIT技術(shù)開始,Java的程序都經(jīng)過一次轉(zhuǎn)換之后才變成機器碼。Java語言在最開始應用的時候是沒有解釋層的,所有需要編譯的代碼都直接轉(zhuǎn)換成機器的原始代碼。所以這些程序的運行效率比C語言和C++要低很多,用戶也對此頗有微詞。但是升陽公司和其他使用Java運行時系統(tǒng)的公司對于微軟的操作對用戶提供無償?shù)牡谌讲寮统绦蛑С?。升陽最終贏得了官司,獲得了大約兩千萬美元的賠償,法院強制要求微軟執(zhí)行升陽公司關(guān)于Java的許可要求。并且GCJ目前只支持部分的Java API。有些編譯器,比如GCJ,可以自動生成原始代碼而不需要解釋層。之后,Java虛擬機會打開標準庫,進行數(shù)據(jù)(圖片、線程和網(wǎng)絡(luò))的訪問工作。通過JVM的虛擬機才能在電腦系統(tǒng)執(zhí)行Java應用程序(Java Application), Framework的情況一樣,所以電腦上沒有安裝JVM,那么這些程序?qū)⒉荒軌驁?zhí)行。這個特性經(jīng)常被稱為“一次編譯,到處運行”。很多開源軟件社區(qū)正在計劃給軟件作者提供更多的類來讓軟件的二次開發(fā)變得簡便。軟件的二次開發(fā)者想自己為軟件開發(fā)插件以增強功能的時候,絕對不想看到混亂的開發(fā)代碼和管理計劃。面向?qū)ο笤O(shè)計另外一個目標就是能產(chǎn)生很多的有關(guān)聯(lián)的類,可以讓軟件的再開發(fā)變得簡單。對于數(shù)據(jù)結(jié)構(gòu)的改變需要和代碼進行通信然后操作,反之亦然。代碼和數(shù)據(jù)的實際集合體叫做“對象”。面向?qū)ο驤ava的特點之一就是面向?qū)ο螅浅绦蛟O(shè)計方法的一種。一般情況下說Java時并不區(qū)分指的是哪個部分。Java語言之所以被開發(fā),是要達到以下五個目的:應當使用面向?qū)ο蟪绦蛟O(shè)計方法學、應當允許同一程序在不同的計算機平臺執(zhí)行、應當包括內(nèi)建的對計算機網(wǎng)絡(luò)的支持、應當被設(shè)計成安全地執(zhí)行遠端代碼、應當易于使用,并借鑒以前那些面向?qū)ο笳Z言(如C++)的長處。Java開放源代碼項目2006年SUN在JavaOne公布Java 開放源代碼項目,并推出OpenJDK計劃。但是隨著計算機計算能力、網(wǎng)絡(luò)帶寬在10年中取得了很大的進步,同時虛擬機和編譯器的質(zhì)量得到了提高,許多應用程序得到了廣泛的使用,包括:開源軟件:NetBeans和Eclipse等軟件開發(fā)工具、JEdit、Azureus BitTorrent客戶端、JNode操作系統(tǒng)、Apache軟件基金會的Ant、Derby、Hadoop、Jakarta、POI和Tomcat、JBoss和GlassFish應用服務(wù)器;商用軟件:EIOffice(永中Office)、純Java 3D游戲合金戰(zhàn)士Chrome、IBM Websphere、ColdFusion和WebLogic。很多網(wǎng)站在后端使用JSP和其他的Java技術(shù)。與此相反。它在簡單交互性動畫方面的用途已經(jīng)完全被Adobe公司的Flash排擠,2005年Java傾向只被用于雅虎游戲那樣的更為復雜的應用程序。1996年1月,升陽公司成立了Java業(yè)務(wù)集團,專門開發(fā)Java技術(shù)。這個發(fā)布是與網(wǎng)景公司的執(zhí)行副總裁馬克升陽公司的科學指導約翰[編輯] Java和瀏覽器1994年10月,HotJava和Java平臺為公司高層進行演示。于是同年,Oak被改名為Java。諾頓寫了一個小型萬維網(wǎng)瀏覽器,WebRunner,后來改名為HotJava。他們認為隨著Mosaic瀏覽器的到來,因特網(wǎng)正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網(wǎng)中看到的。羅斯因和埃里克喬伊、帕特里克蓋吉、詹姆斯與3DO公司的另外一筆關(guān)于機頂盒的交易也沒有成功,由于