【技术回顾】2021年Java软件开发状况
第 9 次年度全球开发人员生产力报告的最新结果让我们深入了解了 2021 年 Java 的现状。超过 850 位 Java 开发人员回答了有关他们的经验、首选工具和技术以及他们目前面临的问题的问题。
Java 工具 JRebel 和 XRebel 的提供商 Perforce 最近公布了其第 9 次年度全球 Java 开发人员生产力报告[https://www.jrebel.com/resources/java-developer-productivity-report-2021]的结果,该报告基于对 850 多名 Java 开发人员的调查。涵盖的主题包括 Java 团队的性质、他们遇到的挑战、首选工具以及所述工具和技术的成功。关键发现表明,尽管微服务的使用越来越多,但开发人员仍然面临着较长的重新部署时间和服务间功能问题。
关于受访者
调查发现 49% 的受访者是 Java 开发人员,其余的则分布在团队负责人、架构师和顾问身上。6% 为董事、副总裁或 C 级。很高兴听到回复的每个人都在工作,其中超过三分之一 (36%) 在企业(较大)组织中,42% 在中小型公司中,15% 在初创企业中。大多数人在小团队中工作,这表明对更敏捷开发和采用微服务的需求日益增长,开发人员使用更小的代码段工作。40% 的团队是 3-9 人,24% 是 10-20 人,17% 是 20-50 人。
Java 和微服务趋势
正如预期的那样,69% 的受访者仍在使用 Java 8,其次是 JavaScript,占 40%,Java 11 占 36%(请注意,他们可以选择不止一种编程语言)。只有 16% 的人表示他们正在使用 Java 12 或更高版本,而 15% 的人目前坚持使用 Java 7 或更高版本。
微服务的采用保持稳定,66% 的受访者要么积极过渡到微服务,要么目前正在使用微服务。只有 13% 的受访者根本不打算转型。开发人员还被问及他们的主要应用程序中有多少微服务,范围从 1 到 20。答案是 36% 使用 5-10,34% 使用 1-5,其次是 16% 使用 20 或更多和 14% 10-20。当然,组织可以拥有多个应用程序架构,例如:42% 仍使用单体架构,29% 使用 SOA,23% 使用移动,18% 使用桌面。
最受欢迎的工具
该报告对受访者在每个类别中最常用的技术和工具进行了调查:
应用程序服务器——Tomcat 仍然占据 66% 的主导地位。然后在 JBoss/WildFly (19%)、WebLogic (18%)、Jetty (15%) 和 WebSphere (14%) 之间的分布相对均匀。
应用程序框架——Spring Boot 以 62% 位居榜首,比去年的 83% 有所下降。DropWizard 的用户占 8%(比 2020 年的 1% 有所增加);同样,Quarkus 的采用率也从 1% 增长到 6%。
框架配置——注解占 75% 的领先地位,而 22% 的配置使用添加到在初始化期间运行的方法的代码。
IDE ——IntelliJ IDEA 以 65% 的比例排名第一,其次是 Eclipse (48%)、VSCode (27%) 和 NetBeans (13%)。
JRE/JDK 发行版——Oracle JDK 的使用率上升了——与去年的 50% 相比增长了 59%——尽管有报道称人们由于许可成本而放弃了它。这可能归因于对调查做出回应的大型企业的数量,因为他们通常发现转型比小型组织更难。排在第二位的是 AdoptOpenJDK,占 22%,另外 10% 的报告使用 Amazon Corretto。
数据库——最受欢迎的是 MySQL,占 43%,其次是 Oracle DB 和 PostreSQL,各占 36%。接下来是 MongoDB,有 29% 的受访者。
构建工具——Maven 是 67% 的首选工具,而去年,Maven 和 Gradle 几乎并驾齐驱。
虚拟化工具——88% 的人表示他们使用这些工具,其中最常见的工具是 Docker,占 57%,低于去年的 74%。Kubernetes 以 42% 的比例位居亚军,比 12 个月前的 35% 有所上升。VMWare 以 27% 的份额位居第三(再次与 2020 年相比有所增加)。
CI/CD – Jenkins 脱颖而出,有 61% 的受访者使用它,而其他人(Bamboo、TravisCI、TeamCity 等)的使用率为 12% 或更少。
PaaS – 大多数受访者现在都在使用 PaaS 提供商,只有 24% 的人表示他们没有。对于那些使用 PaaS 提供商的人来说,AWS 是 39% 的首选。微软 Azure 以 24% 紧随其后,谷歌云以 18% 紧随其后。
开发者痛点与挑战
引用的最大应用程序性能问题是应用程序响应时间过长,为 54%(与去年的 55% 持平)。这种持续的趋势与越来越多的微服务采用相一致。报告的下一个最高性能问题是高 CPU 使用率 (39%) 和内存泄漏 (35%),过多的打开连接和 IO 查询分别占 26% 和 19%。
部署时间是一个常见的抱怨领域。59% 的开发人员经历了超过 4 分钟的重新部署时间,20% 的开发人员经历了超过 10 分钟的重新部署时间。这背后有两个潜在的原因。一是当微服务规模扩大时,开发和创建应用程序需要更长的时间。第二个原因是由于在远程虚拟机上运行的微服务。
具体到微服务,服务间功能故障排除是报告的最大挑战,占 30%,其次是在本地设置开发环境的问题 (24%)。这可以归因于创建复杂的微服务应用程序的困难。以 14% 的比例并列第三的是解决服务间性能问题以及生产中的扩展和监控方面的挑战。
最后,开发人员被问到如果他们的挑战得到缓解,他们将如何在工作日花费额外的时间。四分之一的受访者表示他们将专注于提高测试覆盖率,其次是提高应用程序性能 (21%)。19% 的人表示他们会添加新功能,而 15% 的人会花费额外的时间来改进开发过程。12% 会加快发布节奏,12% 会提前发布日期,8% 会开始一个新项目。让我们希望到明年这个时候,他们至少有更多的时间来实现这些目标。