若是有同窗還想買書,請訪問鏈接http://item.jd.com/11944458.htmlhtml
若是買了書,可是沒有收到,請及時和咱們聯繫,站內信或QQ均可以。前端
======================================================================java
目錄:
數據庫
紅薯的序我不明白爲何相比於其餘的編程語言,Java的世界充滿了各類框架和架構。多是由於Java太過於靈活,或者是由於官方對Java EE規範所提供的 API 都是很是底層的東西,不多牽扯到具體的業務需求。雖然這樣能夠在必定程度上保證規範自己的兼容性和適應性,但也所以致使了用Java開發一些具體業務應用時顯得過於繁瑣,不夠輕便和快捷。因而出現了Struts等開源框架,再就是後來Javaer們耳熟能詳的SSH三大框架,直至今天琳琅滿目的各類開發框架。全部的這些框架,其惟一的目的就是簡化業務邏輯的開發,其手法無不是利用各類各樣的設計模式對 API 的各類層次進行封裝。設計模式 我曾經發文公開反對初學者在對 Java 知之甚少的狀況下學習各類框架。主要緣由有兩點:一是知其然而不知其因此然;二是更換框架後學習成本很高。由於這樣先入爲主的思想做怪,當本書做者(咱們姑且就叫他的網名悠然吧)第一次將他的Tiny框架提交到「開源中國」的時候,我並無過多的關注。哦,僅僅是又一個新的Java EE框架而已。緩存 Tiny 再次進入個人視線是在「開源中國」社區圍繞該項目愈來愈多的關注和討論,並且不斷出如今咱們的各類開源項目榜單中。另外,Tiny開源框架不一樣於其餘開源框架的突出特色是代碼提交很是活躍。能夠絕不誇張地說是「開源中國」GIT庫中Commits提交最多的開源者。固然還有另一個很是重要的緣由是悠然寫了一篇很是專業的「噴文」,該文章很是專業地指出我本人一個開源項目J2Cache中存在的各類設計的不足,專業到讓我無言以對,甚至很有「挑釁」的意味。如此專業的設計思路及對代碼近乎完美的追求讓我相信Tiny必然也會是在這種要求下的產物。此外,其團隊利用該框架快速開發的幾個應用類項目也證實了其在開發效率上的提高是很是顯著的。安全 這本書主要是經過對比各類流行的框架和技術來展現Tiny框架強悍又便利的優勢。從前端模板展示、數據庫訪問、緩存,再到文件系統、服務分層、流程引擎、元數據和RESTful,同時還延伸到了系統擴展,能夠說是面面俱到。基本上你在開發Java EE應用時涉及的絕大多數技術層面上的內容本書都會詳盡講述。網絡 前面我說過反對初學者一開始從框架入手進行學習。這本書在介紹Tiny框架的同時對與其對應的一些Java EE開源框架或技術也作了簡單的講解,同時包括對同類產品的分析。以悠然如此善於深刻分析各種產品的技術來看,可知對這些問題領域的分析及其解決方案即是本書的精華所在,不得不推薦!架構 最後我想提一下:沒有最好的框架,只有最適合本身的框架。當你面對數百個Java框架一臉茫然的時候,考慮一下這麼幾個要素:是否打心眼裏喜歡?是否足夠簡單和輕便,而不是充斥一堆你根本用不上的特性?項目自己在社區上是否足夠活躍?做者本人長得帥不帥(開個玩笑)?……若是上面全部的答案都是否認的,那就本身造一個吧!
開源中國創始人 紅薯 |
特贊CTO黃勇的序十年前,我上大學的時候,就據說Java這門計算機語言已經很流行了。Java分爲J2SE、J2EE和J2ME這三大平臺,分別對應桌面、Web和移動這三大領域。當年我爲了找到一份高薪工做,放棄了本身所擅長的C++,也學着別人開始學習Java,尤爲是學習當年市場需求量最大的J2EE技術。我學了JSP、Servlet和EJB這幾種J2EE核心技術,也學了經典的MVC框架Struts和最流行的ORM框架Hibernate。想當年,我能夠熟練地使用JSP+Struts+Hibernate開發一個小型Java Web應用程序,輕鬆地應對畢業設計,本身也能夠接點私活賺點外快。但對於大型企業級應用而言,首選技術仍是EJB。所謂企業級就是一個既安全又複雜的技術,由於它須要考慮到多方面的問題,因此會帶來一系列的複雜問題。但凡用過EJB的人,都會感覺到那是一場痛苦的經歷。而Spring的到來,改變了這一切,給企業級J2EE帶來了「春天」,Spring+Struts+Hibernate三個框架組合也被普遍地應用於Web開發,而且你們稱其爲SSH組合。 十年後,Java還能位居編程語言排行榜首,我真的慶幸本身當年的選擇是正確的。之前的J2EE,已更名爲Java EE,也許這樣的命名會更加有意義。而之前的SSH,卻顯得有些重量級了。也許是由於它們自身的特性愈來愈多,或者是由於輕量級的框架愈來愈多,好比我開源的Smart框架,就是一款輕量級Java Web框架,爲了講明白該框架的開發過程,我也寫過一本叫作《架構探險》的書(一不當心就爲本身作了一個廣告,仍是言歸正傳吧)。不少大型企業級應用會放棄掉一些技術,好比Struts、Hibernate和JSP等,但Spring目前仍然仍是主流,尤爲是Spring MVC,足以取代Struts。此外,輕量級JDBC框架MyBatis(之前叫作iBatis)也能夠取代Hibernate,因此如今企業級Java EE架構的首選變成了Spring+Spring MVC+MyBatis,簡稱SSM。 無論是SSH仍是SSM,這些都只是開發框架而已,並不是技術解決方案。你們知道,企業級應用是一個至關複雜的應用系統,須要的不只僅是一個開發框架,更是一系列的技術解決方案。這些解決方案包括虛擬文件系統、緩存、文件處理框架、模板語言、數據庫訪問層、數據庫水平擴展、服務層、流程引擎、元數據、展示層、Web層、統一界面框架、RESTful和模塊化等,這些纔是企業級應用的核心需求。Tiny框架將這些需求迎刃而解,代碼徹底開源,而且在國內有良好的技術社區網站(tinygroup.org)。更重要的是,Tiny框架的做者是一位樂於分享的技術專家,在開源中國網站(oschina.net)上分享了大量的技術文章。如今Tiny團隊將他們幾年的研究成果成書,並毫無保留地分享給各位技術愛好者。我也很是榮幸地提早看到了全書內容,相信本書必定會讓您在架構和設計方面有所收穫。 使用Tiny,可讓開發者從複雜的技術細節跳出來,,而將精力集中到業務上,從而節省不少時間。熱愛研究技術的朋友們也能夠經過閱讀本書獲取技能上的提高,成爲一名優秀的架構師。 祝願Tiny的未來會愈來愈好!開源改變生活,開源改變世界!
特贊(tezign.com)CTO 黃勇 2016.1.31於上海 |
恆生電子CTO範徑武的序
最近《三體》很是火,在書中說到了三體文明將質子作維護展開的情形,甚至展開的質子能夠覆蓋整個星球。 其實在軟件應用實踐過程當中,也存在多種不一樣層次的維度。例如,從用戶來看,主要是人機交互上的一些感觀;從業務角度來看,主要是各類不一樣的業務功能;從架構角度來看,軟件又分屬於不一樣的獨立的體系,這些體系的相互做用最終構成了整個軟件;從機器執行過程來看,又都是一些0101的二進制代碼流或數據流…… 若是直接使用基礎開發語言和一些基礎類庫來進行開發,當軟件比較小的時候沒有任何問題。可是做爲一個企業級應用來講,若是仍是採用一樣的模式,那麼後果將會是不堪設想的。我見過許多業務上很是成功,可是因爲沒有良好的架構支撐而已經崩潰或走向崩潰的系統。真正優秀和成功的軟件產品,必須有一個良好的架構支撐,才能夠實現持續的發展和進步。 本書得益於做者的深厚功底及勇敢實踐,並以企業應用中遇到的十多個真實應用場景做爲主題進行架構實踐,對這些主題按問題概述、分析問題、解決問題的過程進行了有益探索。雖然不能說全部的解決方案必定都是最優的,可是應該說都體現了做者在這方面所作的努力。「一花獨放不是春,萬紫千紅春滿園。」 ,也歡迎有更多、更好的企業級架構方面的實踐書籍涌現出來,促進企業級Java EE應用的發展。
恆生電子執行總裁/CTO 範徑武 2016年1月25日於杭州 |
自序本書的書名是《企業級Java EE架構設計精深實踐》。從書名能夠看到幾個關鍵詞:企業級、Java EE、架構和實踐。簡單地說,本書是一本基於Java EE技術路線,面向企業級應用,解決企業級應用架構問題,並以實踐爲主的書籍。 目前市場上已經有了許多Java EE領域的書籍,涵蓋了Java EE規範、Java EE的各類流行先後臺框架等。這些書籍有一些寫得很是好,比較全面地覆蓋了企業級Java EE應用的方方面面。所以本書不會講解Java相關的基礎知識,不會講解Java EE規範方面的知識,也不會花大量篇幅介紹流行框架的使用及技巧,而是把重點放在須要解決的一些企業應用中的問題及其解決方案和實踐過程,讓讀者跟隨筆者的思路一塊兒實踐。筆者不能保證書中全部的實踐都是最優解,但必定是至關不錯的解。 企業級應用是本書內容的核心,那麼什麼是企業級應用呢?這個問題自己就沒有標準答案。可是企業級應用涉及的一些領域仍是能夠列舉的。 l 數據持久化:這裏的數據泛指結構化和非結構化數據。這些數據從產生到消亡有着漫長的建立、更新、查詢和刪除的生命週期,有的數據甚至要存在許多年。這些數據須要爲避免丟失而進行存儲操做,爲高效利用而進行緩存加載操做,再加上數據自身的CRUD等操做,在上述過程當中就須要解決各類各樣的問題。 l 海量併發訪問:對於小的應用系統,訪問者可能就是一個或幾我的,稍大點的系統訪問者有上百人。可是對於企業級應用尤爲是互聯網級應用來講,其註冊用戶、在線用戶和併發請求都是巨大的。應用請求數較少和應用請求數巨大時的架構模式是有巨大差別的,由此也會引入許多的架構問題。 l 海量數據:對於企業級應用來講,百萬級數據只不過是起步,千萬甚至數十億條數據都是常見的。在數據規模比較小的時候不存在問題,而在數據規模比較大的時候就會出現嚴重的性能問題。爲了保證在海量應用的情景下也可使用,這時原有的數據架構就須要進行重構。 l 應用規模龐大:應用的規模越大,開發、測試、集成和維護起來就越困難。筆者就親眼見到過一個項目,業務方面是很是出色的,可是隨着產品的規模愈來愈大,而項目的開發方式沒法適應,致使整個項目沒法繼續進行,以失敗而了結。因此如何讓應用隨着規模的變大,其開發、測試、集成和維護成本只是出現等比例增加,而不是隨着應用規模的變大產生指數級增加,這就變得很是重要了。 l 界面需求複雜:隨着應用規模的變大,企業級應用的界面也愈來愈多。而在企業級應用中,又須要對使用權限、界面一致性和界面的易集成性等有很是高的要求。因此在企業級應用中,界面層有一個良好解決方案是很是有挑戰性的。 l 與第三方系統協做:與小的應用不一樣,企業級應用它的生成周期比較長,一個企業當中又有多個不一樣方面的系統同時存在,這些系統之間每每須要有數據或服務協做。可是因爲不一樣的應用多是來自於不一樣廠商採用不一樣開發語言和不一樣數據庫開發的,因此這就對它們協同運做產生了許多問題。 總之,企業級應用能夠理解成業務複雜、規模巨大、數據種類多、數據量大、訪問請求大、生命週期長和併發請求巨大的應用。正是因爲上述特色而產生了許許多多的問題,而這些問題的解決方案每每是有衝突的,所以如何藝術性地解決這些問題就每每須要從架構上想辦法。 本書重點介紹介紹的Tiny框架是Tiny開源小組歷經5年業餘時間,孜孜不倦地投入與堅持的產物。它是經過團隊堅苦卓絕的努力所構建的體系完整、內容龐大的企業級開源框架。筆者和Tiny團隊在解決這些問題時作了大量的嘗試和實踐,在諸多領域都有很是專業的解決方案,咱們很是願意經過本書與讀者分享。 本書特點1.基於原創,開拓思路 本書有大量的原創實踐及原理性講述,無論讀者用不用本書中的框架,均可以對企業級Java EE架構中的一些技術及其解決方案有較爲深刻的理解,這對於讀者開拓思路,避免踩一樣的「坑」有很是強的借鑑做用。 2.涵蓋普遍,講解深刻 本書介紹的內容都是當前主流框架和優秀技術,涵蓋緩存、文件處理、模板語言、服務層、數據庫架構、數據庫水平擴展、元數據、Web架構和前端界面等Java EE領域常常用到的知識,涉及企業級應用架構開發的方方面面。這些內容的講解不是泛泛而談,而是有至關的深度。 3.內容實用,注重實踐 本書內容很是注重知識的實用性和可操做性,這些內容都是做者多年以來構建Java EE開發框架實踐過程當中的寶貴經驗聚集而成。本書每章都給出了實踐性很強的開發案例供讀者理解。 4.思路清晰,文筆簡練 本書每章按照問題背景、需求分析、解決思路、架構設計、實踐示例和章節總結的順序行文,絲絲入扣,符合人們的認知規律。並且本書行文風格樸實,文筆簡練,知識的講解由淺入深、按部就班,即使是初學者,只要肯用心也會有所收穫。 5.不同凡響,切中要害 本書有至關多的實踐具備「反模式」的待質,也就是說與常見的解法不同,再輔之以簡單的示例,可讓讀者很是容易理解其設計精要,有腦洞大開之感受。 6.理論與實踐齊抓,局部與總體並重 本書注重問題的解決思路和開發細節,既介紹了企業級Java EE架構的設計思想,也兼顧了應用的具體實踐,避免了學習過程當中理論與實踐的脫節,連貫而統一。本書每章都有獨立的測試用例,最後還提供了完整的Web開發案例,這樣經過先局部後總體的方式,可讓讀者更好地理解Java EE開發架構。 7.編排科學,適用面廣 本書內容編排既可讓初學者對Java EE架構有總體的認知,也可讓那些學有餘力、經驗豐富的開發人員深刻鑽研本身感興趣的內容。不管是哪一個層次的讀者,閱讀完本書後都會有所收穫,甚至對之前本身感受深不可測的問題有豁然開朗的感受。 本書內容本書正文共13章,採用問題背景、需求分析、解決思路、架構設計、實踐示例和章節總結的順序組織內容。下面簡單介紹一下每章的內容。 第1章 虛擬文件系統實踐 本章從Apache VFS框架存在的內存泄露Bug提及,引入企業級應用常見的虛擬文件系統的概念,並介紹了Apache VFS框架和Tiny VFS框架。另外,還講解了VFS的設計思路,介紹了VFS管理器、虛擬文件接口和模式提供者等概念,並給出本地文件、JAR和FTP的實踐用例。 第2章 緩存實踐 本章以Java EE應用遇到的性能問題做爲話題,引導讀者瞭解緩存技術的重要性。在講解一個實際項目緩存的代碼變遷過程當中,天然而然地列舉了對現有緩存方案的改進:業務代碼與緩存框架分離;具體緩存實現的切換不影響業務開發;支持XML配置等。本章介紹了兩種緩存架構:字節碼緩存方案和動態代理緩存方案,並對比了二者的優缺點。但願讀者經過閱讀本章內容,可以對開發企業級應用有新的心得體會。 第3章 文件處理框架實踐 本章介紹了文件處理框架,能夠有效地解決Java EE應用模塊化致使的各類配置文件分散在不一樣模塊而帶來的處理這些資源難度大的問題。在介紹Tiny文件處理框架的過程當中,請仔細閱讀文件掃描器接口、文件掃描器主入口和定時掃描器的介紹,理解框架如何把文件的掃描、文件的變化、文件的遍歷等與文件的實際處理分離,體會「開—閉」原則的具體運用。 第4章 模板語言實踐 本章介紹了模板語言及其在Java EE領域的實踐開發。爲了便於讀者理解,筆者先介紹模板語言的概念、原理和應用場景,並列舉了常見的模板語言Velocity、FreeMarker和Tiny,比較了三者的優點和不足。特別是在設計開發的章節,按模板語言的架構、語法解析和渲染機制的順序,從零開始講解如何構建一種模板語言。經過對本章內容的學習,有能力的讀者徹底能夠嘗試擴展模板語言。 第5章 數據庫訪問層實踐 本章首先介紹了應用框架的三層架構,而後引入了數據庫訪問層的相關概念。爲了便於讀者理解數據庫訪問層,筆者講解了業界經常使用的數據庫訪問層框架Hibernate、Ibatis和JPA,以及DSL風格的數據庫訪問層JEQUEL、JOOQ和Querydsl。經過比較它們的優缺點,分析了Tiny團隊開發TinyDsl的緣由,而後詳細說明TinyDsl的實踐過程。最後經過具體示例說明各類數據庫訪問層框架的用法和配置。 第6章 數據庫擴展實踐 本章側重介紹數據庫水平擴展方案。首先從互聯網的發展所致使的業務應用壓力日益增長,從而讓讀者認識到數據庫水平擴展方案對Java EE企業級應用是很是合理的需求。論證了水平擴展的合理性以後,列舉了常見的擴展層次Dao層、DataSource層、JDBC層和Proxy層,重點講解了Tiny分庫分表的技術架構和設計思路,並講解了分庫分表、讀寫分離和集羣事務的處理,還與開源軟件Routing4DB作了詳細對比。最後經過具體示例演示數據庫水平擴展的配置和增刪改查的結果。 第7章 服務層實踐 本章首先介紹了傳統的服務層定義,以及與表現層、業務邏輯層的關係,而後講解了Tiny對服務層的改進,經過從新定義服務概念,引入服務定義、服務註冊和服務中心的設計思路。基於Tiny服務體系,應用能夠沒必要關心服務提供方的具體信息。同時,因爲遠程調用與本地調用在代碼層面並無區別,因此係統根據不一樣場景進行多機部署或者單機部署時,無須對代碼進行調整。遠程調用體系由核心服務中心來組織整個調用網絡,水平擴展極爲容易。最後列舉了本地場景、遠程場景、單中心場景和多中心場景下,讀者如何配置部署服務與服務中心。 第8章 流程引擎實踐 本章介紹了面向對象編程的不足,引入了面向組件編程的概念。流程引擎框架(後文亦稱之爲Flow)是一款基於面向組件開發的組件流程執行框架。目前Flow支持兩種流程:邏輯流程和頁面流程。在設計部分,讀者能夠經過組件設計、流程管理、流程配置和流程執行了解流程引擎的強大。在實踐部分筆者介紹瞭如何經過組件化開發算數表達式流程。 第9章 元數據實踐 本章介紹的是基本的元數據元素,包含方言模板、標準數據類型、業務數據類型和標準字段這幾類基礎元數據。最後的示例演示使用Eclipse插件設計元數據,包括經過工具動態生成業務Java代碼和SQL語句。 第10章 展示層開發實踐 本章首先介紹了Java EE展示層的經常使用表明技術Servlet、JSP和模板語言,並詳細分析了三者的特性及優缺點。接着講解了展示層方案設計,列舉了設計人員常見的作法和技巧。而後給出了Tiny框架的展示層架構思路:採用模板語言作前端展現,同時引入組件包的概念,經過資源合併和壓縮等框架手段,提高展示層的性能。最後演示了Tiny展示層的告警框和文本輸入框的示例。 第11章 Web擴展實踐 本章主要講解了Tiny Web層框架的實踐過程。首先介紹了Tiny Web層框架的由來及設計思想與設計原理。而後詳細介紹了框架內置過濾器與處理器的使用方式。最後經過具體示例講解Tiny Web層框架的開發過程,從而增強對Tiny Web層框架的理解。 第12章 Tiny統一界面框架實踐 本章重點介紹了Java EE領域的界面開發設計,並經過介紹問題由來,概括用戶需求,提出UIML解決方案。本章的側重點是介紹UIML設計思路和開發細節,讓讀者瞭解UI組件化開發帶來的好處與便利。在實踐小節中介紹了圖形編輯器的使用,最後還列舉了UIML配置開發示例,概括和總結了開發過程當中的常見問題。 第13章 RESTful實踐 本章講解了業界流行的RESTful的背景和開發方式。首先介紹了Spring RESTful的開發方式,這種方式比較適用於新項目開發,而不適用於已經開發完畢的項目。而後講解了Tiny RESTful如何解決這個問題。本章詳細介紹了Tiny RESTful的設計思想與實現過程,最後的Web層示例演示了RESTful風格配置Web映射。 本書讀者對象l 有必定Java EE基礎的編程人員; l 對Java EE架構設計感興趣的開發人員; l 構建企業級應用的架構師; l 學有餘力,樂於嘗試新事物的初學者; l 想經過本書學習分析問題和解決問題思路的人員。 |