Blog chevron_right Java

移除 Java 所带来的成本和复杂性是否值得?

Is the Cost and Complexity of Removing Java Worth It?

Oracle Java 的许可和定价挑战正迫使各公司探索其他替代方案。许多公司正在考虑迁移到 OpenJDK 发行版,有些公司甚至正在考虑移除 Java,转而使用其他编程语言。Azul 副首席技术官 Simon Ritter 清晰地阐述了将整个应用程序资产从 Java 迁移出去所涉及的真正风险和益处。 

鉴于 Java 这种编程语言和工具包在您的应用程序和基础架构中无处不在,移除 Java 可能是一个复杂的过程。在 Oracle Java 的许可和定价挑战迫使各公司探索其他替代方案的背景下,许多公司正在考虑迁移到 OpenJDK 发行版。 

然而,一些公司甚至考虑将其业务应用程序重构为其他编程语言,只为避免 Oracle 带来的风险和持续的不确定性。四年内,许可和定价政策发生了四次变化,这种不确定性不太可能在短期内消失。 

以下清晰地阐述了选择将整个应用程序资产从 Java 迁移出去所涉及的真正风险和益处,以便您能够充分了解这种决策的影响及其不切实际之处。

误区与现实
误区:摆脱 Java 比应对 Oracle 的 Java 许可和定价风险更容易。如果 Oracle 在 Java 方面制造了问题,那就消除问题的根源,转而使用另一种编程语言。

现实:摆脱 Java 并非易事。重写代码可能需要数年时间,并且存在代码无法实现相同功能以及可能引入新漏洞的固有风险。认真考虑使用其他语言重写的组织通常会得出结论:存在更好且更具性价比的替代方案。

如果 Oracle 的定价、许可和执行策略变得过于繁琐,一些公司可能会放弃,考虑彻底移除 Java。Java 凭借其久经考验的速度、可扩展性、稳定性、安全性以及每季度的功能增强和升级,成为大多数企业应用程序的主流语言。此外,它也是大多数组织开发人员的一项核心技能。重构并重新开始会给内部应用程序开发人员带来严重影响,因为团队要么需要学习其他编程语言,要么需要被替换。

撇开所有这些不谈,鉴于 Java 这种编程语言和工具包在您的应用程序和基础架构中无处不在,移除 Java 可能是一个复杂的过程。 

例如,Spring、Struts、Google Web Toolkit、Grails、Vaadin 和 Apache Log4j 等热门框架和工具都依赖于 Java 开发工具包 (JDK),而 JDK 正是“Oracle Java”的核心。Apache Tomcat、Jetty 和 Wildfly/JBoss 等 Web 服务器也依赖于 JDK。Kafka、Hbase 和 Solr 等基础架构也依赖于 JDK。这些程序各自都有其优势,需要用其他语言来替代,您需要验证这种迁移是否值得。 

如果您需要在 Oracle 将您转移到昂贵的许可计划之前摆脱 Oracle Java,那么是时候找到一个价格合理的 Oracle Java SE 替代方案了,该方案应提供版本间兼容性和同样及时的更新。 

如果您仍然选择继续移除 Java,以下是您需要克服的一些挑战: 

为什么移除 Java 如此困难? 

以下是从生产环境中移除 Java 时的一些典型挑战: 

  • 识别所有依赖 Java 的应用程序:这可能很困难,尤其是在大型复杂环境中。审查应用程序清单、采访应用程序所有者并扫描系统中的 Java 应用程序。您还可以搜索 Java 关键字,例如类、接口、方法和变量。
  • 更新应用程序以使用其他编程语言或平台:这可能是一个耗时且成本高昂的过程。重构代码(在不改变代码工作方式的情况下引入增量更改以提高可读性或互操作性)可能非常复杂。用另一种语言完全重写代码是一项可能需要数年时间的工作,具体取决于代码量和环境的复杂程度。
  • 测试应用程序以确保它们在新语言环境下仍能正常运行:这对于避免关键业务应用程序中断至关重要。确定应用程序在没有 Java 的情况下是否能继续运行,并识别移除 Java 可能带来的任何潜在风险或中断。Java 代码依赖于基于 Java 的库和应用程序。

降低 OpenJDK 迁移中的风险 

组织可以采取措施降低发生灾难性事件的风险。这些步骤包括: 

  • 创建环境备份:这使您可以在出现问题时恢复环境。 
  • 一次从一台服务器中移除 Java这将有助于您在从整个环境中移除 Java 之前识别并解决问题。 
  • 移除 Java 后监控应用程序:这将有助于您识别可能出现的任何问题。 
  • Java 代码替换为其他语言的等效代码:这可以通过使用代码转换器或手动编写代码来完成。 
  • 测试代码以确保其仍然有效:这可以通过运行代码并检查错误来完成。 

重构 Java 代码的艺术 

如上所述,重构 Java 代码存在风险并且需要时间。大多数大型企业都会发现自己需要重构来自多个 Java 发行版和版本的代码。 

继续使用 Java 的公司可能拥有精通代码的人员来进行重构。然而,用其他语言替换 Java 则要棘手得多,可能需要引入一批新的人才或组建一个外包团队。这两种方法都可能代价高昂、耗时良久,且存在风险。 

处理 Java 依赖项  

Java 应用程序通常依赖于许多不同的库和框架。如果移除其中一个依赖项,可能会导致应用程序崩溃。循环依赖项可能会导致问题,包括相互依赖模块之间的紧密耦合,从而影响每个模块的单独使用能力。 

以下是 Java 依赖项导致 Java 难以移除的一些具体原因: 

  • 版本冲突:不同版本的库可能彼此不兼容。如果您移除一个库并将其替换为新版本,则可能还需要更新应用程序中的其他库。 
  • 缺少依赖项:如果您移除应用程序中其他库所依赖的库,则这些库将不再起作用。您需要查找并安装所有缺失依赖项的替换库。 
  • 循环依赖项:两个库可能相互依赖。如果您移除其中一个库,则还需要移除另一个库。这可能会引发连锁反应,您需要移除越来越多的库,直到移除所有循环依赖项。 

您可以采取以下措施来更轻松地移除 Java 依赖项: 

  • 使用依赖项管理工具:依赖项管理工具可以帮助您跟踪应用程序依赖于哪些库,以及这些库的哪些版本相互兼容。 
  • 使用构建工具:构建工具可以帮助您自动执行更新和移除库的过程。 
  • 全面测试您的应用程序:在移除库之前,请务必全面测试您的应用程序,以确保它仍能正常运行。 

结语   

从公司生产环境中移除 Java 的难度取决于许多因素,包括环境的规模和复杂性、依赖 Java 的应用程序数量以及 IT 人员的专业水平。通常,从生产环境中移除 Java 是一个复杂且耗时的过程。务必仔细规划和执行移除过程,以免中断关键业务应用程序。 

此外,Java 凭借其灵活性、易用性和互操作性,仍然是世界上最受欢迎的编程语言之一。 

2023 年 Azul《Java 现状调查与报告》中,98% 的受访者在其软件应用程序或基础架构中使用 Java,57% 的受访者表示他们的大多数应用程序都基于 Java。再加上基于 Java 的框架、库和基于 JVM 的语言,Java 显然仍在现代企业中发挥着重要作用。 

Java 难以移除是否意味着您必须永远依赖 Oracle 来满足您的 Java 需求?当然不是。市面上有许多经过 TCK(技术兼容性工具包)认证的 OpenJDK 发行版,包括 Azul Platform Core

Azul Platform Core 的优势
Azul Platform Core 客户的许可费用通常比 Oracle Java 低 70%
Azul 是除 Oracle 之外唯一一家提供企业传统上更青睐的稳定安全构建版本的 Java 领导者
Azul 帮助企业从其他 Java 提供商迁移的成功率高达 100%
Azul 支持部门的客户满意度高达 100%
Azul 为 Core 订阅用户提供保障,保护他们的软件免受版权污染
了解有关 Azul Platform Core 的更多信息

本文原载于《The New Stack》。