![]() ![]() |
Kotlin Android編程 ![]() 本書(shū)的主要內(nèi)容有:了解Kotlin基礎(chǔ)知識(shí)和Kotlin集合框架。探索Android基礎(chǔ):操作系統(tǒng)和應(yīng)用容器及其組件。了解線程安全以及如何處理并發(fā)。編寫(xiě)低開(kāi)銷順序異步工作。使用協(xié)程檢查結(jié)構(gòu)化并發(fā)性,并了解通道如何支持協(xié)程通信。了解如何使用流完成異步數(shù)據(jù)處理。使用Android性能分析工具了解性能問(wèn)題。使用性能優(yōu)化減少資源消耗。 為Android移動(dòng)操作系統(tǒng)開(kāi)發(fā)應(yīng)用似乎很令人生畏,尤其是如果還需要學(xué)習(xí)一種新的編程語(yǔ)言:Kotlin,這是目前Android的官方開(kāi)發(fā)語(yǔ)言。利用這本實(shí)用的書(shū),Android開(kāi)發(fā)人員將學(xué)習(xí)如何從Java過(guò)渡到Kotlin,包括Kotlin如何為獲得異步計(jì)算控制提供真正的優(yōu)勢(shì)。 前言JetBrains 創(chuàng)建Kotlin 有兩個(gè)原因:沒(méi)有一種語(yǔ)言可以填補(bǔ)Android 開(kāi)發(fā)中使用(遺留)Java 庫(kù)的所有空白,另外一種新的語(yǔ)言將允許Android 開(kāi)發(fā)引領(lǐng)趨勢(shì),而不只是追隨潮流。2015 年2 月,Kotlin 10 正式發(fā)布。Kotlin 簡(jiǎn)潔、安全、實(shí)用,并且強(qiáng)調(diào)與Java代碼的互操作性。當(dāng)今使用Java 的任何地方都可以使用Kotlin:服務(wù)器端開(kāi)發(fā)、Android 應(yīng)用、桌面或移動(dòng)客戶端、物聯(lián)網(wǎng)設(shè)備編程等。Kotlin 在Android 開(kāi)發(fā)人員中迅速流行起來(lái),Google 決定采用Kotlin 作為Android 開(kāi)發(fā)的官方語(yǔ)言,這使得人們對(duì)這個(gè)語(yǔ)言的興趣暴漲。根據(jù)Android 開(kāi)發(fā)者網(wǎng)站(https://developerandroidcom/kotlin),目前有超過(guò)60% 的專業(yè)Android 開(kāi)發(fā)人員使用Kotlin。Android 的學(xué)習(xí)曲線相當(dāng)陡峭:不可否認(rèn),它很難學(xué)習(xí),更難掌握。對(duì)很多人來(lái)說(shuō),Android 開(kāi)發(fā)人員成長(zhǎng)的一部分,就是隨著時(shí)間的推移,要不斷處理Android操作系統(tǒng)與應(yīng)用之間意想不到的交互。本書(shū)通過(guò)研究Android 中的這些問(wèn)題,旨在向讀者深入詳盡地介紹這些情況。我們不僅會(huì)討論Kotlin 和Java,還將討論使用Android 時(shí)出現(xiàn)的并發(fā)問(wèn)題,以及Kotlin 如何解決這些問(wèn)題。有時(shí)我們會(huì)將Kotlin 與Java 進(jìn)行比較,因?yàn)槲覀冋J(rèn)為這樣做能更好地理解(特別是大部分讀者都可能有Java 背景)。我們可以利用實(shí)用示例演示如何彌補(bǔ)二者的差距,并展示大多數(shù)Kotlin 操作的底層概念都與Java 的相應(yīng)概念很類似。我們將按主題組織這些任務(wù),對(duì)涉及的大量信息進(jìn)行結(jié)構(gòu)化分解,以便軟件工程師掌握,并展示如何使應(yīng)用健壯并且可維護(hù)。另外,熟悉Java 的用戶(包括Android 開(kāi)發(fā)人員)會(huì)發(fā)現(xiàn),我們同時(shí)在Java 和Kotlin 中介紹各個(gè)常見(jiàn)任務(wù)時(shí),它們的學(xué)習(xí)曲線會(huì)大大變平。在適當(dāng)?shù)那闆r下,我們會(huì)討論其中一個(gè)語(yǔ)言或兩個(gè)語(yǔ)言的區(qū)別和缺陷,不過(guò)我們希望提供簡(jiǎn)單易懂的任務(wù)示例,使讀者能夠掌握和適應(yīng)現(xiàn)代范式,并立即本能地意識(shí)到更新代碼的重要性。盡管Kotlin 與Java 可完全互操作,但其他Java 應(yīng)用開(kāi)發(fā)(服務(wù)器端編程、桌面客戶端、中間件等)還沒(méi)有趕上Android 的程度。這很大程度上是由于Android的維護(hù)者(Google)強(qiáng)烈鼓勵(lì)其用戶做出改變。用戶逐步遷移到Kotlin,但更多的用戶仍然使用Java 來(lái)完成關(guān)鍵任務(wù)。我們希望這本書(shū)能成為Android 開(kāi)發(fā)人員的生命線,讓他們能夠放心地利用Kotlin 提供的優(yōu)勢(shì)和簡(jiǎn)單性。本書(shū)面向的讀者這本書(shū)面向超過(guò)600 萬(wàn)Android 工程師中的每一個(gè)人。我們相信幾乎每個(gè)Android 工程師都能從這本書(shū)中受益。可能有一小部分人能流利地使用Kotlin,即使如此,他們也能從我們介紹的信息中有所收獲。但事實(shí)上,我們面向的是絕大多數(shù)還沒(méi)有過(guò)渡到Kotlin 的人。這本書(shū)也適合那些在以Java 為中心的Android開(kāi)發(fā)中已經(jīng)接觸過(guò)Kotlin,但還沒(méi)有完全熟悉Kotlin 的人:場(chǎng)景1讀者精通Java,聽(tīng)說(shuō)過(guò)這種新的Kotlin 語(yǔ)言,并想嘗試一下。所以他們讀了一些在線教程,開(kāi)始使用,效果很好。很快他們就意識(shí)到這不僅僅是一種新的語(yǔ)法。習(xí)慣用法不一樣了(例如,函數(shù)式編程,協(xié)程),現(xiàn)在可以采用一種全新的開(kāi)發(fā)方式。不過(guò)他們?nèi)狈χ笇?dǎo)。對(duì)他們來(lái)說(shuō),這本書(shū)將非常適合。場(chǎng)景2讀者是一個(gè)Java 開(kāi)發(fā)小團(tuán)隊(duì)的一員。他們對(duì)是否應(yīng)該在項(xiàng)目中包含Kotlin 進(jìn)行了討論。盡管據(jù)說(shuō)Kotlin 與Java 100% 可互操作,但一些同事認(rèn)為引入另一種語(yǔ)言會(huì)增加項(xiàng)目的復(fù)雜性。還有一些人認(rèn)為,由于需要掌握兩種語(yǔ)言,這可能會(huì)限制能夠參與該項(xiàng)目的同事人數(shù)。如果能證明利大于弊,這些讀者可以用這本書(shū)來(lái)說(shuō)服他們的同事。場(chǎng)景3有經(jīng)驗(yàn)的Android 開(kāi)發(fā)人員可能使用過(guò)Kotlin 或用Kotlin 寫(xiě)過(guò)一個(gè)功能,但需要完成具體工作時(shí),還是會(huì)使用Java。我們發(fā)現(xiàn)現(xiàn)在就是這種情況,這本書(shū)會(huì)讓我們的生活更輕松。這也是我們周圍最常見(jiàn)的狀態(tài),很多Android 開(kāi)發(fā)人員接觸過(guò)Kotlin,認(rèn)為他們足夠了解這個(gè)語(yǔ)言,能夠在必要時(shí)編寫(xiě)Kotlin代碼,但他們要么沒(méi)有意識(shí)到要么根本不相信數(shù)據(jù)類、不可變屬性和結(jié)構(gòu)化并發(fā)的重要性。我們認(rèn)為這本書(shū)能讓一個(gè)好奇的人成為一個(gè)盡心盡力的布道者。為什么寫(xiě)這本書(shū)有大量的書(shū)介紹Android 如何工作,Kotlin 如何工作,或者并發(fā)如何工作。Kotlin因其易用性和更簡(jiǎn)潔的語(yǔ)法在Android 開(kāi)發(fā)中廣受歡迎,但Kotlin 為Android 提供的遠(yuǎn)不止這些:它提供了解決Android 并發(fā)問(wèn)題的新方法。我們寫(xiě)這本書(shū)是為了深入地探討這些主題之間特定的關(guān)系。不論單獨(dú)來(lái)看還是合在一起,Android和Kotlin 都在快速變化。想要跟上所有這些變化可能很困難。我們把這本書(shū)看作是一個(gè)有意義的檢查點(diǎn):它介紹了Android 的起源,當(dāng)前的位置,以及隨著Kotlin 語(yǔ)言的成熟,將如何繼續(xù)與Kotlin 一起發(fā)展。本書(shū)內(nèi)容組織有時(shí)我們會(huì)加入代碼片段的截圖,而不是常規(guī)的atlas 代碼格式。這對(duì)于協(xié)程和流特別有用,因?yàn)樵诮貓D中可以清楚地看到掛起點(diǎn),還可以獲得IDE 的類型提示。第1 章Kotlin 基礎(chǔ)和第2 章Kotlin 集合框架介紹了Kotlin 中實(shí)現(xiàn)Android編程的重大轉(zhuǎn)變。雖然這幾章中的信息足以為你奠定一個(gè)很好的Kotlin 基礎(chǔ),不過(guò)后面的章節(jié)將更深入地探討更復(fù)雜/ 更高級(jí)的特性。熟悉Java 或類似語(yǔ)法結(jié)構(gòu)的用戶會(huì)發(fā)現(xiàn)這種轉(zhuǎn)換非常自然。第3 章Android 基礎(chǔ)和第4 章Android 并發(fā)將提供與內(nèi)存和線程相關(guān)的Android 系統(tǒng)基礎(chǔ)知識(shí)。與其他操作系統(tǒng)一樣,并發(fā)很難實(shí)現(xiàn)。第5 章線程安全到第11 章用Android 性能分析工具檢查性能問(wèn)題將研究圍繞內(nèi)存和線程的常見(jiàn)問(wèn)題,同時(shí)指出Android 框架如何隨著時(shí)間的推移逐步演化,從而賦予開(kāi)發(fā)人員更多的控制。同時(shí),這些章節(jié)還展示了Kotlin 的擴(kuò)展和語(yǔ)言特性如何幫助開(kāi)發(fā)人員更快地編寫(xiě)更好的應(yīng)用。第12 章利用性能優(yōu)化減少資源消耗將探討使用強(qiáng)大的Android 開(kāi)發(fā)工具來(lái)檢查底層性能和與內(nèi)存相關(guān)的分析,從而能發(fā)現(xiàn)你從未真正了解的問(wèn)題。這本書(shū)將為工程師提供原生Android 開(kāi)發(fā)中常見(jiàn)任務(wù)的專業(yè)開(kāi)發(fā)和管理實(shí)現(xiàn)。很多任務(wù)包括一個(gè)現(xiàn)實(shí)問(wèn)題,然后是用Java 和Kotlin 實(shí)現(xiàn)的相應(yīng)解決方案。需要進(jìn)一步的解釋時(shí),在解決方案后面會(huì)做一個(gè)簡(jiǎn)單的比較,并強(qiáng)調(diào)Kotlin 語(yǔ)言的簡(jiǎn)潔與自然。排版約定本書(shū)使用了下述排版約定:斜體(Italic)表示新術(shù)語(yǔ)、URL、電子郵件地址、文件名和擴(kuò)展名。等寬字體(Constant Width)表示程序片段,以及正文中出現(xiàn)的變量、函數(shù)名、數(shù)據(jù)庫(kù)、數(shù)據(jù)類型、環(huán)境變量、語(yǔ)句和關(guān)鍵字等。加粗等寬字體(constant width bold)表示應(yīng)該由用戶輸入的命令或其他文本。等寬斜體(constant width italic)表示應(yīng)該由用戶輸入的值或根據(jù)上下文確定的值替換的文本。使用代碼示例這本書(shū)的補(bǔ)充材料( 代碼示例、練習(xí)等) 可以從https://githubcom/ProgrammingAndroidWithKotlin 下載。如果使用代碼示例時(shí)有技術(shù)問(wèn)題或遇到其他問(wèn)題,請(qǐng)通過(guò)以下email 聯(lián)系我們:bookquestions@oreillycom。這本書(shū)的目的就是要幫助你完成工作。一般來(lái)講,你可以在你的程序和文檔中使用這些代碼,不需要聯(lián)系我們來(lái)得到許可,除非你直接復(fù)制了大部分的代碼。例如,如果你在編寫(xiě)一個(gè)程序,使用了本書(shū)中的多段代碼,這并不需要得到許可。但是出售或發(fā)行OReilly 書(shū)示例代碼則需要得到許可;卮饐(wèn)題時(shí)如果引用了這本書(shū)的文字和示例代碼,這不需要得到許可。但是如果你的產(chǎn)品的文檔借用了本書(shū)中的大量示例代碼,則需要得到許可。我們希望但不嚴(yán)格要求標(biāo)明引用出處。引用信息通常包括書(shū)名、作者、出版商和ISBN。例如Programming Androidwith Kotlin by Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G BlakeMeike, and Mike Dunn (OReilly) Copyright 2022 Pierre-Olivier Laurence andAmanda Hinchman-Dominguez, 978-1-492-06300-1。如果你認(rèn)為你在使用代碼示例時(shí)超出了合理使用范圍或者上述許可范圍,可以隨時(shí)聯(lián)系我們:permissions@oreillycom。OReilly 在線學(xué)習(xí)平臺(tái)(OReilly Online Learning)近40 年來(lái),OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見(jiàn)解,來(lái)幫助眾多公司取得成功。公司獨(dú)有的專家和改革創(chuàng)新者網(wǎng)絡(luò)通過(guò)OReilly 書(shū)籍、文章以及在線學(xué)習(xí)平臺(tái),分享他們的專業(yè)知識(shí)和實(shí)踐經(jīng)驗(yàn)。OReilly 在線學(xué)習(xí)平臺(tái)按照您的需要提供實(shí)時(shí)培訓(xùn)課程、深入學(xué)習(xí)渠道、交互式編程環(huán)境以及來(lái)自O(shè)Reilly 和其他200 多家出版商的大量書(shū)籍與視頻資料。更多信息,請(qǐng)?jiān)L問(wèn)網(wǎng)站:https://wwworeillycom/。聯(lián)系我們?nèi)魏斡嘘P(guān)本書(shū)的意見(jiàn)或疑問(wèn),請(qǐng)按照以下地址聯(lián)系出版社。美國(guó):OReilly Media, Inc1005 Gravenstein Highway NorthSebastopol, CA 95472中國(guó):北京市西城區(qū)西直門(mén)南大街2 號(hào)成銘大廈C 座807 室(100035)奧萊利技術(shù)咨詢(北京)有限公司針對(duì)這本書(shū),我們還建有一個(gè)網(wǎng)頁(yè),列出了有關(guān)勘誤、示例和其他信息?梢酝ㄟ^(guò)以下地址訪問(wèn)這個(gè)頁(yè)面:https://oreilly/pak。如果對(duì)這本書(shū)有什么意見(jiàn),或者詢問(wèn)技術(shù)上的問(wèn)題,請(qǐng)發(fā)送電子郵件至errata@oreillycomcn。有關(guān)我們的圖書(shū)和課程,更多新聞和信息請(qǐng)?jiān)L問(wèn)我們的網(wǎng)站:http://wwworeillycom。我們的Facebook:http://facebookcom/oreilly。我們的Twitter:http://twittercom/oreillymedia。我們的YouTube:http://youtubecom/oreillymedia。致謝感謝我們的技術(shù)審校Adnan Sozuan 和Andrew Gibel,經(jīng)他們之手,這本書(shū)得到了極大的增強(qiáng)和改進(jìn)。還要感謝OReilly 的人員,他們幫助我們團(tuán)結(jié)在一起,給予了我們所需的全部支持,終于將這本書(shū)變成現(xiàn)實(shí),尤其是Jeff Bleiel 和Zan McQuade。感謝Roman Elizarov 和Jake Wharton 抽出時(shí)間與我們討論Kotlin 并發(fā)的發(fā)展方向和Android 的底層問(wèn)題。感謝朋友、家人和同事們的支持。感謝Kotlin 社區(qū),以及花時(shí)間閱讀早期草稿并提供反饋的所有人。最后,這本書(shū)謹(jǐn)獻(xiàn)給Mike Dunn:合著者、同事、朋友和父親。我們非常想念他,希望這本書(shū)能讓他感到驕傲。 Pierre-Olivier Laurence是法國(guó)巴黎附近Safran Aircraft Engines公司的首席軟件工程師。Amanda Hinchman-Dominguez是Kotlin方面的Google Developer Expert,也是Groupon的Android工程師,活躍在全球Kotlin社區(qū)。G Blake Meike是Couchbase的高級(jí)軟件工程師,著有多本書(shū),包括《Programming Android》。Mike Dunn是Oreilly Media的首席移動(dòng)工程師,也是Oreilly 《Native mobile Development》一書(shū)的作者。 目錄
你還可能感興趣
我要評(píng)論
|