Kotlin 2.3.0:多平台工具鏈強化與 JVM/Wasm 互通性提升
JetBrains 於 2024 年發佈 Kotlin 2.3.0,重點聚焦於多平台工具鏈的穩定化以及 JVM 與 WebAssembly 之間的互通性。對於需要在 JVM、原生、Wasm 與 JavaScript 之間共享代碼的企業開發者而言,此版本提供了多項實際可落地的改進。
1. JVM 端:支援 Java 25 與 Gradle 9.0
Kotlin 2.3.0 首次正式支援 Java 25 bytecode,意味著可直接使用 Java 25 新增的語法特性與 API,無需等待 Kotlin 的後續語言更新。配合 Gradle 9.0 的相容性,開發者可以在 Gradle 9.0 專案中無縫使用 Kotlin 2.3.0,並透過新的「generated sources」API 更方便管理編譯器產出的 Kotlin 來源檔。這對於大型專案的 Gradle 依賴解析與增量編譯有顯著效益。(Kotlin docs)
plugins {
id 'org.jetbrains.kotlin.jvm' version '2.3.0'
}
kotlin {
jvmToolchain(25)
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
freeCompilerArgs += ["-Xexplicit-api=strict"]
}
}
2. 原生端:Swift 互通與 C/Objective‑C 進入 Beta
原生編譯器在 2.3.0 版中加入了 Swift export 的進一步優化,支援原生列舉與可變參數,並將 C 與 Objective‑C 函式庫匯入推進至 Beta 階段。對於 iOS/macOS 目標,這降低了跨語言呼叫的開銷,並提升了編譯速度。iOS、tvOS 與 watchOS 的最低支援版本亦被調升,確保新功能能在最新作業系統上正常運作。(iThome, 2024)
3. WebAssembly:完整類別名稱與例外處理預設啟用
在 WebAssembly 目標上,Kotlin 2.3.0 於 wasmWasi 目標預設啟用新版 WebAssembly 例外處理提案,並啟用 KClass.qualifiedName 以在執行期取得完整類別名稱。這使得從 JVM 轉移到 Wasm 時,除錯與日誌輸出不再失真,提升跨平臺開發的一致性。若需在 wasmJs 目標下使用例外處理,可透過編譯器選項手動開啟。
(Kotlin docs)
kotlin {
wasm {
target("wasmWasi") {
browser {
// 例外處理預設開啟
useWasmExceptionHandling(true)
}
}
}
}
4. JavaScript:suspend 函式與 LongArray 互通
JavaScript 目標新增兩項互通功能:可將 suspend 函式直接匯出給 JavaScript 使用,並提供以 BigInt64Array 表示 LongArray 的選項。這對於需要在前端使用 Kotlin 協程的場景尤為重要,能減少 JavaScript 與 Kotlin 之間的轉換成本。舉例來說,以下程式碼展示了如何在 JS 中呼叫 Kotlin 的 suspend 函式:
import { mySuspendedFunction } from './kotlinProject.js';
async function callKotlin() {
const result = await mySuspendedFunction();
console.log(result);
}
5. 語言層級穩定化:未使用回傳值檢查與型別別名
雖然本篇聚焦於工具鏈,但值得注意的是,Kotlin 2.3.0 將「巢狀型別別名」與「when 表達式的資料流窮盡性」提升為穩定功能,並新增未使用回傳值檢查機制。這些改進使得跨平臺代碼更易於維護,減少因遺漏回傳值而導致的錯誤。
(Kotlin docs)
6. 影響與升級建議
- 若專案已使用 Gradle 9.0,直接將 Kotlin 版本升至 2.3.0,並檢查 Java 25 的相容性。
- 對於 iOS 目標,提前評估 Swift export 的變更,以確保現有原生呼叫不受影響。
- 若使用 Wasm,確認是否需要在 wasmJs 目標開啟例外處理,以維持一致的錯誤行為。
- 在 JavaScript 與 Kotlin 之間共享大型 LongArray 時,考慮使用 BigInt64Array 以優化效能。
結論
Kotlin 2.3.0 以多平台工具鏈的穩定化與跨語言互通性為核心,為企業級開發者提供了更高效、更一致的開發體驗。從 JVM 端的 Java 25 支援,到 Wasm 與 JS 的互通改進,皆讓 Kotlin 成為真正的「跨平台程式語言」選擇。隨著 Gradle 9.0 與 Kotlin 2.3.0 的同步推進,企業可在不大幅改動現有基礎設施的情況下,逐步享受這些新功能帶來的效益。
參考資料與原文來源
- 🔗 原文來源: https://www.ithome.com.tw/news/173057
- 🔗 原文來源: https://kotlinlang.org/docs/whatsnew23.html
- 🔗 原文來源: https://kotlinlang.org/docs/whatsnew-eap.html
- 🔗 原文來源: https://kotlinlang.org/docs/releases.html
- 🔗 原文來源: https://medium.com/@codingwithbikash/kotlin-2-3-0-is-here-the-7-changes-every-android-developer-should-know-44ebde341c92
🧠本文由 DreamJ AI 技術新聞生成系統 自動撰寫並進行語意優化,僅供技術研究與教學使用。
請以原廠公告、CVE 官方資料與安全建議為最終依據。












發佈留言