Kotlin Native新增Objective-C互操作能力以及對WebAssembly的支援

來源:互聯網
上載者:User

Kotlin Native新增Objective-C互操作能力以及對WebAssembly的支援

根據JetBrains技術主管Nikolay Igotti的介紹,Kotlin/Native 0.4已經可用於為iOS和macOS開發原生應用。此外該版本還為WebAssembly平台提供了實驗性支援。

Kotlin/Native對iOS/macOS開發的支援,關鍵在於實現了與Objective-C的互通性。JetBrains目前已經發布了一個非常簡單的示範應用,該應用使用Kotlin編寫,發行至Apple Store和Google Play。

下列程式碼片段展示了訪問iOS架構的方式:

import kotlinx.cinterop.*import platform.Foundation.*import platform.objc.*import platform.osx.*fun readResource(resourceName: String): ByteArray {    val filePath = NSBundle.mainBundle.pathForResource(resourceName, ofType = null)  val fileData = NSData.dataWithContentsOfFile(filePath!!)  ?: throw Error("failed reading resource $resourceName")  return fileData.bytes!!.readBytes(fileData.length.toInt())}

這一切都是通過新的platform實現的,並通過庫實現了對底層作業系統介面的訪問。藉此便可以使用提供了POSIX OS層的平台執行各類操作,如調用fopenfread等。以前與底層平台的互操作則需要專門產生的Interop Stub。

新版的另一個新功能對象固定(Object pinning),主要是為了簡化通過C API使用Kotlin對象的方式,藉此可以確保通過C API消費的對象能夠鎖定到記憶體中。

Kotlin/Native現已開始支援WebAssembly,因此可以通過Kotlin開發基於瀏覽器的應用。但根據Igotti的介紹,由於瀏覽器支援方面的局限,這種支援目前依然是實驗性質的。

在工具方面,調試功能現已支援在運行時檢查大部分變數。此外同樣重要的是,還通過一個新的外掛程式讓CLion可以支援Kotlin/Native。

Kotlin/Native是Kotlin的最新成果,可用於將最初僅僅基於JVM的語言Kotlin編譯為無需虛擬機器即可啟動並執行原生庫。因此該技術非常適合諸如iOS等平台以及嵌入式裝置等不能或者無法運行虛擬機器的環境。Kotlin/Native目前已經可以支援Windows、Linux、macOS、iOS、Android和WebAssembly。

閱讀英文原文:Kotlin Native Adds Objective-C Interop, WebAssembly Support

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: