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

简介:

Java 是这个星球上最为流行的编程语言之一,但这方面的竞争正愈演愈烈。下面我们将讲述 Java 可能遭遇滑铁卢的地方,以及可以做些什么来预防它的衰退。

2017 年 9 月的 TIOBE 指数将 Java 列为当月较为流行的语言。其实,它已经名列前三甲很多年了。

Stack Overflow Developer Survey 2017将 Java 列为继 Javascript 和 SQL 之后第三常用的编程语言(实际上,过去四年它都保持着这名次)。

不说这些结果是如何产生的,亦或者这结果是否反映了现实世界中的情况,我们不能否认的是,Java 在多个环境中仍然是一种流行语言。

但是,Java 总有一天会死。世无定事,没有什么可以天长地久。

编程语言死亡的真正定义是没有人再使用它——但这样的情况很难发生。即使是老朽且不被广泛使用的语言(例如,你是否听说过 Modula-3?),仍然在被使用、维护,或者至少会演变成其他的东西。

当然,这是一个渐变的过程,怎么发生的方法不定。从实际出发,假设编程语言在它不再被用于新项目时,就意味着它的死亡,但是它可能依然存活在许多遗留项目上(COBOL 就是一个完美的例子)。

最终这结局也将降临到 Java 头上,那么谁会杀死它?

让我们来分析选项。

在以《What Killed Smalltalk Could Kill Ruby Too》为主题的演讲中,Robert “Uncle Bob” Martin 说,Smalltalk 被杀的原因是,它太容易造成混乱,并且它的傲慢自大会导致不专业的实践方法,如缺乏测试驱动开发(TDD)。

在任何语言中你都可以搞得一团乱。当然,在某些语言中,比其他语言更容易导致混乱——例如,在动态类型语言中,我们可以随时更改变量的类型——但是我们在 Java 中没有这个问题。

此外,在 Java 社区中很多人采用的良好实践,比如设计模式和 TDD,有助于我们制作更好的软件。

所以让我们来探讨另一个选项。

Java 是面向对象的语言。如果其他(新的)范式接管了怎么办?如果面向对象的编程变得过时了怎么办?

好吧,这可能性并不大——基本原理已经有很长一段时间没有真正改变过了。诸如结构化,功能性和面向对象编程的重大创新发生在 20 世纪 50 年代,60 年代以及甚至 70 年代,但从那以后,没有什么举足轻重的事发生。

但是,在过去十年中,却有很多新的语言问世,这些语言有着现代的语法以及新功能的框架。

那么,没有现代语法和新的功能是否会导致 Java 的死亡呢?

不,我不这么认为。

你还记得(或听说过)EJB 2.0 及其 Entity Beans 吗?它们很可怕,但是像 Rod Johnson 和 Gavin King 这些 Java 社区的成员却以 Spring 和 Hibernate 等框架回应。

以类似的方式,虽然 Java 不是一个功能齐全的语言,但是由于有 Vavr 这样的库,我们可以使 Java 更加功能化。

我的意思是,Java 缺少的某些东西,有人会通过创建(框架,工具,规范,无论什么)来填补这个空白。

那么 Java 会不会因为另一种编程语言而死亡呢?

我们以 JavaScript 为例。毕竟 JavaScript 正在占领这个世界,对吧?

我们可以在后台使用 Node.js,类似于移动设备上的 React Native 或 Ionic,我们甚至不必提及在前端的所有竞争选项。

但是,至少在企业软件中,我没有看到 JavaScript 将要替代 Java 的趋势。JavaScript 在企业领域中没有取得成功的框架或工具。它也没有与 Java 虚拟机(JVM)相当的东西,Java 虚拟机(JVM)依然是大型和关键任务软件的首选平台。

那么 Kotlin 呢?

Kotlin 语言首次出现在 2011 年,并且最近 Google 宣布在 Android 上对 Kotlin 提供一流的支持。Kotlin 正在逐渐被知名公司采用,并且不局限于在这些公司的 Android app 上(例子)。

除了现代化的功能,Kotlin 也是一种开放源代码的语言,它由一家生产最佳 java ide 的公司提供支持。

所以,如果你问我的话,我的回答是,是的,Kotlin 看起来像是(在遥远的未来)替代 Java 的一个很好的候选者。

当然,Java 也可能被一种或多种语言所替代。

哪些呢?

我不确定,而且我敢说现在也没有人知道这个问题的答案。

我所能确定的是,没有任何语言能够自主地杀死 Java。不借助任何外力,就此而言。

能够杀死 Java 的刀子在于它无法满足市场的需求。

编程语言是构建解决计算机问题的应用程序的工具。如果某编程语言提供抽象、模型、工具和框架,使你可以更有效率或创建比 Java 更高效的代码,你会选择哪种语言呢?

即使是在 Java 版本之间,如果让你在 Java 1.4 和 Java 9 之间进行选择,那么你会选择 Java 1.4 吗?你会放弃用 lambdas 或泛型工作的机会吗?我不这么认为。你会需要较新版本的功能。

在这些年来,由于已检查异常、内部类、getter 和 setter 等等方面,Java 被认为是一种冗长又笨拙的语言。直到 Java 7(有些人认为是 Java 8)才开始好转。

然而,Java 7 于 2011 年发布,比 Java 1.4(2002 年发布)晚了九年。在这个时代,这是不能接受的,并且可能会导致恶性循环。

仔细查看 TIOBE 页面上的 Java 图表。尽管 Java 大多数时候位居前三,但有明显的下降趋势,表明它正在失去市场份额。这种趋势在所有语言中都很普遍。最可能的原因是编程语言的数量在不断增加,应用程序越来越多地被以多种语言编写。因此,竞争比以往任何时候都要激烈。

如果我们认为其他语言比这种语言更好,那么它就不再受欢迎,我们也不会将这种语言教给新一代的开发人员。

新的教程、课程和书籍将不会再被创造。

社区中的宝贵成员将被其他技术吸引走。

该语言将不会用于新的环境。

将导致减少语言的流行度。

Mark Reinhold,Oracle Java 平台组首席架构师,提出的新的六个月发布计划,是向前推进 Java 并迈向未来的重大一步。用他的话说(就特征驱动的版本):

这种方法可以在早期采用者进行彻底的检查和测试后,以高水平的质量提供大的新功能。然而,不足之处在于,较小的 API、语言和 JVM 功能只有在大功能准备就绪时才能实现。

这是在本世纪之交前后几十年时间里达成的一个可接受的折中方案,当时 Java 仅与几个以类似的步伐演进的平台竞争。然而,如今,Java 在与许多以更快速度发展的平台一起竞争。

最后一段话很多都是事实。

但是,这不仅仅是 Oracle 的工作。社区也必须保护 Java。

怎么做?

我的一些想法:

  • 不要傲慢(不要认为 Java 太大而不会失败)
  • 促进良好的开发实践方法
  • 继续发布超棒的框架、工具等
  • 支持 JSR
  • 帮助教学和推广 Java 语言
  • 在新环境中尝试 Java

否则,Java 如果无法跟上时代的步伐,那么最终将会被后浪拍死在沙滩上。


本文作者:佚名

来源:51CTO

相关文章
|
1月前
|
Java 程序员 Linux
IT圈的“鄙视链”大揭秘:从Java到Go,编程语言之战!
IT圈的“鄙视链”大揭秘:从Java到Go,编程语言之战!
|
7月前
|
Java 程序员 Apache
编程语言比拼之Java VS C++
Java和C++都是非常受欢迎的编程语言,各有各的优势和适用场景。以下是对它们的简要比较:
|
9天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
14 1
|
1月前
|
人工智能 Java 开发者
Python与Java:两大编程语言的联系与区别
Python与Java:两大编程语言的联系与区别
31 2
|
2月前
|
前端开发 JavaScript Java
未来编程语言的演变趋势:从Java到WebAssembly
本文探讨了编程语言从Java时代经历的演变,直至WebAssembly的兴起。通过分析Java的普及原因、后端技术的发展、前端技术的革新以及WebAssembly的出现对未来编程模式的影响,我们旨在提供一个全面的视角来理解编程语言的发展趋势。不同于传统的技术文章,本文将从宏观的角度审视技术进步如何推动编程语言演变,以及这些演变对开发者社区和软件行业可能产生的长远影响。
23 1
|
2月前
|
边缘计算 人工智能 移动开发
未来编程语言的演进趋势:从Java到WebAssembly
本文探讨了编程语言的演进历程,特别是从Java的广泛应用到WebAssembly的兴起,揭示了技术发展的内在逻辑和趋势。我们不仅回顾了Java作为一种革命性语言的贡献,还分析了现代Web开发中WebAssembly的重要性,并预测了未来编程语言可能的发展方向。通过深入探讨这些技术的特点、优势及其对软件开发领域的影响,文章旨在为开发者提供对未来技术趋势的洞察,帮助他们做出更明智的技术选择和职业规划。
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
php案例:判断这个文件是什么编程语言代码的文件(判断java或者php)
|
3月前
|
Java 大数据 Android开发
探索Java编程语言的优势和应用领域
Java是一种广泛应用于软件开发领域的高级编程语言。它凭借其强大的功能和丰富的生态系统,在众多应用领域中得到了广泛应用。本文将为您介绍Java的优势以及它在各个领域中的应用。
125 2
|
3月前
|
Java 数据库连接 开发工具
探索Java编程语言的强大功能
Java是一种广泛应用于软件开发领域的高级编程语言。它的强大功能使得它成为了许多开发者的首选。本文将介绍一些Java的关键特性和优势。
|
3月前
|
分布式计算 Java Scala
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python
Spark编程语言选择:Scala、Java和Python