蘋果開發團隊拒絕 Java,轉向 Swift

最近,蘋果的開發團隊在一份新的案例研究中透露,他們覺得“Java 的記憶體管理方式已經跟不上我們越來越高的需求和效率目標了。”
所以,他們開始尋找更有效率的程式語言。

他們選了 Swift 語言,然後說他們實現了硬體利用率降低 50%,記憶體減少 90%,吞吐量提高 40%。

這個項目是關於密碼監控的,它讓用戶根據一個洩漏的密碼清單來檢查自己的密碼。
開發團隊說,這個應用程式「每天都會收到全球設備的數十億個請求」。

這個服務是在 Linux 系統上運行的,並且使用了分層加密,這使得每個請求需要更多的計算資源。
專案的核心開發人員這樣說:“我們團隊多年來一直用 Java 來支援大規模、關鍵的任務,因為它既穩定又性能好。”
但是,Java 的垃圾回收機制有點問題,所以他們決定換一種語言。
垃圾回收(GC)是一種自動管理記憶體的技術,它會定期清理不再需要的記憶體。
儘管 Java 的 GC 已經改進了,但在高負載下 GC 暫停和效能開銷還是個問題。
另外,Java 擴充起來也有點困難。
服務的負載一天之內變化很大,Apple 會根據需求調整硬體架構和頻寬。
當需要啟動新硬體時,啟動時間很關鍵,而像 Java 這樣的託管語言因為執行時間要求高,啟動會慢一些。
最後,他們決定用 Swift 來重寫這個服務。 Swift 是蘋果開發是 Objective-C 的新選擇。他們用的 Web 框架是開源的 Vapor。
Swift 也有自動記憶體管理,但它用的是 ARC(自動引用計數)。
ARC 和其他垃圾回收方法相比有爭議;但在他們的服務中,團隊發現了一些顯著的改進,例如在 Kubernetes 上運行的服務中,記憶體使用量減少了 90%,硬體使用率降低了一半。
在程式碼移植方面,程式碼行數減少了近 85%,這可能比記憶體管理的改進更重要。
團隊發現 Swift 有一些特性讓程式碼更簡潔明了,例如強調協定而不是繼承,使用 async 和 await 實現並發,以及型別安全,這樣就不需要檢查空值了。
Swift 比 Java 更有效率嗎?還是說重寫只是為了程式碼更好看?
兩種說法可能都有道理。
Swift 直接編譯成原生程式碼,不需要 JVM(Java 虛擬機)或 JIT(即時編譯器)。
蘋果推廣 Swift 有自己的理由;儘管團隊暗示在決定放棄 Java 後,Swift 並非唯一選擇,但不可否認的是,內部壓力很大,如果遷移到 Go(Kubernetes 的開發語言)或 Rust,可能會帶來類似的改進。
Java 正在慶祝它的 30 歲生日,它的高效率和可靠性都得到了大家的認可。
話雖如此,儘管這個消息可能會讓 Java 社群有點失望,但值得注意的是,遷移到更有效率的語言可以帶來這麼大的效能提升和成本節省

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


*