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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl