淘汰吗?不,不可能淘汰。
Java是不可动摇的……因为Java无处不在。
几乎每一家财富500强公司都使用JVM来运行关键性基础设施。Java是世界各地许多课程和大学的主要课程。我们国家包括其他国家的孩子在学习英语之前通常先学习Java。(这是正确的,在学习英语之前我已经学习了Java,Java需要我学会更多的英文单词,因为这样,我会顺势把英文也学习一下),我的朋友“爪哇”离死亡还远着呢。
当我们拥有星际旅行和人类克隆技术时,在我们的未来将依然会有Java代码运行在银行和金融订单上。当我们殖民银河系时,众多培训机构的学员们则会抱怨“类型擦除”以及设计模式中抽象工厂和适配工厂的“虫洞”。
外星文明将会苦恼我们的Java字节码文件版本之间的二进制不兼容,这些版本是由遥远的Sun公司董事会主席斯科特·麦克尼里和Java之父詹姆斯高斯林的后代编译的。然后,就在最后一个人在一个后奇点主义的群体思维狂欢与无意识相结合的时候,一个部署不当的JVM将运行一个停止世界的垃圾收集程序,并将一些无聊的AI模拟大爆炸的延迟提高。
Java是不朽的。
而在Java消失之前,你和我早就死了。
这是一个不加掩饰的事实:
一、IT行业在Java上投入了太多,以至于不能放手。国内使用Java的大厂就有字节,阿里巴巴,网易和京东,而腾讯除了一些不太重要的项目使用Java,多数都是用C++来实现的。在国外,亚马逊的某个部门在使用Java,谷歌使用的语言太多了,比较平均, 但用Java的部门也不少。
二、必须维护大量的Java遗留软件,切换到不同的软件栈要花很多钱。Java拥有庞大的用户基础和库、框架和工具的庞大生态系统。使IT部门招聘Java开发人员很容易。Java的JVM是同类技术中性能最好的。Java是企业标准编程语言,就像30年前的COBOL一样。Java语言没有任何问题,除了它的冗长,这就是为什么Java和COBOL不是同一条船上的原因。三、Java目前在全球数十亿设备中运行,包括Android。Java比Scala和Kotlin更容易学习,没有其他的JVM语言能接近Java的挑战。
Scala在中国的使用情况:
根据百度的搜索指数显示,自2011年一月一日以来,Scala的日搜索峰值出现在2018年的五月份,数值为1424,而最近则在700~800之间。整体的日均值为 754。
Kotlin在中国的使用情况:
同样来自百度的数据,自2011年一月一日以来,Scala的日搜索峰值出现在2018年的五月份,数值为1424,而最近则在700~800之间。整体的日均值为 754。
可以看到自2017年5月8日以来,Kotlin的搜索指数不断攀升,最高指数11217,是因为在谷歌宣布在其 Android Studio IDE 中支持 Kotlin以后,之后,kotlin的日平均搜索值稳定在了1399点。
那么Java呢?看下图:
这是Java自2011年1月1日至如今的搜索指数,可以看到日平均值稳定在11000搜索点,也就是说,作为一门存在了27年的JVM语言,Java依旧保持着稳定的态势。
四、14年之后,Scala与Java相比看起来还是存在一些问题;根据Indeed.com中国的数据,它目前在中国只有260个工作岗位。
而Kotlin更糟糕,只有180个工作岗位。
理性的来说,我没有特别强烈的语言偏好,但我还没有笨到认为Java正处于失去IT业主导地位的危险之中。真相就在那里。根据indeed.com 中国的数据显示,Java相关的工作高达4589个。
而在前程无忧上你搜索Java找到相关的界面则多达1050页,每页显示50个工作信息。
Kotlin的相关职位则只有20页
Scala 则有24页的相关职位信息
所以不必担心Java在未来的发展状况。尽管Python的出现在一定程度上冲击了Java的地位。
根据Indeed.com 和前程无忧的数据显示,有关Python的工作信息分别为 Indeed 5973个,前程无忧 则包含 824页(每页50个)工作相关的信息。但仅就JVM语言而言,学习Java持续的保持精进是一个很好的选择。
以下是关于各种名词解释
后奇点主义:后奇点时代,人类现在的终极问题如无穷、宇宙、起源、逻辑、思维意识、抽象、不可计算、不可定义必将被解决或变为普通问题。
爪哇:Java的中文直译。
群体思维:别名蜂巢思维,出自凯文·凯利的《失控》(1994),指的是每个人都像身处一个巨大的蜂巢之中,共享一种思想、一种情绪、一种观点。
类型擦除: Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。
Java字节码文件版本之间的二进制不兼容:需要注意的是,当Java.exe运行字节码文件时,首先检查字节码文件的版本号。当字节码文件版本号对应的jdk版本小于等于Java.exe的版本时可以正常运行,软件兼容。反之则不行。即Java9的javac编译的字节码文件,1.8的java.exe运行就会报错。
垃圾收集:Java垃圾回收,JAVA独有的功能,垃圾收集意味着程序不再需要的对象是“无用信息”,这些信息将被丢弃回收。
注:以上数据最后编辑于2022年9月28日06:40:16,数据均经过查询论证。若有不同意见,或文章中错误的地方,可以在评论区留言指出。