Android主要開發語言Kotlin 2.0現在已經正式發布,這是帶有K2編譯器的重大更新版本,新的K2編譯器不只能夠更好地理解程式碼,編譯速度也提升一倍,而且使Kotlin 2.0的多平臺支援更強大,伺服器端、網頁、桌面、iOS和Android應用程式,都可以共用同一套程式碼庫。

K2編譯器現在已經成為Kotlin 2.0預設的穩定編譯器,適用於JVM、原生、WebAssembly和JavaScript等各種目標平臺。K2編譯器的一大特色,便是效能的顯著提升,加快了新語言功能的開發,並且統一了Kotlin所支援的所有平臺,替多平臺專案提供更好的架構。為了確保K2編譯器的穩定性,JetBrains團隊已經編譯了來自用戶和內部專案總共1,000萬行的程式碼,在測試過程,也已有1.8萬名開發者與8萬個專案參與測試。

由於Kotlin 2.0採用了新的K2編譯器,因此在多平臺的支援上,有了長足的改進。在之前Kotlin編譯器的設計,無法於編譯時分離通用和平臺程式碼集,所以通用程式碼可能會存取平臺程式碼,而這可能會因平臺差異而產生不同的行為,此外,通用程式碼中的一些編譯器配置和相依項目,也會洩漏到平臺程式碼中,通用程式碼和平臺的界線變得模糊,可能導致程式碼難以維護和管理,甚至發生錯誤。

在Kotlin 2.0中,由於K2編譯器重新設計了編譯架構,在編譯期間嚴格分離通用和平臺程式碼集,開發團隊提到,這項變更的好處在使用expected和actual函式的時候會更為明顯,因為過去通用程式碼中的函式呼叫,可能會解析到平臺中的函式,但現在這種情況已經得到改正。

除了編譯時通用和平臺程式碼分離之外,另一個多平臺功能更新是expect和actual宣告的可見等級管理調整。在Kotlin 2.0之前,多平臺專案使用expect和actual宣告,兩者必須具有相同的可見性等級,例如expect宣告為public,則相對應的actual宣告也必須是public。

而Kotlin 2.0的expect和actual宣告,則可以具有不同的可見性等級,只是actual宣告的可見性等級,必須比expect宣告更寬鬆,或更具包容性。這個改進使得多平臺開發更為靈活,允許在不同平臺調整可見性層級,並同時維持程式碼的一致性和可讀性。

Kotlin 2.0編譯速度大幅提升,部分專案甚至可達到之前版本的2倍速,除了編譯速度,IntelliJ IDEA的K2模式效能也有明顯改進,在IntelliJ IDEA Ultimate的程式碼庫中,程式碼突出顯示的速度提升至1.8倍,程式碼完成速度也是之前的1.5倍。目前K2模式的IntelliJ IDEA還在Alpha階段,官方預計會在2024年底成為預設模式。

Kotlin 2.0也提供對Compose Multiplatform專案的原生支援,Jetpack Compose編譯器被合併到Kotlin儲存庫中與Kotlin一同發布,開發者使用Compose Multiplatform進行多平臺UI開發將會更方便。Kotlin開發團隊正在積極開發新一代Kotlin Multiplatform函式庫格式,供開發者從任意主機開發和發布Kotlin Multiplatform函式庫與通用Kotlin函式庫。

熱門新聞

Advertisement