根据 JRebel 的报告,这份标志着 JRebel 倡议十周年的新报告,从以下角度审视了 Java 生态系统的状况:

  • 微服务的采用和使用趋势
  • CI/CD 构建时间和提交频率
  • 流行的框架、应用服务器、虚拟机和其他工具
  • 开发人员的整体生产力,包括各种挑战和障碍

该报告共收到了 846 份回复,其中一半的受访者是开发人员,占了大多数;其余的则由 Java 架构师、团队领导、总监、顾问和其他人员组成。

最重要的是,有 31% 的样本在超过 1000 名员工的大型企业中工作,因此这份报告很好地说明了 Java 在工业领域的使用情况。

Java 为何总是受到企业的青睐?

企业在过去和现在一直都在谈论 Java。我们可以从《财富》500 强企业中了解到他们对 Java 的依赖程度。是的,蓝筹股喜欢 Java。理由有很多。企业最看重的是向后兼容性,他们对激进的更新和升级是出了名的“过敏”。20 年前用 Java 5 编写的系统,应该能够在第 8 版下编译和运行。对他们来说,稳定性才是最重要的。

说起来,另一个重要的指标是 Java 版本的采用情况,以及 Oracle JDK 是否比 OpenJDK 更受欢迎。8 版之后的发布周期要快得多,现在已经发布到 18 版,你会期望大多数人都会迁移到最近的版本。但事实却不是这样。正如调查所强调的,37% 的接受调查的开发人员仍然使用古老的 8 版(2020 年为 58%),尽管 Java 11 有 29%(2020 年为 22%)取得了进展。这表明人们更喜欢稳定,而不是掌握所有最新花里胡哨的特性。

至于 OpenJDK 与 OracleJDK 方面,与 JRebel 的 2020 年报告相比,情况发生了一些变化,该报告评论道:

看到我们的调查对象中有多少人在为 Oracle JDK 付费,这非常令人惊讶。我完全预计开源选项会有更大的市场份额。

并提出了一个理由:

在我们的调查中,有大量的 Java 8 开发人员代表。我们认为,使用 Java 8 的开发人员的数量表明,该项目已经有很长一段时间没有更新了,这也许是将应用程序保留在 Oracle 发行版中的原因。

并补充道:

Oracle JDK 提供的支持可能比我们想象的更重要。

今年 OracleJDK 份额从 2020 年的 48% 下降到 36%。GraalVM 从 2020 年的 0.25% 上升到今年的 3%

其余的问题是关于性能问题、微服务和 CI/CD。

受访者开发的主要应用程序的架构是基于微服务的(32%),其次是老式的单体应用(22%)。

我认为,这肯定是由于基于 JVM 的框架的卷土重来,使得 Java 在微服务领域中处于领先地位。我指的是 Quarkus,它与 Micronaut 和 Helidon 一起,是过去几年涌现出来的新的开源框架联盟的一部分,开源框架联盟旨在推动 Java 在微服务领域的应用。它们的 AOT 能力,加上 GraalVM 的本机镜像可执行文件,应该真的会有所作为。

尽管 Spring Boot 仍然占据首位,高达 74%,其次是 Quarkus、Vert.x 和 DropWizard,分别为 5%、2% 和 1%,位列前四。然而,魔鬼就在细节中。Quarkus 在 2020 年有 0.5% 的份额,而 Spring Boot 为 82%。鉴于 Spring 是占主导地位的框架,他们不是将其与 Spring Native 结合起来使用吗,Spring Native 可以让你使用 GraalVM 本机映像编译器将 Spring 应用程序编译成本机映像?

报告中提到的一个主要问题是,自最初转换/创建微服务以来,微服务应用中启动服务的时间有所增加。调查发现,总共有 60% 的人都有过这样的体验,而 35% 的人没有受到影响。

另一个令人失望的结果是,在将一个单体分解成不同的可管理部分后,非但没有获得更好的重新部署时间,而且大多数人发现重新部署时间超过 5 分钟;还有人超过 10 分钟。

在 Java 虚拟机平台类别下,Docker 是迄今为止最受欢迎的选择,占总体受访者的 41%。Kubernetes 排在第二位,为 26%,而 VMWare 位居第三,为 16%。Jenkins 被评为最受欢迎 CI/CD 技术,为 46%;而 Github Actions 紧随其后,为 16%。

在其他类别中,亚马逊云科技是最受欢迎的 PaaS 供应商,Tomcat 再一次成为应用服务器的首选,Maven 是最受欢迎的构建工具,占 68%,Gradle 占 23%,紧随其后。Maven 比 2020 年的 44% 有所上升,Gradle 比 2020 年的 47% 有所下降。这表明,虽然 Gradle 被夸大其词,但对于一般的 Java 开发来说,它被证明过于繁琐;最好坚持使用 Android。

总结一下最有趣的发现,企业转向微服务,并不是因为启动和重新部署的时间更快,而是由于其他一些因素,如模块化和灵活性等。另一个值得注意的方面是,Spring Boot 依然是处理 Java 微服务的主导方式,而其他较新的竞争对手必须覆盖很多领域才能达到相同的水平。这让我们开始思考 AOT 和 GraalVM 的使用情况。它是否被高估的低级炒作,或者说,它太新了,至今仍未被视为一种可行的替代方案?

对于学习Java还有相关的一切疑惑与难题,皆可随时私信我咨询,朋友圈 输入:huany6880 本人接触Java语言将近20年时间,敢说自己对于Java的了解是精通的水平,如能尽自己的绵薄之力为大家提供一些微薄的帮助,不胜荣幸。另外还有专属IT编程就业规划师(Java、人工智能方向)和Java架构师路线图、面试题资料等等

最重要的结论是,尽管技术在不断地改变,但是没有人会迫不及待地去接受。这一点在大型企业中特别有共鸣,因为他们更倾向于稳定,而非创新。当然,在某些时候,他们最终也会踏上这条路,但是要花很多时间和周密的规划。

从业程序员15年,我惶恐了,2022年Java要没落了吗相关推荐

  1. Java程序员已经饱和了,还有必要培训Java编程嘛

    自从互联网时代到来,现今的格局已经渐渐明朗:实体.互联网.人工智能.它们分别代表着不同领域:过去(实体),现在(互联网),未来(人工智能). 大家公认为做Java程序员,工资高,加薪快?没错,现实的确 ...

  2. 边城小猿——某二线城程序员15年的工作经历

    小猿所在的城市是昆明,二线发展较弱城市,要不是省会,估计就划到三线城市了.比起你们的城市,估计小编所在二线城市里,也算数一数二边的了,老少边穷还是能占几样呢.还有,这只是个故事,大家看得开心就好. 一 ...

  3. 五年程序员败在阿里三面,还是Java底层原理的问题啊!

    经常听到一些同学调侃,Boss不聘.前程堪忧.拉不上钩,简历投了上百份,好不容易收到的面试又一个一个被刷掉,这阵仗在互联网IT行业太常见了.身边一朋友就找我聊了. 他小厂背景.15年毕业.普通学校,这 ...

  4. 2020年12月程序员工资统计,平均14222元,Java排名靠后!

    来源:有数可据 blog.csdn.net/juwikuang/article/details/110779857 2020年12月全国招收程序员394699人.2020年12月全国程序员平均工资14 ...

  5. 从事程序员的工作,Python大数据、Java、前端,哪个有发展前景?

    首先我说大数据,现在有很多培训机构培训大数据,根据我多年的从业经验来看,大数据这名字听着不错,好像很高大上.但所谓培训"零基础"的.没有做过开发的人去学习大数据,就跟过家家是一样的 ...

  6. 尚学堂百战程序员1573题---答案总结第一章 初识Java

    第一章 初识Java 1. 你学习编程的目的是什么?学习编程最快的办法是什么? 答:我觉得的我喜欢计算机,我认为计算机是一个很神奇的东西,所以我要学计算机专业,同时,我认为学计算机学编程是一个比较容易 ...

  7. java程序员需要考证_泄题了!Java程序员最可能被考到的14个面试题

    作为程序员在面试的时候碰到的问题还是很多的,不光要掌握像数组.链表.栈.队列和树这样基本的数据结构,在面试中还会碰到数据结构和算法问题.所以小编在这里告诉大家,下面的面试题目很有可能被碰到,一起来看看 ...

  8. 《Java程序员面试秘笈》—— 第1章 Java编程基础

    本节书摘来异步社区<Java程序员面试秘笈>一书中的第1章,作者:常建功,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 Java编程基础 通过考察Jav ...

  9. java属于编译_《程序员修炼之道》-读书笔记一-Java到底属于编译型语言还是解释型语言?...

    Java到底属于编译型语言还是解释型语言? 要想知道Java属于编译型语言还是解释型语言我们需要知道他们的定义和区别 定义: 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序.然后,可直接运 ...

最新文章

  1. 台积电2nm与3nm制程
  2. 20165313-张晨晖课设个人报告
  3. one or more of the ports are invalid. Open the server editor and correct the invalid ports
  4. java的svn插件maver_eclipse中 svn插件导入maven项目
  5. docker --- 镜像、容器
  6. SQL-ALTER-change和modify区别
  7. css属性 content
  8. 基于jQuery焦点图片新闻代码(JS+CSS)
  9. Codeforces 482 - Diverse Permutation 构造题
  10. mysql_fetch_array 失败_mysql_fetch_array错误
  11. 比特币收购足球队,区块链准备登上绿茵场
  12. ubuntu安装pip,setuptools
  13. 大二上学期软件工程概论学习进度表(第十一周)
  14. 创建一个jFinal项目
  15. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_3 mybatis连接池的分类
  16. 汉邦监控录像数据恢复软件---蓝梦软件BestRecoveryForHBMS
  17. 银行IT架构变迁史(金融IT基础架构)
  18. 《Mini-Me: An Adaptive Avatar for Mixed Reality Remote Collaboration》论文笔记
  19. Unity不规则按钮点击区域(UGUI)
  20. 短视频如何添加封面图

热门文章

  1. 计算机毕设(附源码)JAVA-SSM隆庆祥企业服装销售管理系统
  2. 质量小议8 -- 模版
  3. Android动画基础
  4. 计算机网络放大器的作用,无线蹭网利器,深度解析WIFI信号放大器
  5. PHP 下载压缩文件
  6. git简单的安装和下载仓库中的代码
  7. php+5.3.7++,Win7+Apache+PHP5.3.x 安装Zend Guard Loader
  8. c# 调用.bat文件
  9. 利用md5加密实现API接口的加签验签
  10. L1-046 整除光棍 (大数除法)(20 分)