1ccf
发布于 2025-06-05 / 6 阅读
0
0

苹果开发者放弃 Java,称切换到 Swift 节省巨大成本

发布时间:2025.06.04

源地址:https://devclass.com/2025/06/04/apple-developers-reject-java-claim-big-savings-from-switch-to-swift/

苹果内部开发团队在一项新的案例研究中透露,“Java 的内存管理方式已不再符合我们日益增长的需求和效率目标。”

该团队目前正在寻找更高效的语言,在此案例中选择了 Swift,据称实现了硬件利用率降低 50%、内存使用减少 90%、吞吐量提升 40%的效果。

该服务用于密码监控,将用户密码与泄露密码列表进行比对。根据开发团队的帖子 ,该应用每天接收来自全球设备的“数十亿次请求”。该服务运行在 Linux 上,包含分层加密,增加了每个请求所需的计算资源。

“多年来,我们团队依赖 Java 来支持大规模、关键任务服务,因为其稳定性和性能经过验证,”开发者表示,但由于垃圾回收存在问题,他们决定寻找其他语言。垃圾回收(GC)是一种自动管理内存的技术,通过定期清理不再需要的内存,尽管 Java 的 GC 有所改进,但在负载下仍存在 GC 暂停和性能开销问题。

扩展性也是一个问题。服务负载在一天中波动较大,苹果会相应调整硬件规模。按需启动新硬件时,启动时间变得关键,而像 Java 这样的托管语言由于运行时需求较高,启动时间往往较长——这是 AWS 通过其 SnapStart 技术努力解决的问题。

团队选择用 Swift 重写该服务,Swift 是苹果开发的现代替代 Objective-C 的语言。所用的 Web 框架是开源的 Vapor。Swift 同样具备自动内存管理,但与 Java 不同的是,它采用 ARC(自动引用计数)实现。关于 ARC 与其他 GC 方法的优缺点存在争议;但在此案例中,团队发现了显著改进,包括内存使用减少 90%,硬件利用率减半,服务运行在 Kubernetes 上。

代码迁移的另一个重要方面可能是代码行数减少近 85%,这比内存管理的改进更为显著。团队指出 Swift 的某些特性使代码更简洁清晰,包括强调协议(接口)而非继承,使用 async 和 await 实现并发,以及类型安全消除了空值检查的需求。

Swift 比 Java 更高效,还是重写代码本身更优?很可能两者皆是。Swift 编译为本地代码,无需 JVM(Java 虚拟机)或 JIT(即时编译器)。

苹果有其推广 Swift 的自身理由;虽然团队暗示在决定放弃 Java 后 Swift 并非自动首选,但内部压力不可忽视。迁移到 Go(Kubernetes 的编程语言)或 Rust 也可能带来类似的改进。

Java 正在庆祝其 30 周年 ,因其高效和可靠性受到广泛赞誉。话虽如此,可能会有些扫兴,但值得注意的是,迁移到更高效的语言能带来如此显著的改进和节省。


评论