Kotlin 1.4.0 今日釋出! 在過去的幾年裡,我們一直在努力使 Kotlin 成為一種有趣、令人愉快且高效的程式語言。 為了藉助此版本的 Kotlin 繼續追求這一目標,我們投入了大量精力和努力來提高 Kotlin 及其工具的效能和質量。 我們也很興奮地宣佈支援多種新的語言功能,包括期待已久的 Kotlin 介面的 SAM 轉換。
為了幫助您充分利用 Kotlin 1.4 中引入的變更和改進,我們邀請所有人參加 Kotlin 1.4 線上活動,在為期四天的活動中,您將能夠參與 Kotlin 演講、Kotlin 團隊問答等活動——完全免費!
社群和生態系統
在過去 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 線上活動!
這次活動為期四天,將詳細介紹有關 Kotlin 以及該語言與其生態系統的未來的知識:我們將探討 Kotlin 1.4 的全新變更和改進,並分享我們對該語言的未來計劃。 我們的 Kotlin 團隊成員將在每日問答環節中回答您的問題。 透過使用 #kotlin14ask 標籤在 Twitter 上發表推文或者使用此表單提前提交您的問題。
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 標準庫獲得了新集合運算子、委託屬性改進以及雙端佇列實現 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 的一個重點是可與 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:我為人人!