Java實(shí)戰(zhàn)pdf txt mobi下載及讀書筆記

Java實(shí)戰(zhàn)pdf txt mobi讀書筆記

現(xiàn)代Java應(yīng)用充分利用了微服務(wù)、反應(yīng)式架構(gòu)以及流式數(shù)據(jù)等創(chuàng)新設(shè)計(jì)?,F(xiàn)代Java特性,譬如Lambda、流以及大家期待已久的Java模塊系統(tǒng)讓這些設(shè)計(jì)的實(shí)現(xiàn)極其便利。是時候更新技能工具箱了,只有這樣,你才能從容應(yīng)對迎面而來的種種挑戰(zhàn)!

作者:[英] 拉烏爾-加布里埃爾 ? 烏爾瑪 / [意] 馬里奧 ? 富斯科 / [英] 艾倫 ? 米克羅夫特

Java實(shí)戰(zhàn)pdf txt mobi下載

http://www.txtepub.com/40135.html

Java實(shí)戰(zhàn)pdf txt mobi閱讀感悟

通過透徹的示例和通俗的語言講解了Java語言這些最激動人心的特性,作者注重細(xì)節(jié),努力降低了學(xué)習(xí)難度,節(jié)省你寶貴的時間。依照本書邊學(xué)邊練,你可以很快掌握流應(yīng)用程序接口、Java模塊系統(tǒng)等現(xiàn)代Java新特性,再進(jìn)一步去探尋實(shí)現(xiàn)并發(fā)的新方法,了解函數(shù)式編程如何幫你編寫可讀性好又容易維護(hù)的代碼。潛心修煉,你的編程實(shí)力必能提高到新的層次。

本書特色:

●對上一版(《Java 8實(shí)戰(zhàn)》)做了全新改版

●Java 8、9、10及后續(xù)版本新特性介紹

●流數(shù)據(jù)處理以及反應(yīng)式編程

●Java模塊系統(tǒng)

1998年,八歲的我拿起了我此生第一本計(jì)算機(jī)書,那本書講的是JavaScript和HTML。我當(dāng)時怎么也想不到,打開那本書會讓我見識到編程語言和它們能夠創(chuàng)造的神奇世界,并徹底改變我的生活。我被它深深地吸引了。如今,編程語言的某個新特性還會時不時地讓我感到興奮,因?yàn)樗屛一ǜ俚臅r間就能夠?qū)懗龈逦⒏啙嵉拇a。我希望本書探討的Java 8、9以及10中那些來自函數(shù)式編程的新思想,同樣能夠給你啟迪。

那么,你可能會問,這本書以及它的上一版是由何而來的呢?

2011年,Oracle公司的Java語言架構(gòu)師Brian Goetz分享了一些在Java中添加Lambda表達(dá)式的提議,以期獲得業(yè)界的參與。這重新燃起了我的興趣,于是我開始傳播這些想法,在各種開發(fā)者會議上組織Java 8討論班,并為劍橋大學(xué)的學(xué)生開設(shè)講座。

到了2013年4月,消息不脛而走,Manning出版社的編輯給我發(fā)了封郵件,問我是否有興趣寫一本關(guān)于Java 8中Lambda的書。當(dāng)時我只是個“不起眼”的二年級博士研究生,寫書似乎并不是一個好主意,因?yàn)樗鼤⒄`我提交論文。另一方面,所謂“只爭朝夕”,我想寫一本小書不會有太多工作量,對吧?(后來我才意識到自己大錯特錯了?。┯谑俏易稍兾业牟┦可鷮?dǎo)師米克羅夫特教授,結(jié)果他十分支持我寫書(甚至愿意為這種與博士學(xué)位無關(guān)的工作提供幫助,我永遠(yuǎn)感謝他)。幾天后,我們見到了Java 8的布道者富斯科,他有著非常豐富的專業(yè)經(jīng)驗(yàn),并且因在重大開發(fā)者會議上所做的函數(shù)式編程演講而享有盛名。

我們很快就認(rèn)識到,如果將大家的能量和背景融合起來,就不僅僅可以寫出一本關(guān)于Java 8 Lambda的小書,而是可以寫出(我們希望)一本五年或十年后,在Java領(lǐng)域仍然有人愿意閱讀的書。我們有了一個非常難得的機(jī)會來深入討論許多話題,它們不但有益于Java程序員,還打開了通往一扇通往新世界的大門:函數(shù)式編程。

現(xiàn)在是2018年,截至今天,本書的上一版已在全世界售出兩萬本,Java 9已經(jīng)發(fā)布,Java 10也即將發(fā)布。經(jīng)歷了無數(shù)個漫漫長夜的辛苦工作、無數(shù)次的編輯和永生難忘的體驗(yàn)后,我們這本全新修訂的包含Java 8、9以及10的《Java實(shí)戰(zhàn)(第2版)》終于送到了你的手上。希望你會喜歡它!

簡單地說,Java 8中的新增功能以及Java 9引入的變化(雖然并不顯著)是自Java 1.0發(fā)布21年以來,Java發(fā)生的最大變化。這一演進(jìn)沒有去掉任何東西,因此你原有的Java代碼都能工作,但新功能提供了更強(qiáng)大的新習(xí)語和新設(shè)計(jì)模式,能幫助你編寫更清晰、更簡潔的代碼。就像遇到所有新功能時那樣,你一開始可能會想:“為什么又要去改我的語言呢?”但稍加練習(xí)之后,你就會發(fā)覺自己只用預(yù)期的一半時間,就用新功能寫出了更短、更清晰的代碼,這時你會意識到自己永遠(yuǎn)無法返回到“舊Java”了。

本書會幫助你跨過“原理聽起來不錯,但還是有點(diǎn)兒新,不太適應(yīng)”的門檻,從而熟練地編程。

“也許吧,”你可能會想,“可是Lambda、函數(shù)式編程,這些不是那些留著胡子、穿著涼鞋的學(xué)究們在象牙塔里面琢磨的東西嗎?”或許是的,但Java 8中加入的新想法的分量剛剛好,它們帶來的好處也可以被普通的Java程序員所理解。本書會從普通程序員的角度來敘述,偶爾談?wù)劇斑@是怎么來的”。

“Lambda,聽起來跟天書一樣!”是的,也許是這樣,但它是一個很好的想法,讓你可以編寫簡明的Java程序。許多人都熟悉事件處理器和回調(diào)函數(shù),即注冊一個對象,它包含會在事件發(fā)生時使用的一個方法。Lambda使人更容易在Java中廣泛應(yīng)用這種思想。簡單來說,Lambda和它的朋友“方法引用”讓你在做其他事情的過程中,可以簡明地將代碼或方法作為參數(shù)傳遞進(jìn)去執(zhí)行。在本書中,你會看到這種思想出現(xiàn)得比預(yù)想的還要頻繁:從加入做比較的代碼來簡單地參數(shù)化一個排序方法,到利用新的Stream API在一組數(shù)據(jù)上表達(dá)復(fù)雜的查詢指令。

“流(stream)是什么?”這是Java 8的一個新功能。它的特點(diǎn)和集合(collection)差不多,但有幾個明顯的優(yōu)點(diǎn),讓我們可以使用新的編程風(fēng)格。首先,如果你使用過SQL等數(shù)據(jù)庫查詢語言,就會發(fā)現(xiàn)用幾行代碼寫出的查詢語句要是換成Java要寫好長。Java 8的流支持這種簡明的數(shù)據(jù)庫查詢式編程——但用的是Java語法,而無須了解數(shù)據(jù)庫!其次,流被設(shè)計(jì)成無須同時將所有的數(shù)據(jù)調(diào)入內(nèi)存(甚至根本無須計(jì)算),這樣就可以處理無法裝入計(jì)算機(jī)內(nèi)存的流數(shù)據(jù)了。但Java 8可以對流做一些集合所不能的優(yōu)化操作,例如,它可以將對同一個流的若干操作組合起來,從而只遍歷一次數(shù)據(jù),而不是花很大成本去多次遍歷它。更妙的是,Java可以自動將流操作并行化(集合可不行)。

“還有函數(shù)式編程,這又是什么?”就像面向?qū)ο缶幊桃粯?,它是另一種編程風(fēng)格,其核心是把函數(shù)作為值,前面在討論Lambda的時候提到過。

Java 8的好處在于,它把函數(shù)式編程中一些最好的想法融入到了大家熟悉的Java語法中。有了這個優(yōu)秀的設(shè)計(jì)選擇,你可以把函數(shù)式編程看作Java 8中一個額外的設(shè)計(jì)模式和習(xí)語,讓你可以用更少的時間,編寫更清晰、更簡潔的代碼。想想你的編程兵器庫中的利器又多了一樣。

當(dāng)然,除了這些在概念上對Java有很大擴(kuò)充的功能,我們也會解釋很多其他有用的Java 8功能和更新,如默認(rèn)方法、新的Optional類、CompletableFuture,以及新的日期和時間API。

Java 9的更新包括一個支持通過Flow API進(jìn)行反應(yīng)式編程的模塊系統(tǒng),以及其他各種增強(qiáng)功能。

別急,這只是一個概覽,現(xiàn)在該讓你自己去看看本書了。

本書結(jié)構(gòu)

本書分為六個部分,分別是:“基礎(chǔ)知識”“使用流進(jìn)行函數(shù)式數(shù)據(jù)處理”“使用流和Lambda進(jìn)行高效編程”“無所不在的Java”“提升Java的并發(fā)性”和“函數(shù)式編程以及Java未來的演進(jìn)”。我們強(qiáng)烈建議你按順序閱讀前兩部分的內(nèi)容,因?yàn)楹芏喔拍疃夹枰懊娴恼鹿?jié)作為基礎(chǔ),后面四個部分的內(nèi)容你可以按照任意順序閱讀。大多數(shù)章節(jié)都附有幾個測驗(yàn),可以幫助你學(xué)習(xí)和掌握這些內(nèi)容。

第一部分旨在幫助你初步使用Java 8。學(xué)完這一部分,你將會對Lambda表達(dá)式有充分的了解,并可以編寫簡潔而靈活的代碼,能夠輕松適應(yīng)不斷變化的需求。

? 第1章總結(jié)Java的主要變化(Lambda表達(dá)式、方法引用、流和默認(rèn)方法),為學(xué)習(xí)后面的內(nèi)容做準(zhǔn)備。?

? 第2章介紹行為參數(shù)化,這是Java 8非常依賴的一種軟件開發(fā)模式,也是引入Lambda表達(dá)式的主要原因。?

? 第3章對Lambda表達(dá)式和方法引用進(jìn)行全面介紹,每一步都提供了代碼示例和測驗(yàn)。?

第二部分詳細(xì)討論新的Stream API。通過Stream API,你將能夠?qū)懗龉δ軓?qiáng)大的代碼,以聲明性方式處理數(shù)據(jù)。學(xué)完這一部分,你將充分理解流是什么,以及如何在Java應(yīng)用程序中使用它們來簡潔而高效地處理數(shù)據(jù)集。

? 第4章介紹流的概念,并解釋它們與集合有何異同。?

? 第5章詳細(xì)討論為了表達(dá)復(fù)雜的數(shù)據(jù)處理查詢可以使用的流操作。其間會談到很多模式,如篩選、切片、查找、匹配、映射和歸約。?

? 第6章介紹收集器——Stream API的一個功能,可以讓你表達(dá)更為復(fù)雜的數(shù)據(jù)處理查詢。?

? 第7章探討流如何得以自動并行執(zhí)行,并利用多核架構(gòu)的優(yōu)勢。此外,你還會學(xué)到為正確而高效地使用并行流,要避免的若干陷阱。?

第三部分探索Java 8和Java 9的多個主題,這些主題中的技巧能讓你的Java代碼更高效,并能幫助你利用現(xiàn)代的編程習(xí)語改進(jìn)代碼庫。這一部分的出發(fā)點(diǎn)是介紹高級編程思想,本書后續(xù)內(nèi)容并不依賴于此。

? 第8章是這一版新增的,探討Java 8和Java 9對Collection API的增強(qiáng)。內(nèi)容涵蓋如何使用集合工廠,如何使用新的慣用模式處理List和Set,以及使用Map的慣用模式。

? 第9章探討如何利用Java 8的新功能和一些秘訣來改善你現(xiàn)有的代碼。此外,該章還探討了一些重要的軟件開發(fā)技術(shù),如設(shè)計(jì)模式、重構(gòu)、測試和調(diào)試。?

? 第10章也是這一版新增的,介紹依據(jù)領(lǐng)域特定語言(domain-specific language, DSL)實(shí)現(xiàn)API的思想。這不僅是一種強(qiáng)大的API設(shè)計(jì)方法,而且正變得越來越流行。Java中已經(jīng)有API采用這種模式實(shí)現(xiàn),譬如Comparator、Stream以及Collector接口。

第四部分介紹Java 8和Java 9中新增的多個特性,這些特性能幫助程序員事半功倍地編寫代碼,讓程序更加穩(wěn)定可靠。我們首先從Java 8新增的兩個API入手。

? 第11章介紹java.util.Optional類,它能讓你設(shè)計(jì)出更好的API,并減少空指針異常。

? 第12章探討新的日期和時間API,這相對于以前涉及日期和時間時容易出錯的API是一大改進(jìn)。

? 第13章討論默認(rèn)方法是什么,如何利用它們來以兼容的方式演變API,一些實(shí)際的應(yīng)用模式,以及有效使用默認(rèn)方法的規(guī)則。?

? 第14章是這一版新增的,探討Java的模塊系統(tǒng)——它是Java 9的主要改進(jìn),使大型系統(tǒng)能夠以文檔化和可執(zhí)行的方式進(jìn)行模塊化,而不是簡單地將一堆包雜亂無章地堆在一起。

第五部分探討如何使用Java的高級特性構(gòu)建并發(fā)程序——注意,我們要討論的不是第6章和第7章中介紹的流的并發(fā)處理。

? 第15章是這一版新增的,從宏觀的角度介紹異步API的思想,包括Future、反應(yīng)式編程背后的“發(fā)布–訂閱”協(xié)議(封裝在Java 9的Flow API中)。

? 第16章探討CompletableFuture,它可以讓你用聲明性方式表達(dá)復(fù)雜的異步計(jì)算,從而讓Stream API的設(shè)計(jì)并行化。

? 第17章也是這一版新增的,詳細(xì)介紹Java 9的Flow API,并提供反應(yīng)式編程的實(shí)戰(zhàn)代碼解析。

第六部分是本書最后一部分,我們會談?wù)勗趺从肑ava編寫高效的函數(shù)式程序,還會將Java的功能和Scala做比較。

? 第18章是一個完整的函數(shù)式編程教程,會介紹一些術(shù)語,并解釋如何在Java 8中編寫函數(shù)式風(fēng)格的程序。?

? 第19章涵蓋更高級的函數(shù)式編程技巧,包括高階函數(shù)、柯里化、持久化數(shù)據(jù)結(jié)構(gòu)、延遲列表和模式匹配。這一章既提供了可以用在代碼庫中的實(shí)際技術(shù),也提供了能讓你成為更淵博的程序員的學(xué)術(shù)知識。?

? 第20章將對比Java與Scala的功能。Scala和Java一樣,是一種在JVM上實(shí)現(xiàn)的語言,近年來發(fā)展迅速,在編程語言生態(tài)系統(tǒng)中已經(jīng)威脅到了Java的一些方面。?

? 第21章會回顧這段學(xué)習(xí)Java 8并慢慢走向函數(shù)式編程的歷程。此外,我們還會猜測,在Java 8、9以及10中添加的小功能之后,未來可能會有哪些增強(qiáng)和新功能出現(xiàn)。?

最后,本書有四個附錄,涵蓋了與Java 8相關(guān)的其他一些話題。附錄A總結(jié)了本書未討論的一些Java 8的小特性。附錄B概述了Java庫的其他主要擴(kuò)展,可能對你有用。附錄C是第二部分的延續(xù),介紹了流的高級用法。附錄D探討了Java編譯器在幕后是如何實(shí)現(xiàn)Lambda表達(dá)式的。

關(guān)于代碼

所有代碼清單和正文中的源代碼都采用等寬字體(如fixed-widthfontlikethis),以與普通文字區(qū)分開來。許多代碼清單中都有注釋,突出了重要的概念。

書中示例的源代碼請至圖靈社區(qū)本書主頁

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容