Java语言现状 (21年初20年底)

2023-11-08 09:48

本文主要是介绍Java语言现状 (21年初20年底),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IntelliJ IDEA 发布了一项最新调查,中国有 51% 的程序员使用 Java ,这个比例全球最高,同时还有一些其他有趣的数据

今年,Java 达到了一个令人难以置信的里程碑,并达到了 25 岁的高龄

他们在哪里?

第一个问题是:“大多数 Java 开发人员都在哪里?”

根据市场研究和分析团队评估,当今世界上有大约 520 万将 Java 作为主要开发语言的专业 Java 开发人员

但是如果包括把 Java 作为副语言的开发者,这个数字可能接近 680 万

Java 开发人员最多的地方是亚洲,大约有 250 万的开发人员使用 Java 作为他们的主要编程语言

北美和欧洲的数字远不及亚洲,你可能会问“为什么呢?”

我们也有同样的想法,所以更深入地研究了这些区域,看看这些数字究竟是从哪里来的

具体在哪里

再深入一步,我们研究了 Java 开发人员最多的各个国家,调查了为什么这些国家在特别青睐 Java 而不是其他语言

下图显示了每个国家 / 地区使用 Java 作为主要开发语言的人员占比,中国韩国最高,分别约为 51%和 50%

数据取自《2020 年开发商生态系统状况调查》

专家分析

Java 在前 6 个国家中如此受欢迎

可能是因为:Java 的免费使用,政府支持和开源

中国西班牙巴西尤其如此

它是在中国印度进行 Android 移动开发的基础,用 Java 构建手机应用程序非常普遍,这可能是在印度使用率高的原因

德国也非常高,这可能归因于 Java 是德国最受工程师欢迎的语言,因为它被用于为许多行业构建常用的应用程序

大多数企业服务都依赖 Java 来开发应用程序,这些程序用于支持业务的日常运行,比如工资单、库存管理、报告等等

德国还有一个很大的金融系统,大量使用 Java 开发本国技术,比如交易机器人、零售银行系统和其他金融行业需要的应用程序

与之相比,美国没有那么高比例的 Java 用户,这也有道理

他们仍有大量的技术栈可供选择,往往会选择可以用来快速创建和测试应用的语言,所以可能不需要 Java 的强大功能和稳定性

行业见解

根据 2020 年开发者生态调查,超过三分之一的专业开发者使用 Java 作为主要语言

Java 仍然是仅次于 JavaScript 的专业开发者的第二大主要语言

专家分析

JavaScript 和 Java 占据主导地位并不令人惊讶,Java 开发者经常用 JavaScript 编写前端或者任何脚本文件

Python 排名第三可能是由于机器学习的普及

web 是开发者生态的重要组成部分,因此 JavaScript、HTML 和 CSS 以及 PHP 将永远有稳固的地位

SQL 也将一直存在,因为没有多少东西不需要数据库

c++ 是一种可靠的语言,被用于许多嵌入式应用程序,所以它会在排行榜存在很长时间

然而 c# 似乎正在失去优势,它和 Java 此消彼长,因为它们在功能方面非常相似

至于为什么认为 Java 的地位如此之高 —— 大多数企业的业务服务都依赖 Java 来运行

不只是 It 部门 —— 几乎每个公司,无论是销售、制造还是银行,都将 It 服务作为其基础设施的一部分

而这些服务 (如工资单或库存管理) 通常在后端使用 Java 构建,所以 Java 才这么常用

用 Java 开发的软件类型

根据《开发者生态 2020 》调查的结果,Web 服务是 Java 最流行的领域,占 52%

专家分析

令人惊讶的是,Java 在智能商务 / 数据科学 / 机器学习中也如此流行

其他的不足为奇,因为 web 服务中的后端通常是 Java 的,当他们需要后端和数据库一起工作时,他们常常会选择 Java

使用 Java 的热门行业

Java 程序员主要在 IT 服务(42%)和金融与金融科技(44%)中工作,但这并不是说 Java 不用于其他行业

Java 工具

Java 版本

Java 8 仍然是最受欢迎的版本,有 75%的 Java 开发者正在使用它

有几个因素导致 Java 8 如此流行:首先,它具有 Java 开发者需要的一切,它具有 lambda 和 streams,并且是一个易于使用的好版本

而且,大家不太情愿迁移到 Java 9。Java9 引入了一些重大的架构变化,人们担心这些变化会破坏他们用 Java 8 构建的应用程序

最重要的是,Oracle 推出了每两年发行一次的制度,因此并非所有版本都长期受支持,Java 9,Java 10,Java 12 和 Java 13 仅受 6 个月支持,这可能就是它们都只有这么少用户的原因

Java 13 之所以也很高,是因为调查时,它是最新版本,这个数字可能会在几个月后下降

Java 11 于 2018 年问世,它是最近一个被长期支持的版本。许多企业仍未迁移到它,因为他们担心超越 Java 9(随着体系结构的更改)会破坏一切

而且Java 11 引入了新的许可和订阅,如果你使用了错误的版本,以错误的方式,Oracle 还会罚款

导致许多开发人员不升级 Java 11 的最后一个重要因素是,Java 11 没有太多令人兴奋的新特性,升级的风险大过新版本的功能

Java 17 将是下一个长期支持的版本,它带来了大量的新特性,但是直接从 Java 8 更新到 Java 17 也会有问题

我的预测是,下一个长期版本 Java 17 将比上一个 LTS (长期支持版本) Java 11 更受欢迎。如果你在为 Java 17 做准备工作

我建议先将你的代码库更新到 Java 11,然后再更新到 Java 17,以避免大问题

流行的服务器应用

在过去的三年中,Apache Tomcat 仍然是最受欢迎的服务器应用

而 JBoss EAP 和 WildFly 的使用者减少了一半。

专家分析
Jetty 位居第二,确实低得令人惊讶

可能是某些正在使用 Spring Boot 和其他微服务框架的开发人员没有意识到他们在不知不觉中使用到了 Tomcat 或 Jetty

前五名 Web 框架

2018 年和 Spring MVC 一样流行的 Spring Boot,到 2020 年变得更加流行

前 5 名 IDE / 编辑器

IntelliJ IDEA 的市场份额从 2018 年的 55% 上升到 2020 年的 72%

而其他 4 个的使用量则有所下降,这是开发者生态系统调查 (2018 年和 2020 年) 报告的结果

转自作者Valeriia Karpenko

传智無彦祖(修改)

这篇关于Java语言现状 (21年初20年底)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369070

相关文章

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再