
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
佛山IT培训:Java 是这个星球上最为流行的编程语言之一,作为一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此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 也可能被一种或多种语言所替代。
佛山IT培训:就目前而言没有任何语言能够自主地杀死 Java。不借助任何外力,就此而言。能够杀死 Java 的刀子在于它无法满足市场的需求。编程语言是构建解决计算机问题的应用程序的工具。如果某编程语言提供抽象、模型、工具和框架,使你可以更有效率或创建比 Java 更高效的代码,你会选择哪种语言呢?