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会因容器技术盛行而没落吗?
97 0
|
JSON Kubernetes Cloud Native
Java真的要没落了?
最近也收到很多后端同学的提问,为什么Go的web框架速度还不如Java?为什么许多原本的 Java 项目都试图用 go 进行重写开源?Java会不会因为容器的兴起而没落?Java这个20多年的后端常青树难道真的要走下坡路了?橙子邀请了淘系技术部的同学对以上问题进行解答,也欢迎大家一起交流。
Java真的要没落了?
|
10天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
12天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
12天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
13天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
35 3
|
13天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
93 2
|
21天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
46 6
|
2月前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
1月前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####