java是没落了还是更活跃了

简介: 你经常会听到“Java 开始没落了”的说法,所有人都应该尽快切换到 Go ,python等更先进的语言。他们说这对他们来说会拥有更多发展空间及就业机会,但对每个人都将要放弃的熟悉的编码语言来说付出的代价是非常大的。但这都是真的吗?

前言

你经常会听到“Java 开始没落了”的说法,所有人都应该尽快切换到 Go ,python等更先进的语言。他们说这对他们来说会拥有更多发展空间及就业机会,但对每个人都将要放弃的熟悉的编码语言来说付出的代价是非常大的。但这都是真的吗?

编程语言

您在下这个决定之前,你看到两种不同的说法。有人直截了当地说“Java 正在没落”:该语言辉煌的时代已经过去,需要它的人越来越少,剩下的人即将放弃它。也有人认为Java在普及方面可能没问题,但从技术上讲它停留在好几年前,所以现在学它很难得到更大发展。当然,要给出准确的答案,最简单的方法是购买所有编程语言的研究论文,但我们没有钱和时间。因此,让我们看一下可用的信息,并一 一查看这两个论点。

“没有人想学 Java”

在第一种情况下,让我们看看可靠的数据而不是“我认为是”。不幸的是,世界上语言的流行度并没有单一的指标,所有可用的资源都可能极大地误导。但是如果你比较几个不同的来源,你可以比“我的朋友身边的朋友都用go编码”更有可靠的结果。

java

首先“热门流行编程”中最著名的就是 TIOBE 指数。是的,可能你对其中的结果存在疑问;你不能盲目相信它,但你也不能完全忽视它。我们看看最新的数据—2021 年 7 月,Java 排在第二位。根据 TIOBE 的说法,它不仅不是一种“没落的语言”,而是世界上最流行的语言之一。

另一个著名的来源是 Stack Overflow 的年度开发者调查。我们看看2020 年的民意调查结果。乍一看,Java 的位置要弱得多,仅排在第五位。但是,当我们更仔细地观察“领先的曲线”时,印象会发生变化:它是 JavaScript、HTML、CSS 和 SQL。首先,这个民意调查不仅包括编程语言,还包括脚本语言。其次,前面的所有选项都有一个共同点,就是开发人员除了主要语言之外还经常使用它们。如果 .NET 和 Java 开发人员都使用一点 SQL,所以在调查中都提到了它,这是否说明 SQL 比 C# 和 Java 更重要?

在这里,看看第三个来源很有趣—— JetBrains 的一项调查。在这种情况下,结论是最常用的语言通常是 JavaScript,但最流行的主要语言是 Java。

在这里,有人可能会争辩说“但动态可能是负面的”。数字因来源而异,因此无法绝对肯定地说出任何事情,但如果每年出现大幅下降,那将是显而易见的。实际上恰恰相反——在所有三个来源中,Java 的位置至少可以稳定 2-3 年。总而言之,如果您现在开始学习 Java,几年后您将会因为会java增加更多就业选择。

“会一门人少的人更加有机会”

为什么一门语言的受欢迎程度很重要?为什么要使用与其他人相同的语言?当然,没有严格的要求,有人会用 Haskell(使用人数非常有限) 写就很开心。这里有几个重要的因素。

就业市场

一、就业市场的规模

如果您公司的一位关键开发人员决定辞职,使用一个非常少会的编程语言写一个项目,那么找到替代他的位置容易吗?而相反的问题:如果你是那个退出的开发人员,在你的领域找到一份好工作容易吗?Java 是拥有最大的就业市场之一,比 Go 大得多。

二、丰富的文档说明

该语言的高流行度意味着互联网上会有很多关于它的说明文档(博客文章、报告、Stack Overflow 的答案),但是当你使用一种罕见的语言时,你可能会面临信息匮乏的问题. 做先锋当然有一定的优势,但这并不是快速解决问题的最佳策略。

这样的问题和“它有模式匹配吗?”一样重要。在选择语言时,Java 因为生态系统的规模而具有巨大的优势。因为很多人使用它,所以在创建新项目时它是一个不错的选择,这反过来又鼓励了更多人的加入。在未来几年这种自我维持的过程肯定不会消失的。

“Java 停滞不前了”

现在让我们继续讨论第二个论点:历史是不断前进的,现在科技那么发达,java是一门90 年代的编程语言,不先进了,现在新出的编程语言越来越多。您会更加先进的语言时,为什么要选择java?

一般来说,对于很多人来说,更重要的不是语言本身,而是它的平台和“周围的一切”:主要供应商的解决方案和爱好者的开源库、IDE 支持和替代 JVM 语言。如果我们将所有这些作为一个整体来考虑时,你就会投入java的怀抱。

我们不需要看其他语言,我们直接看看最近十年 Java 发生了什么。

2011 年,甲骨文收购了 Sun Microsystems,取得了 Java的控制权,当时java前景不明朗。进入甲骨文的其他产品(OpenOffice、Solaris、Hudson)的未来很艰难。

在这里,甲骨文并不只是为了拥有java的资源而放弃java,而是将资源投入到开发中。

2014 年发布的 Java 8 版本可谓是互联网上的一件大事;由于技术上的创新,java语言发生了明显的变化。业界心甘情愿地接受了这个版本,更愿意过渡到java 8中。

2017 年,随着 Java 9 的出现,一个长期存在的 JDK 模块化项目发布。与任何存在数十年的重大项目一样,JDK 中的内部依赖项随着时间的推移开始变得像意大利面条。为了“看到”它,必须将这些依赖关系分解成一个连贯的系统——也就是说,本质上是进行了一次巨大的重构。对于真正“陷入过去”的项目,这种情况不会发生。

从 2018 年开始,一个新的发布周期开始生效:他们没有准备频繁发布Java 大版本,而是开始每六个月发布一个较小的版本。这样做只是为了跟上行业的步伐,更快地发布功能(如果有些功能已经准备好,您不必将它们搁置多年,直到下一个版本发布)。并且有规律的发布流并没有把一切都颠倒过来,但仍然增加了一些值得注意的东西。

一般来说,谈论一个语言缺乏发展是非常不利的。我们可以谈论的是Java与其他语言相比具有更大的保守性。的确,在很多问题上,他们都尽量谨慎行事,而不是一头扎进。但这又引出了下一个问题:“一头扎”真的是好事吗?

几年前,前端世界有很多抱怨新的框架的更新越来越快,让他们无法保持冷静和专注。在 Java 社区中,现在也不是每个人都对新版本发布周期感到满意。

结论

技术发展的速度没有一个正确的标准:对初创企业有利的对大型企业不利。Java 的保守主义本身既不是优点也不是缺点:它对某些人有利,对其他人不利。

综上所述,并不意味着 Java 对所有人来说都是世界上最好的语言。选择一种语言时,值得看一下具体需求是什么,而不是依靠互联网大喊“从X到Y,否则你就落后了”。如果你保持冷静的思考,Java 在大多数情况下仍然是一个不错的选择。

目录
相关文章
|
Kubernetes Java 程序员
Java会因容器技术盛行而没落吗?
Java会因容器技术盛行而没落吗?
104 0
|
JSON Kubernetes Cloud Native
Java真的要没落了?
最近也收到很多后端同学的提问,为什么Go的web框架速度还不如Java?为什么许多原本的 Java 项目都试图用 go 进行重写开源?Java会不会因为容器的兴起而没落?Java这个20多年的后端常青树难道真的要走下坡路了?橙子邀请了淘系技术部的同学对以上问题进行解答,也欢迎大家一起交流。
Java真的要没落了?
|
3天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
39 14
|
6天前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
36 13
|
7天前
|
安全 Java 开发者
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。
|
1月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
109 17
|
2月前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
1月前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
2月前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
2月前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。