许多人说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更重要?
有趣的是,我们来看看第三个来源——a来自JetBrains的调查。在这种情况下,结论是通常使用最多的语言是JavaScript,但是作为主要语言最流行的是Java。
在这里,有人可能会说,“但这种动态可能是负面的。”不同来源的数据不尽相同,所以不可能绝对肯定地说什么,但是如果有一些巨大的年度下降,那么这将是显而易见的。但实际上恰恰相反——在所有这三个来源中,Java的地位至少在2-3年内是稳定的。总而言之,如果你现在开始一个Java项目,几年后你不会发现自己是孤独的。
“这有什么关系?”
为什么一种语言的受欢迎程度很重要?为什么一个人应该使用和其他人一样的语言?当然没有严格要求,有人用Haskell写,很开心。但是有几个重要因素。
例如,在就业市场的规模。如果你公司的一个关键开发人员决定辞职,用很少使用的东西写一个项目,找到替代者会有多容易?反过来的问题是:如果你是一名刚辞职的开发人员,在你的领域找到一份好工作有多容易?Java拥有最大的就业市场之一——比Go大得多。
此外,该语言的高受欢迎程度意味着互联网上会有大量关于它的信息(博客帖子、报告、堆栈溢出的答案),但当你使用一种罕见的语言时,你可能会面临信息匮乏的问题。当然,当先锋有一定的浪漫色彩,但这并不是快速解决问题的最有胜算的策略。
这样的问题和“它有模式匹配吗?”在选择语言时,Java有着巨大的优势,这仅仅是因为其生态系统的规模。因为有很多人使用它,所以在创建新项目时,它被证明是一个不错的选择,这反过来又鼓励了人们的涌入。即使这种自我维持的过程会消失,也肯定不会在未来几年内消失。
“Java还停留在上个世纪。”
现在让我们继续第二个论点:当技术的火车头向前冲的时候,这里有一种来自90年代的语言。当你有一种更现代的语言时,为什么还要使用它呢?
一般来说,对于很多人来说,更重要的不是语言本身,而是它的平台和“周围的一切”:来自各大厂商的解决方案和来自发烧友的开源库,IDE支持,以及替代的JVM语言。如果我们把所有这些作为一个整体来考虑,会有很多发展正在进行。
但是我们甚至可以不考虑第三方项目,而是直接看Java最近十年发生了什么。
2011年,甲骨文收购了太阳微系统公司,从而得到了Java,当时看起来前景并不明朗。当时来到甲骨文的其他产品(OpenOffice、Solaris、Hudson)前途艰难。
但是Java的结果不同:在这里,甲骨文没有放弃购买,而是投入资源进行开发。而2014年发布的Java 8版本是一件大事;由于创新,这种语言发生了显著的变化和现代化。业界欣然接受了这个版本,那些仍然不得不在旧版本上维护项目的人通常是有同情心的。
2017年,随着Java 9的出现,一个将JDK模块化的长期项目发布了。随着时间的推移,与任何已经存在了几十年的重大项目一样,JDK的内部依赖关系开始变得像意大利面条。为了“锯”它,这些依赖关系必须被分解成一个连贯的系统——也就是说,本质上,一个巨大的重构完成了。对于真正“陷入过去”的项目,这种情况不会发生。
而且从2018年开始,一个新的发布周期开始生效:他们不再准备几年的大版本Java,而是开始每六个月发布一个较小的版本。这样做只是为了配合行业的步伐,更快地发布特性(如果有些已经准备好了,你不必把它们搁置几年,直到下一个版本发布)。有一个定期的发布流,它没有把一切都颠倒过来,但仍然添加了一些值得注意的东西。
总的来说,谈论不发达是不正确的。我们能谈的是Java相对于其他语言更大的保守性。的确,在许多问题上,他们试图谨慎行事,而不是仓促行事。但这又引出了下一个问题:“一哄而上”真的是一件好事吗?
几年前,在前端世界有很多抱怨,关于事情是如何快速变化的,阻止你冷静和专注。在Java社区中,也不是每个人都对新的发布周期感到满意。
结论
技术发展没有一个正确的速度:对初创公司有利的对大型银行不利。而Java的保守性本身既不是一个优点也不是一个缺点:对某些人来说是好的,对另一些人来说是坏的。
以上所述,并不意味着Java毫无例外地是世界上所有人的最佳语言,你应该使用它。当选择一种语言时,值得看看在特定情况下需要什么,而不是依赖互联网喊着“从X改变到Y,否则,你就落伍了”。如果你用这种方法,Java在大多数情况下仍然是一个好的选择。