Kotlin 一統天下?Kotlin/Native 開始支持 iOS 和 Web 開發

2022-01-09 OSC開源社區


掃描二維碼或點擊圖片進入西安源創會報名

KotlinConf 大會宣布了 Kotlin 1.2 RC 版,並宣布 Kotlin/Native 已支持用於開發 iOS 應用和 Web 應用開發。

首屆官方舉辦的 Kotlin 專題會議 KotlinConf 於昨天正式開幕,來自世界各地約 1200 名與會者齊聚舊金山,在這場盛大的 KotlinConf 大會主題演講中,Kotlin 的首席語言設計師 Andrey Breslav 公布了一系列與 Kotlin 緊密相關的重大發展成果,我們不妨關注一下 ——

Kotlin 1.2 RC

首先宣布了 Kotlin 1.2 RC 版(即 1.2 首個候選發行版)。該版本引入了一系列新功能,包括對多平臺項目的實驗性支持 —— 允許開發者在針對 JVM 和 JavaScript 的模塊之間共享代碼,以及多項對語言方面的改進 —— 包括支持在注釋中使用數組字面量。更多關於 1.2 版本新功能的內容,點此查看。

此外,值得關注的就是協程這個特性了。雖然協程仍然被標記為實驗性狀態,但官方特意說明了這裡「實驗性」代表的含義。官方表示協程已經完全準備好用於生產環境,他們也已使用協程進行開發,而且也沒發現在使用當中出現任何重大問題。之所以仍保持實驗性狀態,是為了能夠對 Kotlin 繼續進行設計迭代。根據目前的計劃,Kotlin 1.3 將會刪除協程的實驗性狀態。

Kotlin/Native 對 iOS 開發的支持

另外一個重大消息就是 Kotlin/Native 已支持用於開發 iOS 應用,這也將是 Kotlin/Native 0.4 的特性之一。雖然對 iOS 開發的支持仍處於早期階段,但確實已經實現了,這是在所有平臺上使用 Kotlin 進行開發的重要一步。

官方還特意展示了利用 Kotlin/Native 開發的兩款應用(Spinner app (GitHub)、KotlinConf app (GitHub)),它們都可以運行於 iOS 和 Android 平臺。Android 和 iOS 平臺共享了不少代碼,其中包括大多數圖形處理、聲音播放和用戶輸入響應代碼。

兩款應用都已開源,你可以將它們作為模板,僅使用 Kotlin 構建自己的跨平臺移動應用。點此可了解其中一款應用。

IDE 對 Kotlin/Native 的支持

Kotlin/Native 也將迎來 IDE 的支持。官方表示首先將在 C/C++  IDE CLion 中試用該功能,目前正在發布一個名為 Kotlin/Native plugin for CLion 的插件,該插件支持使用 CMake 作為構建系統。其中包含來自 IntelliJ IDEA 的 Kotlin 插件中全部代碼編輯功能集,同時初步支持項目創建、測試與調試等操作。

使用 React 和 Kotlin 創建現代 Web 應用

對於使用 Kotlin 進行 Web 前端開發的開發者,Andrey Breslav 在大會上還公布了另外一個重大消息 —— 正式發布了針對 React.js 的官方 Kotlin 封裝工具。此外,還有一個名為 create-react-kotlin-app 的工具集 —— 通過 Kotlin 使用 React.js 創建現代 Web 應用。

使用 create-react-kotlin-app,可讓開發者無需費心於項目設置和配置構建這些工作,能專注於快速開始客戶端應用開發,同時體會到靜態類型語言的優勢以及由 JavaScript 生態系統帶來的強大配套資源。詳情點此了解。

未來的發展方向

Kotlin 語言的未來發展方向主要是在 Kotlin 支持的平臺之間實現更好、更廣泛的代碼重用。官方表示計劃通過使用同一 API 以擴展全部平臺上的可用庫資源集合,其中涵蓋 I/O、網絡、序列化以及日期處理等。

編譯器方面,1.3 版本仍集中關注內部層面的變更,而不是外部可見的語言特性。內部的改變能提高性能、改進類型推斷、為所有目標平臺生成更高效的代碼,以及帶來更好的 IDE 插件響應能力。

關於 Kotlin/Native

說了這麼多,Kotlin/Native 到底是什麼?Kotlin/Native 能將 Kotlin 編譯成機器碼,目前還處於技術預覽版階段,離商用估計還需要至少一年的時間。

Kotlin/Native 不是 Jni 的概念,它不僅僅是要與底層代碼比如 C、C++ 交互,而且還要繞過 JVM 直接編譯成機器碼供系統運行。這說明了什麼?Kotlin 準備扔掉 Java 這根拐杖了。

第一次看到 Native 這個名字或許會很自然地想到 Jni,Kotlin 跑在 JVM 上面,使用 Jni 與底層代碼交互。不過詳細深入研究後可以發現,Kotlin 開發團隊的野心不可小覷,Java 誕生這麼多年,也沒有涉足過編譯成除 Java 虛擬機字節碼以外的字節碼的事情,Kotlin 才這麼年輕,不得不說十分具有革命性。

所以如果有人再問你什麼是 Kotlin,你應該回答,Kotlin 是一門很厲害的靜態語言(而不是之前常說的 Kotlin 是一門運行在 JVM 之上的靜態語言)。反正你能想到的,Kotlin 的開發團隊都想幹。

時鐘撥回到到五個月前,2017 年 5 月 17 日 Google I/O 大會第一天,谷歌宣布 Kotlin 成為 Android 開發的官方支持語言。有了 JetBrains 和 Google 的背書,自此,對於「Kotlin 即將取代 Java 」的聲音從未停止過。上個月,我們也曾發表過一篇題為「Kotlin 將超越 Java 成為 Android 開發的第一語言?」的資訊,文中提到,Realm 公司調查報告給出的預測表示,「到 2018 年底,在 Android 開發領域,Kotlin 將超越 Java,成為開發 Android 應用的第一語言。」

不過,再看回在 KotlinConf 大會中官方已公布的關於 Kotlin 的發展成果和未來方向,Kotlin 的目標可能並不是撼動常青藤 Java 在 Android 開發領域中的地位,他們的徵途或許是星辰大海。

相關焦點

  • Kotlin要支持iOS開發和Web開發了,這是要全棧?
    我們公布的下一條重大消息是利用 Kotlin/Native 支持 iOS 開發——而這也將成為 Kotlin Native 0.4 中的組成部分。雖然這項支持尚處於早期測試階段,但其已經真實存在,並標誌著我們在推動 Kotlin 走向全平臺開發方面邁出了重要的一步。
  • Kotlin 統一移動開發?已經開始支持 iOS 和 Web 開發
    iOS 應用和 Web 應用開發。Kotlin/Native 對 iOS 開發的支持另外一個重大消息就是 Kotlin/Native 已支持用於開發 iOS 應用,這也將是 Kotlin/Native 0.4 的特性之一。雖然對 iOS 開發的支持仍處於早期階段,但確實已經實現了,這是在所有平臺上使用 Kotlin 進行開發的重要一步。
  • 開發 iOS 應用,Kotlin Native 是否夠格?
    iOS和Android平臺都非常複雜,開發者要在某一個平臺上成為專家需要數年的時間。掌握每個平臺需要懂得兩種官方支持的程式語言、硬體知識、平臺SDK和各種各樣的支持庫。希望同時支持iOS和Android應用程式的組織和公司必須至少要維持兩個開發團隊,因為同時擁有兩個平臺的豐富經驗的開發人員是非常罕見的。
  • 你學習的 Kotlin,現在可以開發 iOS 了!來~先睹為快!
    Java 代碼想在不同平臺運行,還需要依賴各種 JVM 虛擬機,而 Kotlin/Native 不需要,它直接編譯生成的就是對應平臺上可執行的二進位文件。從文檔上看 Kotlin/Native 目前支持的系統平臺有:Windows (x86_64 only at the moment)Linux (x86_64, arm32, MIPS, MIPS little endian)MacOS (x86_64)iOS (arm64 only)Android (arm32 and
  • 分享一個 Kotlin 學習方式
    2018 Google 開發者大會於今明兩天在上海舉辦,想必不少開發者從四面八方都趕赴上海參會,畢竟 Google 爸爸搞的,那還是相當有價值和含金量的。之前本人也在公眾號吐血推薦過一波 Kotlin,確實作為一個後知後覺的開發者來說,多少最開始還是對 Kotlin 有所牴觸的,不過在真正接觸以後,我發現我難以回頭了。不少小夥伴都問到到底怎麼學習 Kotlin,之前其實給大家分享過一些資料。
  • Kotlin打造Android路由框架
    在組件化開發的實踐過程中,當我完成一個模塊的開發後(比如說這個模塊中有一個Activity或者Service供調用者調用),其他模塊的開發者要啟動我這個模塊中的Activity的代碼我們再熟悉不過了:val intent = Intent(this, MainActivity::class.java)intent.putExtra("param1", "1")
  • 拋棄 Java 改用 Kotlin 的六個月後,我後悔了!
    2017年夏天,團隊發起了一個新的微服務項目,和往常一樣,我們需要對程式語言和技術進行選型。部分團隊成員是 Kotlin 的擁護者,再加上我們都想嘗試一下新的東西,於是我們決定用 Kotlin 來開發這個項目。由於 Spock 測試框架不支持 Kotlin,因此我們決定堅持使用 Groovy 來測試。
  • Adobe 使用 AI 識別 PS 「照騙」;Java 要被 kotlin 打敗了?
    不過Adobe的方法也有局限性,因為他們目前只能靠現有的大量樣本訓練來獲得較高的成功率,對於那些陰影和反射幾何失真識別學習的效果不是很好。在AI都能幫忙P圖的時代,用來幫助人類分辨哪些才是真實影像的AI技術自然也應運而生,畢竟解鈴還須繫鈴人啊。1、2018 年技能提升報告:Java 要被 kotlin 打敗了?
  • 雲音樂 React Native 體系建設與發展
    這個頁面最開始是一個 React 服務端渲染開發的 H5 頁面。底層構建根據 RN 元素和組件定義,從最底層開始用 WEB 相關特性來實現整套 RN API,這個就是 react-native-web[6]。這種方案也是目前業界主流模式。
  • 6個能讓你的 Kotlin 代碼庫更有意思的「魔法糖」(第一部分)
    原文:6 magic sugars that can make your Kotlin codebase happier — Part 1連結:https://medium.com/grand-parade/6-magic-sugars-that-can-make-your-kotlin-codebase-happier-part
  • Kotlin協程用法淺析及在京東APP業務中實踐
    /** 開始獲取數據 */    private fun start() {        getUserInfo()        getCompanyInfo()    }  /** 獲取用戶信息 */    private fun getUserInfo
  • 設計師和程式設計師的動畫還原神器Lottie+Bodymovin
    在動畫還原上,設計師和開發都碰到過以下問題:設計師即使輸出完整的動畫參數說明,使用代碼還原動效還原仍然會有偏差有了大殺器Lottie
  • 深度測評 | 五大主流多端開發框架全面對比
    使用腳手架的生成的目錄和正常的 React 項目差不多,入口在 App.tsx 文件,支持修改後的 hotRload,整個流程走下來對前端開發來說門檻不高,至少到調試開發階段,如果只單純涉及到 UI 編寫,配置完直接就可以開始幹活了。
  • 漫極客 CTO 李焱:大前端之路 —— 如何用 Web 技術一統三端開發
    公司目前業務主要包括在線 IT 教育、IT 諮詢,以及企業定製開發包括 Web 、APP 、微信公眾號、小程序、數據分析和可視化等。此外,我們目前在準備開發一個深度增強學習和遊戲相結合的項目。WebGL 支持 3D ,在此基礎上有 ar.js 的開發庫, 可以比較高效的寫出 3D 程序。剛剛說過,WebRTC 可以調取攝像頭,攝像頭結合 3D 就能做出 AR 和 VR 效果。https://aframe.io 是火狐開發的專門做 AR/ VR 的框架。
  • Netflix 是如何實現 Android與iOS 共用一套代碼?
    工作性質的變化,意味著我們需要在分布式環境中的設備上開發出高寫入強度軟體,其中約三分之一用戶的網絡連接條件並不穩定,容錯能力也相當有限。作為一支小型工程團隊,我們意識到必須對可靠性及產品交付速度進行優化,才能滿足不斷變化的客戶需求。 由於網絡連接的可靠性不高,因此我們更傾向於推出移動解決方案,藉此實現強大的客戶端持久性與脫機支持能力。
  • React Native 0.62 發布,默認支持 Flipper,新的暗黑模式
    React Native 0.62 發布了,此版本一大亮點是默認支持 Flipper。
  • 入門實踐丨如何在K3s上部署Web應用程式
    在我們繼續之前,我會討論我們如何使用容器來讓我們的開發更加輕鬆,特別是如果我們在一個團隊中工作,或者是當我們在一個新的環境中工作時,希望減輕開發人員的負擔。一旦我們將應用程式容器化,下一步就是將它們部署到Kubernetes上。雖然我們可以手動創建服務、Ingress和網關,但我們可以使用Knative以在任何時候都支持我們的應用程式。