Meta 宣布加入 Kotlin 基金會,將為 Kotlin 和 Android 生態提供全新支持

近日 Meta 正式宣發加入了 Kotlin 基金會,如果你對 Meta 不熟悉,那么對于開源了 React Native 的 Facebook 應該不陌生了吧?現在它也正式加入了 Kotlin 領導者的陣營:

Kotlin 基金會 是由 Jetbrains 和 Google 共同成立的基金會,而本次 Meta 的加入則是成為了 Gold (金牌)會員,而在此之前,Gradle 也只是 Silver(銀牌)會員而已。

image-20250701084013448

當然你要說 Gold 和 Silver 這兩者的最大區別,首先肯定就是會員費:

  • Gold 需要繳納 15 萬美金一年
  • Silver 需要繳納 3 萬美金一年

而 Gold 的好處就是在 Silver 所有權益下,還有資格擔任秘書職務,并且會固定擁有基金會董事的一個席位,而基金會董事的席位一般會有:

  • 有權參與制定 Kotlin Foundation 的長期戰略方向,例如 Kotlin 語言的開發重點、生態系統擴展(如 Kotlin Multiplatform)
  • 監督或參與 Operating、Ecosystem 和 Trademark 等相關工作

而 Meta 加入 Kotlin 基金會,也標志著它對 Kotlin 和更廣泛的 Android 開發生態系統的持續承諾的一個重要里程碑,當然,目前還沒看到 Meta 關于 KMP 和 CMP 的相關承諾,從歷史過往和公告上看,Meta 對于 Kotlin 主要還是集中在 Android 領域。

例如在過去幾年,Meta 工程師一直在積極地將他們龐大的 Android 代碼庫 (包含數千萬行代碼)從 Java 遷移到 Kotlin,甚至為了推進這一大規模遷移,他們還開發了一款名為 Kotlinator 的內部工具,用于自動完成大部分轉換過程,同時確保生成的 Kotlin 代碼符合語言習慣并與 Meta 的內部框架兼容。

Kotlinator 主要是基于 IntelliJ 的 J2K(Java-to-Kotlin)轉換工具,并通過一系列定制,主要核心有:

  • Kotlinator 將 IntelliJ 的 J2K 轉換工具改造成一個 headless 工具,從而支持在遠程服務器上運行,而無需依賴圖形化界面
  • 通過擴展 IntelliJ 的 ApplicationStarter 類,Kotlinator 直接調用 JavaToKotlinConverter,實現 Java 到 Kotlin 的自動轉換

而在運行 J2K 之前,Kotlinator 會對 Java 代碼進行分析和調整,例如處理空安全問題、應用已知的 J2K 轉換修復(如 JUnit 框架的特殊處理),確保代碼適合轉換等。

而在轉換后的 Kotlin 代碼也會經過進一步優化,主要是調整為更符合 Kotlin 的慣用寫法(idiomatic Kotlin),包括處理空安全、替換不規范的代碼結構(如 isEmpty 的替換)以及修復 J2K 的潛在 bug 等,例如:

  • Kotlinator 會使用靜態分析工具(如 Nullsafe 或 NullAway)檢測潛在的空指針問題
  • 利用 JetBrains 的 PSI(Program Structure Interface)庫進行代碼分析和轉換
  • 通過解析編譯器的錯誤信息,自動識別和修復轉換過程中的問題

另外 Meta 還是企業 Java-to-Kotlin 工作組的成員,這個工作組是 Google、JetBrains 和 Uber 合作,目的在于支持企業將大型 Java 代碼庫遷移到 Kotlin。

此外,Meta 還支持了 Kotlin 生態系統中的重要基礎設施工作,包括在 Buck 中開發 Kotlin 和 Android 構建工具鏈 ,重點是提高構建速度和可擴展性,以及對 Kotlin 格式化程序等庫的貢獻,幫助團隊更輕松地維護一致且慣用的 Kotlin 代碼庫。

所以雖然 Meta 之前在 Kotlin 領域貌似沒什么“熱度”,但是其實在該領域的貢獻和投入并不少。

而后續,作為 Kotlin 基金會的 Gold 會員,Meta 將為 Kotlin Grants 等重要舉措以及 Kotlin 多平臺學生競賽等教育活動繼續做出貢獻。

不知道在未來 Meta 是否會在 KMP/CMP 有全新的投入支持,畢竟在已經有 React Native 持續投入的情況下,KMP 是否能成為 Meta 的新選擇還未可知,不過,這對 Kotlin 來說,肯定是一件好事。

參考鏈接

  • https://engineering.fb.com/2025/06/30/android/meta-joins-kotlin-foundation/

  • https://engineering.fb.com/2024/12/18/android/translating-java-to-kotlin-at-scale/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87011.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

緩存系統-淘汰策略

目錄 一、LRU(最近最少使用) 工作原理 操作流程 基本特征 二、LFU(最不常使用) 工作原理 操作流程 基本特征 三、ARC 自適應 工作原理 操作流程 基本特征 四、TTL(生存時間) 工作原理 操作流…

TypeScript 安裝使用教程

一、TypeScript 簡介 TypeScript 是由微軟開發的開源編程語言,是 JavaScript 的超集,添加了靜態類型、接口、枚舉、類等特性,使開發大型應用更安全、可維護、可擴展。最終會被編譯為標準的 JavaScript 代碼在瀏覽器或 Node.js 中運行。 二、…

強化學習系列--dpo損失函數

DPO 概要 DPO(Direct Preference Optimization,直接偏好優化)是由斯坦福大學等研究團隊于2023年提出的一種偏好優化算法,可用于LLM、VLM與MLLM的對齊訓練。 算法基于PPO的RLHF基礎上進行了大幅簡化。DPO算法跳過了訓練獎勵模型這…

UniApp完全支持快應用QUICKAPP-以及如何采用 Uni 模式開發發行快應用優雅草卓伊凡

UniApp完全支持快應用QUICKAPP-以及如何采用 Uni 模式開發發行快應用優雅草卓伊凡 一、UniApp 對快應用的支持深度 UniApp 已完全支持快應用的開發和發布,具體包括: 兩種渲染模式: Webview 渲染(快應用 Light 版)&a…

js 允許生成特殊的變量名 基于字符集編碼混淆的 XSS 繞過漏洞 -- Google 2025 Lost In Transliteration

題目實現了一個字符轉換工具 在/file路由用戶可以通過 ct 參數自定義 Content-Type // 文件路由 - 提供靜態文件服務(JS和CSS),支持內容類型驗證 app.MapGet("/file", (string filename "", string? ct null, string?…

【仿muduo庫實現并發服務器】LoopThreadPool模塊

仿muduo庫實現并發服務器 1.LoopThread模塊1.1成員變量1.2構造函數13線程入口函數1.4獲取eventloop對象GetLoop() 2.LoopThreadPool模塊2.1成員變量2.2構造函數2.3配置線程數量2.4按照配置數量創建線程2.5依次分配Eventloop對象 1.LoopThread模塊 這個模塊是為了將EventLoop與…

華為云Flexus+DeepSeek征文|基于Dify構建文本/圖像/視頻生成工作流

華為云FlexusDeepSeek征文|基于Dify構建文本/圖像/視頻生成工作流 一、構建文本/圖像/視頻生成工作流前言二、構建文本/圖像/視頻生成工作流環境2.1 基于FlexusX實例的Dify平臺2.2 基于MaaS的模型API商用服務 三、構建文本/圖像/視頻生成工作流實戰3.1 配置Dify環境…

相機-IMU聯合標定:IMU更新頻率

文章目錄 ??簡介?? IMU頻率參數錯誤設置的影響? 相機-IMU聯合標定失敗:Optimization failed!?? 確定IMU更新頻率直接通過 rostopic hz 檢查實際頻率檢查 IMU 驅動或數據手冊從 bag 文件統計頻率在這里插入圖片描述修改 `update_rate` 的注意事項**最終建議****常見問題…

動手實踐:如何提取Python代碼中的字符串變量的值

要提取Python代碼中所有變量類型為字符串的變量的值,但不執行代碼(避免安全風險),可以通過靜態分析代碼的抽象語法樹(AST)來實現。以下是完整的解決方案: 本文由「大千AI助手」原創發布&#xf…

Python中字符串isalpha()函數詳解

在 Python 中,isalpha() 是字符串(string)類型的內置方法,用于檢查字符串中的所有字符是否都是字母字符(alphabetic character)。以下是詳細說明: 一、基本功能 返回值:布爾值&…

Gradio全解13——MCP詳解(4)——TypeScript包命令:npm與npx

Gradio全解13——MCP詳解(4)——TypeScript包命令:npm與npx 第13章 MCP詳解13.4 TypeScript包命令:npm與npx13.4.1 概念區分1. npm概念與運行邏輯2. npx概念及特點 13.4.2 操作示例1. 使用npm執行包2. 使用npx執行包3. 常用npm命令…

《推客小程序全鏈路開發指南:從架構設計到裂變運營》

在移動互聯網流量紅利逐漸消退的今天,如何低成本獲客成為企業營銷的核心痛點。推客小程序作為一種基于社交關系的裂變營銷工具,正成為企業突破增長瓶頸的利器。本文將為您全面解析推客小程序的開發定制全流程,幫助您打造專屬的社交裂變營銷平…

中鈞科技參加中亞數字經濟對話會,引領新疆企業數字化新征程!

6月27 日,烏魯木齊成為數字經濟領域的焦點,中國新疆 - 中亞國家數字經濟和數字貿易企業對話會在此盛大舉行。 來自中亞國家及新疆數字經濟領域的100 余位核心代表齊聚一堂,圍繞數字經濟時代的機遇、挑戰與策略展開深度探討。 本次對話會由新…

k8s一鍵部署tongweb企業版7049m6(by why+lqw)

聲明 1.此貼僅供參考,請根據自身需求在測試環境測試和修改。 安裝準備 1.獲取對應的安裝包和授權,并將授權和安裝包放在同一個目錄下 2.docekr已配置遠程倉庫 3.提前拉取jdk的鏡像(這里配置了使用openjdk:8) 安裝 將以下內容復制到k8s_…

Qt 與 Halcon 聯合開發六:基于海康SDK設計完整的相機類【附源碼】

在現代工業自動化、機器人視覺、等領域,相機模塊的作用至關重要。通過相機模塊采集到的圖像數據,我們能夠進行一系列的圖像處理和分析。為了高效地控制相機和處理圖像,本篇文章將介紹如何使用Qt和Halcon聯合開發一個相機模塊,幫助…

第7篇:Gin模板引擎——服務端頁面渲染

作者:GO兔 博客:https://luckxgo.cn 分享大家都看得懂的博客 引言 在Web開發中,服務端頁面渲染(SSR)依然是構建動態網頁的重要方式。Gin框架雖然以API開發見長,但也內置了強大的模板引擎支持,基于Go標準庫的html/template包實現。本文將深入…

RagFlow 源碼部署啟動指南

一、環境準備 1. 安裝 uv 和 pre-commit 如果已安裝,可跳過。推薦使用官方方式安裝,避免報錯: pipx install uv pre-commit export UV_INDEXhttps://mirrors.aliyun.com/pypi/simple安裝報錯 使用清華源安裝: pipx install uv…

【Python基礎】12 閑談分享:Python用于無人駕駛的未來

引言:一個程序員的自動駕駛夢想 還記得2016年的那個秋天,我第一次坐進特斯拉Model S的駕駛座,體驗Autopilot功能。當方向盤開始自己轉動,車輛在高速公路上自動跟隨前車時,我的內心涌起了一種奇妙的感覺——這不就是我…

為什么js是單線程?

js單線程,同一時間只能做一件事 。js的單線程 主要與它的用途有關。作為瀏覽器腳本語言,js的主要用途是與用戶互動,以及操作DOM。這決定了它只能是單線程,否則會帶來很復雜的同步問題。如果js同時有兩個線程,一個線程在…

DVWA靶場通關筆記-文件包含(Medium級別 9種滲透方法)

目錄 一、文件包含 1、原因 2、危害 3、防范措施 二、代碼審計(Medium級別) 1、滲透準備 (1)配置php.ini (2)file1.php (3)file2.php (4)file3.php…