背景
Oracle 與 Google 因 Android 使用 Java 爆發專利戰。Xamarin 團隊將 C# (Mono) 定位為高性能、低功耗的 Java 替代方案,並展示跨平台程式碼共享 (iOS/Android/Windows Phone)。
關鍵里程碑
- 2011 波士頓團隊聚會:討論 Dalvik 效能瓶頸,萌生「將 Android 原始碼翻譯為 C#」瘋狂想法。
- 啟動 XobotOS 研究專案:機器翻譯 Java → C#,移除 Java 依賴,直接在 Mono 上運行 Android。

成果展示
已將 Android 大部分佈局與控件翻譯為 C#,Linux 工作站成功運行無任何 Java 成分的 XobotOS。

核心技術:Sharpen 翻譯工具
- Android 逾百萬行 Java 碼,需自動化翻譯並追蹤上游更新 (2.x → 4.0)。
- 基於 Sharpen (Frank Krueger 曾用於將 Java App 移植至獲獎 iPad App) 深度改造,打造高可用 Java→C# 翻譯器。
- 新版 Sharpen 隨 XobotOS 開源,回饋社群。
性能優勢:C#/Mono vs Java/Dalvik
- 值類型:結構體降低小物件記憶體開銷,虛函數 opt-in 設計簡化 VM。
- 真泛型:運行時保留類型參數,避免 Java 類型擦除帶來的裝箱/轉型開銷。
- 成熟運行時:Mono 經過十年打磨,即將釋出第 8 版,擁抱動態、非同步、迭代器、函數式、平行運算等現代特性。
基準測試 (二叉樹) 顯示結構體與泛型性能巨大差距:

後續技術落地
- 直通 Skia 圖形:繞過 Java 中介層,Mono P/Invoke 直連 Skia 原生渲染。
- Java2C# 工具鏈:Sharpen 開源化,支援更多遷移專案。
- 關鍵路徑 C# 重寫:將效能敏感 Java 區塊替換為 C# 實作,整合至 Xamarin 產品線。
啟示
瘋狂想法可能孕育關鍵技術突破。Xamarin 現正招募人才,共同引領行動開發浪潮。
