Blog chevron_right 未分类

Java 28 年:依旧惊喜连连

自 1995 年横空出世以来,Java 二十多年间都是应用程序和基础架构开发的重要支柱。我们组织编制了 2023 年 Azul《Java 状态调查与报告》,指导您了解 Java 采用情况和各方面趋势,其内容包括 Java 作为世界上使用最广泛的一种编程语言,如何应对 Oracle 四年来对其定价或许可进行的第四次重大更新所带来的一系列挑战。其他挑战包括企业将基于 Java 的应用程序迁移至云端而导致的成本增加,以及 Log4j 等重大安全漏洞。  

在全球 2000 多名 Java 用户的积极参与下,我们认为该报告已达成我们设定的目标。我们希望您能喜欢本文提供的《Java 状态调查与报告》中的分析,该报告由唯一一家完全专注于 Java 的公司,也就是 Azul 撰写。但如果您不想再继续阅读,请在此处查看完整报告。事不宜迟,我们来看看该报告展示的结果。 

Java 的采用

不出所料,Java 的使用仍十分广泛。事实上,我们调查的企业中,98% 都使用 Java,其中 57% 的企业表示 Java 是其大多数应用程序的支柱。 

DevOps 团队在重要工作中使用基于 Java 的语言(例如 Kotlin)、库(例如 Log4j)和基础架构(例如 Spring Boot)。若把这些技术都算上,使用 Java 的企业实际占据更高的比例。 

这并不令人意外。以 COBOL 为例,该语言如今已停止发展,至今仍被使用也只是因为旧的代码仍在等待重写。但 Java 并不是这种旧式语言。Java 仍是当今最受需要的编码语言之一,并将继续用于 AI 和云计算等新领域。 

Java 可用于多种用途,可靠且稳定,并且可为满足 DevOps 社区的需求而不断发展,因此一直是世界上使用最广泛的编程语言之一。Java 的特点包括:

  • 与生俱来的开源特性:Java 的标准由 Java Community Process (JCP) 组织定义,并在开源 OpenJDK 项目下开发。 
  • 更新:Java 每六个月更新一次,并且每两年发布一个具有长期支持功能的版本。 
  • 强大的向后兼容性:在 Java 新版本上运行的基于 Java 的应用程序通常也能在旧版本上运行(极少数例外),因此您无需频繁更新。 
  • 一次编写,随处运行:开发人员只需编写一个代码库,就能在任何平台(包括操作系统和硬件)上运行程序。

Oracle 在 Java 市场的份额正在降低

Oracle 于 2023 年 1 月改为采用按员工人数定价和许可模式,并选择以如下方式定义“员工”,这在 Java 世界引起一场大“地震”:

(i) 您的所有全职、兼职和临时员工,以及 (ii) 支持您内部业务运营的代理、承包商、外包商和顾问的所有全职、兼职和临时员工。所需的许可证数量由上述定义的员工人数决定,而不仅仅是使用程序的实际员工人数。 

我们的调查显示,82% 的受访企业对定价模式的变化表示担忧,72% 的受访企业正在积极寻找 Oracle Java SE 的替代方案。随着使用 Oracle JDK 的企业比例下降(从其他研究中 2020 年的超过 70% 下降到我们《Java 状态调查与报告》中的 42%),使用其他发行版的企业比例在不断增长。也就是说,如果您对当前的 Java SE 或 OpenJDK 提供商不满意,便可以选择其他提供商。 

Oracle 的定价如此之高,那么为什么没有更多的企业寻找替代的 JDK 呢?在我们的调查中,26% 的受访企业表示寻找替代过于费力。但事实上,在大多数情况下,改用其他 OpenJDK 替代方案是非常简单的。Azul 公司副首席技术官及 Java Champion 称号获得者 Simon Ritter 写了一本关于 Oracle JDK 迁移的书

Java 咨询集团 OpenValue 的常务董事 Roy Wasse 证实了大多数迁移是很常规的。他说:“经过多次 JDK 迁移后,即便是帮助大型跨国客户迁移,我们甚至也能在九个月内完成。与 Azul 合作后,我们能够以简单的方式成功完成最复杂的迁移。”

云与云革命

在我们的调查中,超过 90% 的企业在云端运行应用程序,这说明 Java 在云中的采用也在不断增长。虽然在 Java 真正兴起时,云技术还未得到广泛采用,但 Java“一次编写,随处运行”的特点与云技术十分契合。其实,Java 并非主要用于本地部署。 

与用其他编程语言编写的应用程序一样,在云端运行的 Java 应用程序也受到云成本上升的影响。根据我们的调查,95% 的受访企业都在过去一年中采取了措施来降低云成本。这是为什么呢?因为在参与我们调查的企业中,有 70% 并没有充分利用购买的云容量,超过 40% 表示他们使用的公共云计算容量不到所购买的 60%。企业通常会配置一定大小的容量,以确保其基本业务应用程序能够以可接受的低故障率成功提供负载。然而,由于存在以下担忧,团队在提升所购买云计算容量的利用率方面缺乏信心:

  • 运营问题
  • 在负载较高时维持服务级别
  • 当负载波动时,无法最大限度地减少因开关应用程序实例而造成的中断,因而无法更好地满足需求

我们很高兴观察到一个趋势,即 46% 的受访企业正在使用高性能 Java 平台来减少云资源并优化云成本。增强型 JVM 可消除异常情况、抖动和暂停,从而在 CPU 利用率较高时实现更高的运营稳定性,让团队有信心设置更高的自动扩展阈值,并从每单位成本的计算能力中获得更高的效率,同时满足相应服务级别的预期。

在过去一年中,贵组织采取了哪些措施来降低基于 Java 的应用程序和基础架构的公有云成本?请选择所有合适的选项。

增强型 JVM 通过卓越的编译器优化,以更少的 CPU 更快地执行代码,从而提高了每秒的事务处理数,减少了所需的计算实例,节省了更多成本。此外,高性能 JVM 通过缩短 Java 应用程序在启动新 JVM 实例时达到全速的时间,加快了 Java 预热,提高了实际使用时的弹性。因此,团队可以根据需求更好地匹配容量,同时尽可能减少中断。 

限制在云中开展业务的成本是一项复杂的挑战,在不同情况下,适合企业的解决方案可能有很多种。对于某些企业来说,甚至将服务从云端调回到本地部署也会更具成本效益。但我们相信,通过使用性能更强的 JVM,企业可以继续在云端运行服务,并在不采取这种极端措施的情况下降低成本。

Azul Platform Prime 是我们的旗舰版 JDK/JVM 产品,也是 OpenJDK 的增强版本,已成为许多企业走向成功的必要帮手。请前往我们的网站,查看 BazaarvoicePayaraSupercellTaboolahWorkday 等众多客户案例研究。 

Java 安全性

在 Log4j 库于 2021 年感染 Log4Shell 漏洞后,若目光足够长远,很多管理人员本可以通过停止使用该库来解决问题。但相反,根据我们调查对象的反馈,Log4j 在基于 Java 的技术中使用率仍然名列前茅。  

不过,这些受访企业确实也认识到了第三方和开源应用程序及服务的危险性。约 67% 的受访企业表示,这些应用程序及服务是最令人担忧的常见漏洞和暴露 (CVE) 来源。 

一个值得注意的结果是,80% 的企业受到了 Log4j 的影响。企业普遍表示自身受到了间接影响,因为工程团队不得不投入大量时间来防范潜在的攻击。大多数企业无法确定其环境中所有包含 Log4j 库的位置,也不知道该库是否已安装补丁。

此外,有 30% 的企业受到 Log4j 的直接影响,其中有 17% 表示攻击者试图利用该漏洞但未成功,更令人担忧的是有 13% 的企业表示攻击者成功利用了该漏洞。这让人想知道下一个 Log4Shell 会如何影响 DevOps 团队,及其快速有效反应的能力。

Log4Shell 漏洞对贵企业造成了什么影响?

Azul Vulnerability Detection 已于 2022 年 11 月发布,迄今已获得巨大成功。如果该产品在 2021 年 12 月便已发布,使用它的企业就能确切知道 Log4Shell 漏洞在生产环境中的位置(包括当前和历史位置),并能更有效地修复该漏洞。但由于不知道哪些应用程序存在漏洞,他们只能采用广泛排查的方法。

结语

我们很高兴(但并不惊讶)看到 Java 的采用仍然如此广泛。Java 拥有这种持久的生命力是因为能够多方适应、不断发展,而非因循守旧。在未来几周内,您将看到我们对首次调查结果的更多见解,包括网络研讨会、博客文章和信息图。这些新资料将展示 Java、Oracle 许可和定价变更的影响、云成本和安全性方面的更多信息。期待您的加入。