Kotlin 越来越牛逼了!学Java都我想转了!
點擊上方?好好學java?,選擇?星標?公眾號
在過去的幾年里,我們一直在努力使 Kotlin 成為一種有趣、令人愉快且高效的編程語言。為了借助此版本的 Kotlin 繼續追求這一目標,我們投入了大量精力和努力來提高 Kotlin 及其工具的性能和質量。我們也很興奮地宣布支持多種新的語言功能,包括期待已久的 Kotlin 接口的 SAM 轉換。
社區和生態系統
在過去 12 個月里,有超過 580 萬人編輯了 Kotlin 代碼,而且數量還在不斷增長:
我們很高興看到 Kotlin 變得越來越受歡迎!活躍用戶的數量尤其鼓舞人心,我們將在未來的博文中詳細介紹這一指標。這個數字比上一年增加了 1.5 倍。
根據 2020 StackOverflow 開發者調查,在最受專業開發者歡迎的編程語言中,Kotlin 已攀升至第 13 位,我們很高興看到 Kotlin 成為最受喜愛的 5 種語言之一。
許多公司選擇 Kotlin 作為他們的首選語言,并且已在所有平臺上成功使用 Kotlin。我們很高興看到這種趨勢,并且非常感謝很多這樣的公司提供了各種案例研究供社區閱讀和學習。下面是一些最近使用 Kotlin 開發的優秀軟件示例:
服務器端:Atlassian、Adobe、ING Bank;
Android:Google Home、Duolingo、Zomato;
多平臺移動端:VMware、PlanGrid 和 CashApp、Mirego 的 Trikot;
Web:JetBrains 的 Space、Karhoo、MIPT 核物理方法實驗室的 VisionForge。
我們的 Kotlin 社區也在迅速壯大。現在,超過 30,000 名 Kotlin 開發者在 Slack 和 Reddit 上交流知識并相互支持,同時超過 90,000 人關注了我們的官方 Twitter 帳號來獲取提示、技巧和公告。Kotlin 社區在全球擁有超過 200 個用戶小組,并且正在蓬勃發展。我們感謝所有人幫助傳播信息、分享知識以及支持其他 Kotlin 開發者。大家創造的溫暖而親切的氛圍讓共同探索 Kotlin 成為一種愉快的體驗。沒有您,就不會有今天的 Kotlin。
Kotlin 1.4 在線活動
我們希望確保您擁有出色的 Kotlin 1.4 使用體驗,并希望您對該語言的下一步發展有一個很好的了解。
Kotlin 1.4 在線活動將于 10 月 12 日至 15 日直播,您可以點擊文末的閱讀原文訂閱直播,我們期待與大家見面!
專注于質量
此版本的重點是改善 Kotlin 的整體開發體驗,包括提高 IDE 性能和穩定性。我們的目標是使 Kotlin 用戶盡可能高效工作,并且我們專注于改進對用戶最重要的功能,讓他們在使用時更加滿意!
我們檢查和修復了超過 60 個性能問題,包括導致 IDE 凍結或內存泄漏的許多問題。在 Kotlin 1.4.0 的 EAP 階段中,我們收集到許多積極反饋,這表明整體體驗現在變得相當出色!
當您第一次處理項目并打開一個較大的 Kotlin 文件時,現在可以更快地看到高亮顯示的內容。在大多數情況下,高亮顯示的速度現在提高了 1.5-4 倍:
我們還大幅縮短了顯示自動補全建議所花的時間。下圖概述了 Kotlin 用戶所經歷的平均自動補全響應時間。補全時間超過 500 毫秒的情況幾乎減少了一半:
請注意,這些最新更改(包括加速的代碼高亮顯示) 只能與 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。
性能改進是一個持續的過程,我們還有更多增強計劃,例如繼續努力消除凍結以及使輸入更加流暢。我們已開始集成新的實驗性 Kotlin 編譯器前端,這將進一步提高 IDE 的速度。這是一項艱巨的任務,需要重寫插件的許多部分,但是它將提高 IDE 在許多方面的性能,包括代碼補全、語法高亮顯示和編譯器錯誤報告。
IDE 新功能
JetBrains 的使命是讓軟件開發更加高效和有趣,因此我們自然希望確保圍繞 Kotlin 打造的工具非常出色,并使 Kotlin 編碼盡可能簡單。
為了讓您更輕松地使用協同程序,尤其是查明并發應用程序中的錯誤,我們引入了協同程序調試器。我們將擴展其初始功能集,以提供社區最需要的功能,因此請使用我們的渠道之一或在下面的評論部分中與我們分享您的反饋。
我們還引入了一個靈活的新 Kotlin Project Wizard。這個新向導為您提供了一個創建和配置不同類型的 Kotlin 項目的地方,即使使用更復雜的結構(例如多平臺項目),也可以輕松上手。
Kotlin 1.4.0 添加了超過 40 項新的快速修復、意圖和檢查,它們將在您需要時提供幫助——修改代碼時,按 Alt+Enter 可以查看在特定上下文中可用的功能。
新的編譯器
很長一段時間以來,我們一直在開發一個新的 Kotlin 編譯器,它將在性能和可擴展性方面進一步推動 Kotlin 的發展。新編譯器的主要目標是變得更快速、統一 Kotlin 支持的所有平臺,并提供用于編譯器擴展的 API。我們將逐步引入新的部分,以便它們盡快到達用戶手中。在 Kotlin 1.4.0 中,我們發布了幾項正在進行的工作:
更強大的新類型推理算法默認啟用。它可以在更多用例中自動推理類型,即使在復雜的場景下也支持智能轉換,改進了委托屬性的推理,等等。
新的 JVM 和 JS 后端以 Alpha 模式提供。一旦穩定下來,它們就會成為新的默認設置。
我們正在積極開發新的前端實現,它將在編譯器管道中提供最大的性能提升。此前端是編譯器的一部分,可以解析代碼和名稱、執行類型檢查等,因此也會影響 IDE 的性能。。我們將在未來版本中提供它的預覽,敬請關注!
語言功能
Kotlin 1.4 提供了許多新功能:
Kotlin 接口的 SAM 轉換
庫作者的顯式 API 模式
混合命名和位置參數
尾隨逗號
可調用的引用改進
在循環的?when?內使用?break?和?continue
庫改進
對于標準庫,我們通常優先考慮的是提高跨不同平臺和操作本身之間的一致性。在此版本中,Kotlin 標準庫獲得了新集合運算符、委托屬性改進以及雙端隊列實現?ArrayDeque,等等。
您可以在“通用”代碼中使用標準庫,“通用”代碼是指在不同的平臺(即 Android 與 iOS 或 JVM 與 JS)之間共享的代碼。我們將逐步擴展通用庫,并向其添加或引入缺少的功能。
無論您是針對單一平臺還是在多平臺項目中工作,在任何 Gradle Kotlin 項目中,都不再需要聲明與?stdlib?的依賴關系。從 Kotlin 1.4.0 開始,此依賴關系默認添加。
我們正在開發 Kotlin 生態系統的其他部分:
我們正根據大家的反饋逐步改進 kotlinx.coroutines。
序列化庫越來越接近成熟。kotlinx.serialization 1.0.0-RC 版本今日發布!
我們已經發布了 DateTime API 預覽版,即處于實驗階段的 kotlinx-datetime 庫。
Kotlin/JVM
我們鼓勵您對常規項目試用新的 Alpha Kotlin/JVM 后端,并分享您的反饋!除了統一編譯器管道外,這項工作還會幫助我們更快地將 Jetpack Compose 之類的編譯器擴展引入 Kotlin 社區。
特定于 Kotlin/JVM 的語言功能:
我們添加了新的實驗方法,用于在字節碼的接口中生成默認方法(對于 Java 8 目標)。
我們為null 檢查引入了統一的異常類型。
Kotlin現在可以在 JVM 字節碼中生成類型注釋,以便它們在運行時可以在 Java 反射中使用。該功能適用于目標版本 8 及更高版本,到目前只在實驗模式下被發布。
Kotlin/JS
Kotlin 1.4.0 提供了新的 Gradle DSL 和 Alpha 版本的新 Kotlin/JS 編譯器后端以及其他功能。
新的 Gradle DSL 添加了對從 DSL 配置 CSS 和樣式加載器的支持,它包括與 npm 依賴項管理相關的各種改進,并改進了對 Dukat 集成的控制。
全新的 Kotlin/JS 編譯器后端給 Kotlin/JS 指明了未來的方向。它包括優化和功能,例如從 Kotlin 代碼自動生成 TypeScript 定義、更小的二進制文件和捆綁包、向 JavaScript 公開 Kotlin 功能的現代化方式,等等。
Kotlin/Native
Kotlin/Native 獲得了大量新功能和改進,包括:
Kotlin/Native 編譯和執行的整體性能提升。
Kotlin/Native 和 Swift / Obj-C 之間互操作性的改進。
簡化了 CocoaPods 依賴項管理。
Kotlin/Native 中的當前自動內存管理實現在并發方面存在限制,我們正在努力將其替換。
Kotlin/Native 的一個重點是可與 Kotlin Multiplatform Mobile 無縫集成,但不僅僅是這些。
Kotlin Multiplatform
讓 Kotlin 成為出色的多平臺解決方案是我們的首要任務之一。我們在 KotlinConf 上承諾進行一些重要改進,在此很高興地報告我們的工作成果:
得益于分層項目結構,您現在可以在目標的特定子集(例如類似的 iOS ARM64 設備目標和 x64 模擬器目標)之間共享代碼。
您可以使用在多個原生目標之間共享的通用代碼中與平臺相關的庫。
您可以在共享源集中僅指定一次依賴項,而不是在共享和平臺專用源集中同一庫的不同變體上指定依賴項。
我們繼續開發 Kotlin 庫格式 Klib,這種格式在后臺用于共享多平臺庫。
我們正在開發 Android Studio 插件,此插件可在 iOS 設備和模擬器上運行、測試和調試 Kotlin 代碼。首個公開預覽版將很快發布,敬請關注。
我們將很快發布在 Kotlin 社區成員幫助下創建的大量資料,這些資料解釋了如何使用 Kotlin Multiplatform Mobile (KMM) 技術來針對特定的移動用例(在 Android 和 iOS 之間共享代碼)。
盡管現在的重點是移動目標,但 JetBrains 已積極使用 Kotlin Multiplatform 的 Web 目標來構建和發布 JetBrains Space。Web 目標仍然是 Kotlin 的一項重要戰略投資。
更多詳細信息
您可以在 Kotlin 1.4 最新變化頁面和文檔中找到有關新功能的詳細說明,并關于遷移到 Kotlin 1.4 的信息。
與所有主要版本一樣,某些先前宣布的變更的棄用周期將在 Kotlin 1.4 版本結束。所有這些情況都經過了語言委員會的仔細審查,并在 Kotlin 1.4 兼容性指南中列出。
如何幫助我們改進 Kotlin
IntelliJ IDEA 和 Android Studio 中的 Kotlin 插件會收集關于您如何使用其功能的匿名統計信息。我們懇請您選擇提供這些統計信息!
這些匿名數據可極大地幫助我們更好地了解用戶、哪些功能有效、哪些方面造成了困難以及我們應當將重點放在哪里。要啟用統計信息,請轉到?Preferences,打開?Appearance & Behaviour | System Settings | Data Sharing,然后激活?Send usage statistics?復選框。
自 Kotlin 1.3 以來最熱心的問題報告者
我們要感謝社區的所有成員,他們通過向 YouTrack 報告問題幫助我們改進了此版本!我們列出了前 20 名報告者,在此向他們致以衷心感謝:
Igor Wojda(145 個問題);Louis CAD(87 個問題);Marc Knaup(86 個問題);AndroidDeveloperLB(83 個問題);Robert Stoll(68 個問題);Morgan Bartholomew(62 個問題);Victor Turansky(54 個問題);Guan Tianyi(51 個問題);Scott Pierce(38 個問題);Andreas Malik(37 個問題);Steven Sch?fer(37 個問題);Bj?rn Kautler(36 個問題);Róbert Papp(34 個問題);Toshiaki Kameyama(30 個問題);Nicholas Bilyk(29 個問題);Michael Bailey(26 個問題);Jake Wharton(25 個問題);Lamberto Basti(24 個問題);Serge Pro(23 個問題);Egor Andreevici(21 個問題)。
立即開始使用 Kotlin 1.4
和往常一樣,您可以在 play.kotl.in 上在線試用 Kotlin。
在 Gradle 和 Maven 中,使用 1.4.0 作為編譯器版本。請參閱 Gradle 和 Maven 的文檔。
IntelliJ IDEA 和 Android Studio 會自動提示您將 Kotlin 插件更新為 1.4.0 版。您也可以打開 Preferences | Plugins 并手動更新 Kotlin 插件。
可以從 GitHub 版本頁面下載命令行編譯器。
您可以使用與此版本一同發布的以下庫:
kotlinx.coroutines 版本:1.3.9
kotlinx.serialization 版本:1.0.0-RC
ktor 版本:1.4.0
kotlinx.atomicfu 版本:0.14.4
kotlinx.html 版本:0.7.2
kotlinx-nodejs?版本:?0.0.6
可以在相應的存儲庫中找到?kotlin-wrappers(?kotlin-react等)的庫版本。
最新的 IDE 性能改進(包括加速的代碼高亮顯示) 只能與 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。
如果您在新版本中遇到任何問題,可以在 Slack 上尋求幫助(在此處獲得邀請)并在我們的 YouTrack 中報告問題。
謝謝!
非常感謝所有試用過 Kotlin EAP 和實驗性功能并提供反饋的人。我們正在與您一起開發 Kotlin 語言,并根據您的寶貴意見做出許多設計決策。與社區保持這種快速有效的反饋循環對確保 Kotlin 成為最佳狀態非常重要!
我們要衷心感謝所有外部貢獻者,此版本中包含了他們的拉取請求。是你們幫助我們讓此版本得以問世!
我們感謝社區中所有與 Kotlin 共同創造了許多令人驚奇的事物的成員。?Kotlin 1.4:我為人人!
最后,再附上我歷時三個月總結的?Java 面試 + Java 后端技術學習指南,筆者這幾年及春招的總結,github 1.5k star,拿去不謝! 下載方式1.?首先掃描下方二維碼2.?后臺回復「Java面試」即可獲取總結
以上是生活随笔為你收集整理的Kotlin 越来越牛逼了!学Java都我想转了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThreadPoolExecutor 八
- 下一篇: 为什么Java中1000==1000为f