今年,Java达到了一个令人难以置信的里程碑,并达到了25岁的高龄。我们通过举办一次特殊的Java日在线活动来庆祝其成立五十周年,在该活动中,许多专家演讲者分享了他们的经验,并提供了有关如何从该语言中获取更多收益的提示和技巧。

这让我们开始思考,我们决定深入研究数据,以一劳永逸地发现Java的普遍状态,并帮助回答您的一些迫切问题。我们发现的某些内容可能不足为奇,但也有一些非常出乎意料的见解。

随着本周Java 15的发布,我们决定将它们放在一起并向您展示Java的状态。这篇文章是根据来自多个不同来源的数据创建的,其中包括来自我们的开发者倡导者Trisha Gee的专家评论。

哪里

第一个问题是:“大多数Java开发人员都在哪里,我们中有多少人呢?” 我们通过结合可以获取的最准确的信息来进行回答,然后进行推断以得出我们认为是非常有根据的猜测。

市场研究和分析团队开发人员估计模型的最佳估计表明,当今世界上有大约520万专业Java开发人员将Java作为主要语言。但是,如果我们包括专业开发人员,他们主要使用其他编程语言,但同时也使用Java,那么这个数字可能接近680万

关于这些Java开发人员的集中地,亚洲居住的Java开发人员数量最多,大约有250万开发人员使用Java作为主要语言。北美和欧洲的数字远不及亚洲。您可能会问,“但是为什么?” 好吧,起初我们有完全相同的想法,所以我们对这些区域进行了更深入的研究,以确切地了解数字的来源。

具体在哪里

更深入地讲,我们研究了Java开发人员最多的各个国家,然后调查了为什么这些国家在专业开发方面特别喜欢Java而不是其他语言。

下图显示了每个国家/地区使用Java作为主要语言的开发人员所占的百分比(用于收集此数据的调查受访者最多可以选择3种主要语言)。中国韩国的价值最高,分别约为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高,那么C#就会低,因为它们在功能方面都非常相似。关于我为什么认为Java在专业发展领域如此之高的原因–与关于德国提到的内容相似。大多数企业业务服务都依赖Java使它们顺其自然。不仅是IT部门-几乎每个公司,无论是在分销,制造还是银行业,都将IT服务作为其基础结构的一部分,而这些服务(例如薪资或库存管理)通常都是在后端使用Java构建的。因此,为这些公司工作的专业开发人员经常使用Java。将IT服务作为其基础结构的一部分,这些服务(例如工资单或库存管理)通常在后端使用Java构建。因此,为这些公司工作的专业开发人员经常使用Java。将IT服务作为其基础结构的一部分,这些服务(例如工资单或库存管理)通常在后端使用Java构建。因此,为这些公司工作的专业开发人员经常使用Java。

用Java开发的软件类型

快速浏览使用Java开发的软件类型应该可以了解其使用情况统计信息。根据《2020年开发者生态系统状况》的结果,Web服务是Java最受欢迎的领域,占52%。

专家分析
令人惊讶的是,Java在商业智能/数据科学/机器学习中如此流行,因为您认为这将是Python的领域。其他Web服务的后端通常是Java,因此并不令人惊讶,因为使用Java编写业务应用程序也很有意义,因为它们也需要与后端和数据库一起工作。

使用Java的热门行业

现在我们知道了为什么许多专业开发人员都使用Java,下面让我们专门研究一下Java的使用行业。

根据2020年开发者生态系统调查,Java程序员主要在IT服务(42%)和金融与金融科技(44%)中工作,但这并不是说Java不用于其他行业。

专家分析
金融和金融科技领域主要涉及金融交易所,零售银行系统,创建计算引擎以及开发本地定制工具和服务,以使公司在市场上具有竞争力。Finance和FinTech几乎都是用Java建立的,因此这里并不奇怪。IT服务也是如此,因为许多针对非IT公司的薪资系统和库存管理服务都是基于Java构建的。其他行业虽然很有趣。由于Android,移动开发的速度可能很高,因此以这种方式使用Java。大数据和数据分析非常有趣,因为该行业由Python领导,但是后端可能会使用Java和JVM语言。软件开发工具,当然可以。JetBrains IDE当前使用Java构建。

Java工具

Java版本

Java 8仍然是最受欢迎的版本。使用Java作为主要语言的专业开发人员中有75%使用了它。下图显示了Java版本的分布情况,假设开发人员在2020开发者生态系统调查中选择了其中的几个版本。

专家分析
有几个因素导致Java 8如此流行的原因。首先,它具有典型Java开发人员从该语言中所需的一切,它具有lambda和流,并且通常是一个易于使用的好版本。而且,人们真的不愿意使用Java9。Java9引入了一些重大的体系结构更改,人们担心这些更改会破坏他们用Java 8构建的应用程序。最重要的是,Oracle推出了每两年发行一次的版本,并且因此并非所有版本都长期受支持,因此Java 9,Java 10,Java 12和Java 13仅受6个月支持,这可能就是为什么它们都只有这么少用户的原因。Java 13之所以如此之高,是因为当本调查结束时,它是最新版本,因此您可以预期Java 13会在几个月后下降。
Java 11于2018年问世,它是具有长期支持的最新版本。许多企业仍未迁移到它,因为他们担心超越Java 9(随着体系结构的更改)会破坏一切,而且Java 11引入了新的许可和新的订阅,因此它更加担心如果您使用错误的版本,以错误的方式,Oracle会罚款您。许多开发人员不升级到Java 11的最后一个主要因素是,它没有许多令人兴奋的新功能,因此语言的功能并未降低升级的风险。Java 17将是具有长期支持的下一个版本,并带有许多新功能,但是从Java 8到Java 17的直接更新将有其自身的问题。
我的预测是,我认为下一个长期版本Java 17将比上一个LTS(长期支持版本)Java 11更受欢迎。不过,作为Java 17的准备,我真的不能对此施加太大压力,建议您先将代码库更新为Java 11,然后再更新为Java 17,以避免出现大问题。

流行的应用服务器

在过去的三年中,Apache Tomcat仍然是最受欢迎的应用服务器,而JBoss EAPWildFly的使用却减少了一半。所提供的数据来自所有使用Java作为主要语言的开发人员 ,这些人员参加了2018年2020年Developer Ecosystem Survey

专家分析
Jetty位居第二,但确实低得令人惊讶。可能是某些正在使用Spring Boot和其他微服务框架的开发人员可能没有意识到他们在幕后使用的东西–他们可能正在使用Tomcat或Jetty而不了解它们。

前五名Web框架

春季启动 有同样的声望作为Spring MVC的 在2018年,现在已经成为比较流行的2020年。给出的数据来自所有使用Java作为主要语言的开发人员。

专家分析
这基本上只是在确认Spring拥有市场。仍然有人在使用Struts 1几乎可以肯定只在旧版应用程序中使用。

前五名JVM探查器

开发者的生态系统国家调查2020页显示,VisualVM的使用由用户的24%,而一半使用没有。给出的数据来自所有使用Java作为主要语言的开发人员。

前5名IDE /编辑器

根据开发者生态系统调查 20182020的报告,IntelliJ IDEA的份额从2018年的55%增加到2020年的72%,而其他四个的使用减少了。

专家分析
不过,即使我们对调查结果进行了加权,我们也不否认信息可能会偏斜,因为这是从JetBrains开发者生态系统状况调查得出的,JetBrains的主要产品之一是IntelliJ IDEA。但是,这并不是说这并非完全不合理,就好像我们在其他调查中看到的一样,IntelliJ IDEA通常是最常用的IDE之一,通常拥有约55-60%的用户份额。VS Code正在增长,这从竞争的角度来看,而不是从竞争的角度来看,实际上实际上是从对IDE给您的理解上缺乏了解的角度出发。VS Code是一个代码编辑器,具有一些您可以在IDE中找到的功能以及可以提供附加功能的扩展-因此,如果人们转向VS Code进行开发,则可能意味着开发人员不知道什么是功能齐全的功能。 IDE可以给他们。在网络空间中,使用编辑器是可以理解的,因为网络开发人员通常使用动态语言,并且经常使用其他工具(例如浏览器插件)来满足他们的需求。但是在Java中,特别是在专业Java中,确实可以从与应用程序服务器集成的好的工具中受益匪浅,并且可以真正使用分析和重构以及所有功能。

来自我们专家的最新消息
,通过使用我对此博客文章的数据分析的删节和编辑版本,我可以发现,这是我无意间造成的混乱。我想澄清我对开发人员和IDE的评论的意图。对我来说,如果开发人员不了解IntelliJ IDEA给他们提供了什么功能齐全的IDE,那对我来说是一个失败,因为六年来我一直在教育开发人员关于IDE(特别是IntelliJ IDEA)可以做什么的知识。为你做。我非常强烈地认为,不应将不理解产品归咎于用户或准用户。
 
我对Java开发人员的IDE的个人观点来自从事Java开发人员20多年,从事大型Java项目和小型项目。我无法想象没有您从像IntelliJ IDEA这样的IDE获得大量帮助的情况下,尝试创建复杂的企业应用程序。我也见过很多使用VS Code的开发人员,并且我完全看到了代码编辑器涵盖的用例。在您的工具包中总是有不只一种工具的空间,而了解一种工具的出色表现有助于我们为正确的工作选择合适的工具。

讨论最多的Java工具和其他语言

Java在IT社区中经常被讨论,其中之一就是Stack Overflow。我们从“问题与解答”部分中获取了数据,以找出哪些标签最常出现在“ java”中。纵轴表示Java提及的内容,横轴表示标签出现的总数。

专家分析
该图表可能对想要确保使用正确技术或为他们寻找工具的用户很有用。语言有点有趣,但这可能是因为人们正在寻找Java与其他语言之间的比较。正则表达式是人们苦苦挣扎的一种利基市场,但他们跻身榜单并不奇怪。

Java社区中的热门话题

Java讨论

我们分析了有关“ java” subreddit的帖子, 并发现Java用户在Reddit上讨论最多的主题。

专家分析
这些正是我期望看到的主题。例如,用Java编写代码的人总是会对这种语言是否仍然有需求感兴趣,毕竟,这种语言还在发展。我们刚刚庆祝了Java诞生25周年,因此人们希望检查它是否过时和遗留,并且仍然有效。特别是,如果他们刚刚大学毕业,却不知道他们所学的语言是否会为他们提供工作机会。在容器中部署Java是一个非常热门的话题,包括我在内,每个人都想知道这一点,但几乎找不到任何信息。我对性能优化这个主题并不感到惊讶,尽管我认为这个主题有点多余,因为大多数应用程序实际上并不需要开发人员进行优化,尽管许多开发人员认为这是一项重要的职业技能。使后端和前端协同工作也可能非常复杂,我可以想象对此存在很多问题。

Java基础学习总结(163)——Java 语言2020 发展现状相关推荐

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  2. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  3. Java基础学习总结(50)——Java事务处理总结

    一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...

  4. java中哪些可以私有化_《Java基础学习笔记》JAVA修饰符之私有化(Private)

    1,什么是private修饰符? private是权限修饰符,用于修饰类中的成员(成员变量,成员函数). private修饰后的成员只在本类中有效. /* 例: * 将age私有化以后,类以外即使建立 ...

  5. 《Java基础学习笔记》JAVA面向对象之封装

    1,封装,是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 2,好外:        a)将变化隔离.        b)便于使用.        c)提高重用性.        d)提高安全性 ...

  6. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  7. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  8. Java基础学习总结(20)——基础语法

    2019独角兽企业重金招聘Python工程师标准>>> 一.标识符 二.关键字 三.JAVA基础数据类型 3.1. java常量 3.2. java变量 从本质上来讲,变量其实是内存 ...

  9. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

最新文章

  1. 腾讯年终奖刷屏了...
  2. Android ShareSDK桥接技术
  3. XPath element 格式
  4. 从alexnet到resnet,初探深度学习算法玩摄影
  5. 人工神经网络之激活函数 -RELU函数
  6. java socket建立长连接_Java Web项目中使用Socket通信多线程、长连接的方法
  7. tcp并发服务器_在Go中构建并发TCP服务器
  8. C#线程系列讲座(5):同步技术之Monitor
  9. PHP程序员如何突破成长瓶颈(php开发三到四年)
  10. 二维码识别超级解决方案,工业级别
  11. JavaScript中的对象比较[重复]
  12. composer 介绍及安装
  13. maven安装配置换阿里源
  14. 刷单之骗人先交钱QQ,如何从qq,找到他的ip
  15. 【笔记】A Tutorial of Transformers_复旦大学邱锡鹏报告
  16. Apache NIFI
  17. 10个最佳Android游戏模板
  18. tipask火车头采集器文章和提问发布模块|非免登录
  19. oracle中varchar2类型的字段长度单位默认是按照byte来定义
  20. 博客项目(一):API说明文档、用户模块、短信模块、支付模块

热门文章

  1. 一天挣了684,方法分享给大家,下班在家做自媒体视频剪辑
  2. 『言善信』Fiddler工具 — 9、Inspectors(检查器)界面
  3. 商机 | 大数据/政务云采购清单 招标6起,最高招标价为372万(9.16-9.19)
  4. 办理社保时参保类型那里是选新参统还是转入?
  5. python的列表的操作
  6. 面试技术型中高层管理人员的问题
  7. 分享UG数控编程小技巧,建议收藏
  8. 高效 MacBook 工作环境配置,超实用!
  9. 跨局域网远程桌面连接设置步骤
  10. Xmodem协议用作OTA时候的总结