Java是濒临死亡还是比以往任何时候都更有活力? - Roger


许多人说 Java 的辉煌时代即将结束?你经常会听到“Java 正在消亡”的说法,所有现代人都应该尽快转向像 Go 这样的现代语言。他们说这对他们有好处,但对每个人都将放弃的旧语言来说会很糟糕。但这是真的吗?
有人说“Java 正在消亡”,字面意思是:该语言流行的时代已经过去,需要它的人越来越少,而剩下的人即将放弃它。也有人认为Java在流行上可能还不错,但技术上它停留在上个世纪,所以现在用它来写是不体面的。 
当然,要给出准确的答案,最简单的方法是购买有关所有编程语言的研究论文,但我们没有金钱和时间。所以让我们看看可用的信息,然后一一看看这两个论文。
 
“没有人想要 Java”
在第一种情况下,让我们看看硬核数字而不是“我认为是”。不幸的是,世界上没有单一的语言流行指标,所有可用的来源都可能会产生很大的误导。但是如果你比较几个不同的来源,则更有信心地下判断。
最著名的是 TIOBE 指数。是的,可能对其方法和结果存在疑问;不能盲目相信,也不能完全无视。让我们打开最新的数据——2021 年 7 月,Java 位居第二。根据 TIOBE 的说法,它不仅是一种“垂死的语言”,而且是世界上最受欢迎的语言之一。
另一个著名的来源是 Stack Overflow 的年度开发人员调查。让我们打开2020 年这项民意调查的结果。乍一看,Java 的地位要弱得多,仅排在第五位。但是,当我们更仔细地观察“领先于曲线”时,印象就会改变:它是 JavaScript、HTML、CSS 和 SQL。首先,这次民意调查不仅包括编程语言,还包括标记语言,这很重要。其次,前面的所有选项都有一个共同点,即除了主要语言之外,开发人员还经常使用它们。如果 .NET 和 Java 开发人员都使用 SQL 一点点,所以在调查中都提到了它,这是否使 SQL 比 C# 和 Java 更重要?
在这里查看第三个来源很有趣—— 来自 JetBrains的一项调查。在这种情况下,结论是最常用的语言通常是 JavaScript,但最流行的主要语言是 Java。
这里有人可能会争辩说:数字因来源而异,因此无法绝对确定,但如果每年出现大幅下降,那将是显而易见的。但在实践中恰恰相反——在所有三个来源中,Java 的位置至少稳定了 2-3 年。总而言之,如果您现在开始一个 Java 项目,几年后您将不会发现自己孤身一人。
 
“为什么这有关系?”
为什么一种语言的流行很重要?为什么要使用与其他人相同的语言?当然没有严格要求,有人用Haskell写的,开心就好。但有几个重要因素。
例如,就业市场的规模。如果您公司的一位主要开发人员决定退出并使用很少使用的东西编写项目,那么找到替代品有多容易?相反的问题是:如果你是那个退出的开发人员,在你的领域找到一份好工作有多容易?Java 拥有最大的就业市场之一——比 Go 大得多。
此外,该语言的高流行度意味着互联网上会有大量关于它的信息(博客文章、报告、Stack Overflow 的答案),但是当您使用一种稀有语言时,您可能会面临信息匮乏. 当然,当先锋是有一定的浪漫色彩的,但这并不是快速解决问题的最佳策略。
这些问题与“它有模式匹配吗?”一样重要。在选择语言时,Java 仅仅因为生态系统的规模就具有巨大的优势。由于有多少人使用它,因此在创建新项目时它被证明是一个不错的选择,这反过来又会鼓励人们涌入。如果这种自我维持的过程消失,那么在接下来的几年里肯定不会。
 
“Java 是上个世纪”
现在让我们继续第二个论点:当技术的火车头向前冲刺时,这里有一种来自 90 年代的语言。当您拥有更现代的语言时,为什么要使用它?
一般来说,对很多人来说,更重要的不是语言本身,而是它的平台和“周围的一切”:主要供应商的解决方案和爱好者的开源库、IDE 支持和替代 JVM 语言。如果我们将所有这一切视为一个整体,就会有很多发展正在进行。
但是我们甚至不能考虑第三方项目,而是直接看看 Java 在过去十年中发生了什么。
2011 年,甲骨文收购了 Sun Microsystems,从而获得了 Java,当时前景并不明朗。当时进入甲骨文的其他产品(OpenOffice、Solaris、Hudson)前途未卜。
但 Java 的结果却不同:这里 Oracle 并没有放弃货架上的购买,而是投入了资源进行开发。而2014年发布的Java 8版本是一件大事;由于这些创新,语言发生了明显的变化和现代化。业界心甘情愿地接受了这个版本,那些仍然需要在旧版本上维护项目的人通常是同情的。
2017 年,随着 Java 9 的到来,一个长期存在的 JDK 模块化项目发布。与任何已存在数十年的主要项目一样,JDK 中的内部依赖项随着时间的推移开始类似于意大利面条。为了“看清楚”它,必须将这些依赖关系分解为一个连贯的系统——也就是说,本质上进行了一次巨大的重构。对于真正“陷入过去”的项目,这种情况不会发生。
自 2018 年以来,一个新的发布周期已经生效:他们开始每六个月发布一个较小的 Java 版本,而不是几年来准备一个大版本的 Java。这样做只是为了跟上行业的步伐,更快地发布功能(如果某些功能已准备就绪,您不必将它们搁置数年直到发布下一个版本)。并且有定期的发布流并没有把所有东西都颠倒过来,但仍然添加了一些值得注意的东西。
一般来说,谈论缺乏发展是不正确的。我们可以谈论的是 Java 与其他语言相比更加保守。的确,在许多问题上,他们都尽量谨慎行事,而不是一头扎进事情里。但这引出了下一个问题:“一味前进”真的是一件好事吗?
几年前,前端世界有很多抱怨事物变化迅速,使您无法保持冷静和专注。在 Java 社区中,现在也不是每个人都对新的发布周期感到满意。
 
结论
技术发展的速度没有一个合适的速度:对初创公司有利的事情对大型银行不利。Java 的保守主义本身既不是优点也不是缺点:它对某些人有利,对其他人不利。
以上所有并不意味着 Java 是世界上最好的语言,对每个人来说都无一例外,你应该使用它。在选择语言时,应该看具体情况下需要什么,而不是依赖网络上大喊“从X到Y,否则你就落伍了”。如果您采用这种方式,Java 在大多数情况下仍然是一个不错的选择。