导读:Oracle 近日警告开发者不要升级Apple 芯片上的 macOS Sonoma 到14.4,JetBrains IDE 会受到严重影响。
Apple 因对 macOS 的 Sonoma 14.4 更新进行系统更改而受到业界批评,它的此次升级破坏了一些 Java 应用程序特性。
Oracle 警告 Java 开发者用户不要马上更新,因为使用基于 JVM(Java 虚拟机)构建的 JetBrains IDE 的开发者已经受到了影响。
主要表现的问题:在运行 Apple Silicon 的系统上,操作系统行为的改变会在没有警告的情况下终止应用程序。并不意味着所有 Java 应用程序都会崩溃,而只是那些依赖先前行为的应用程序会崩溃,也就是说在使用相应功能时才会崩溃。
Oracle 产品管理高级总监 Aurelio Garcia-Ribeyro发出警告说:
“目前还没有可用的解决方法,而且由于没有简便方法来恢复 macOS 的旧版本,受影响的用户无法恢复到稳定的配置,除非他们在操作系统更新之前对系统进行了完整备份。”
从技术侧描述,是当进程访问受保护的内存时会发生哪些情况:早期版本的 macOS 中,包括 14.4 的预览版,内核会向进程发送 SIGBUS 或 SIGSEGV 信号,该信号可以被操作系统接受并处理。
而在 macOS 14.4 发行版本中,会发送 SIGKILL 信号,这意味着进程将终止。
Garcia-Robeyro 称自己观察到的详情如下:
“这个问题在 macOS 14.4 的体验版本中并不存在,因此直到 Apple 发布更新后才被发现”,这意味着无法为该问题做好准备或提前警告用户。“Oracle 已将这一情况通知客户、Apple 和OpenJDK 合作伙伴,我们建议运行 macOS 14 的基于 ARM 的 Apple 设备上的 Java 用户推迟应用更新,直到此问题得到解决。”
相关的OpenJDK 错误报告被标记为“未解决”,并影响到了 JDK 8、11、17、21 和 22。
JetBrains 的 Maxim Kartashev这样说:
“这个问题是随着 macOS 14.4 的发布而出现的;我们常规测试的 14.4 Beta 中并不存在这个问题。目前来自多家公司的人员正在研究一个强大的解决方案,但是这得需要一些时间。”
有开发者也跑出来向大家这样反映:
JetBrains 为其 IDE 提供了预发布运行时,能缓解但不能完全解决问题。就在刚才,我在更新的运行时版本中再次发生桌面程序崩溃” 。
另一位开发者也表示:“不敢相信苹果在最后一刻,在一个小版本中对整个 Java 社区做出了这样的事情。”
这是 macOS 14.4 中的bug,还是 Apple 认为自己正在加强安全性?两者皆有可能,但在最后一刻在没有警告的情况下做出这一重大改变似乎不合理。
Oracle已要求苹果给它一个完美的解释。
这个故事也给企业团队们,特别是 Windows 管理员可能更熟悉的一个情节:“是否尽早更新操作系统以从安全补丁中受益,还是仅在测试潜在损坏后才进行延迟更新”。
闲言少叙,新操作系统虽然好看但可能有坑,特别提请Java开发者注意~
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。