当前位置: 首页 > 科技观察

编程语言之争,谁将杀死Java?

时间:2023-03-22 13:46:54 科技观察

英文原版:什么会杀死Java?  Java是这个星球上最流行的编程语言之一,但竞争正在白热化。下面我们将描述Java可能在哪些方面遭受了滑铁卢,以及可以采取哪些措施来防止其衰落。  2017年9月的TIOBE指数将Java列为当月最流行的语言。事实上,它多年来一直位居前三。  StackOverflow开发人员调查2017将Java列为仅次于Javascript和SQL的第三大最常用编程语言(事实上,它在过去四年中一直占据这一位置)。  不管这些结果是如何产生的,或者它们是否反映了现实世界的情况,我们都不能否认Java在多种情况下仍然是一种流行的语言。  但是,Java终有一天会消亡。世界上没有什么是固定的,也没有什么是永恒的。  编程语言消亡的真正定义是没有人再使用它——但这种情况很少见。即使是古老且未被广泛使用的语言(例如,您听说过Modula-3吗?),仍在使用、维护或至少演变为其他语言。  当然这是一个循序渐进的过程,至于具体如何发生,则不得而知。实际上,假设一种编程语言在不再用于新项目时就消亡了,但它可能会继续存在于许多遗留项目中(COBOL是一个典型的例子)。  最后也是Java,谁来杀?  让我们分析一下选项。  在《What Killed Smalltalk Could Kill Ruby Too》的一次演讲中,Robert“UncleBob”Martin说Smalltalk被杀是因为它太混乱了,它的傲慢导致了不专业的做法,比如缺乏测试驱动开发(TDD)。  你可以用任何语言把事情搞得一团糟。当然,在某些语言中,这比其他语言更容易导致混淆——例如,在动态类型语言中,我们可以随时更改变量的类型——但我们在Java中没有那个问题。  此外,Java社区中许多人采用的良好实践,例如设计模式和TDD,有助于我们制作更好的软件。  因此,让我们探索另一种选择。  Java是一种面向对象的语言。如果其他(新)范式接管怎么办?如果面向对象编程过时了怎么办?  好吧,这不太可能——基本面已经很长时间没有真正改变了。结构化、函数式和面向对象编程等重大创新发生在1950年代、60年代甚至70年代,但从那以后,没有发生任何重大事件。  然而,在过去的十年里,许多新的语言相继问世,这些语言拥有现代语法和新功能的框架。  那么,现代语法和新特性的缺失是Java的消亡吗?  不,我不这么认为。  您还记得(或听说过)EJB2.0及其实体Bean吗?它们很可怕,但Java社区的成员,如RodJohnson和GavinKing,用Spring和Hibernate等框架做出了回应。  以类似的方式,虽然Java不是一种功能齐全的语言,但感谢像Vavr这样的库,我们可以使Java更加功能化。  我的意思是,Java缺少的东西,有人会创建(框架、工具、规范,等等)来填补这个空白。  那么Java作为另一种编程语言会消亡吗?  我们以JavaScript为例。毕竟JavaScript正在接管世界,对吧?  我们可以在后台使用Node.js,类似于移动端的ReactNative或Ionic,我们甚至不必提及前端的所有竞争选项。  但是,我没有看到JavaScript取代Java,至少在企业软件中是这样。没有框架或工具可以让JavaScript在企业领域取得成功。它也没有Java虚拟机(JVM)的等价物,后者仍然是大型和关键任务软件的首选平台。  Kotlin呢?  Kotlin语言最早出现于2011年,最近谷歌宣布Android上对Kotlin的最新支持。Kotlin正逐渐被知名公司采用,而不仅仅是在他们的Android应用程序中(示例)。  除了现代的特性,Kotlin还是一门开源语言,由生产最新javaide的公司支持。  所以,如果你问我,是的,Kotlin看起来是替代Java的一个很好的候选者(在遥远的未来)。  当然,Java也可能被一种或多种语言替代。  哪些?  我不确定,我打赌现在没有人知道这个问题的答案。  我所知道的是,没有一种语言会自行杀死Java。就此而言,没有任何外力。  杀死Java的刀是它不能满足市场的需求。  编程语言是一种用于构建解决计算机问题的应用程序的工具。如果一种编程语言提供了抽象、模型、工具和框架,可以让您比Java更高效或创建更高效??的代码,您会选择哪种语言?  即使在Java版本之间,如果让你在Java1.4和Java9之间做出选择,你会选择Java1.4吗?你会放弃使用lambda或泛型的机会吗?我不这么认为。您需要更新版本才能运行。  多年来,由于检查异常、内部类、getter和setter等原因,Java一直被认为是一种冗长和笨拙的语言。直到Java7(有些人认为是Java8),情况才开始好转。  但是,Java7于2011年发布,比Java1.4(2002年发布)晚了9年。这在当今时代是不可接受的,并可能导致恶性循环。  仔细看看TIOBE页面上的Java图。尽管Java大部分时间都在前三,但有明显的下降趋势,表明它正在失去市场份额。这种趋势在所有语言中都很普遍。最可能的原因是编程语言的数量在增加,应用程序越来越多地用多种语言编写。因此,竞争比以往任何时候都更加激烈。  如果我们认为其他语言比这门语言好,那么它就不会流行,我们也不会把这门语言教给新一代的开发者。  将不再创建新的教程、课程和书籍。  社区中有价值的成员将被其他技术所吸引。  这种语言不会在新环境中使用。  将导致该语言的流行度降低。  MarkReinhold,OracleJava平台组高级架构师,提出了一个新的六个月发布时间表,这是Java和未来迈出的重要一步。用他的话说(就功能驱动的发布而言):这种方法在早期采用者进行全面检查和测试后,以高质量提供了重要的新功能。然而,缺点是较小的API、语言和JVM功能只能在较大的功能准备就绪时才能实现。这是在世纪之交的几十年里达成的可接受的妥协,当时Java仅与少数几个以类似速度发展的平台竞争。然而,今天,Java正在与许多发展速度更快的平台竞争。  ***我说的很多都是真的。  但这不仅仅是甲骨文的工作。社区还必须保护Java。  怎么办?  我的一些想法:不要自大(不要认为Java大到不能倒)推广良好的开发实践方法不断发布很棒的框架、工具等支持JSR帮助教授和推广Java语言在中尝试Java新环境  否则,如果Java跟不上时代的步伐,最终会被海浪拍死在沙滩上。  -  翻译链接:http://www.codeceo.com/article/what-will-kill-java.html  翻译作者:码农-小风