新的 2021 年,Perforce 公司依然没有 “爽约”。前不久,这家公司发布了其第九份年度全球 Java 开发者生产力报告。这份报告的数据来自于这家公司去年 8 月份进行的一项公众调查,截止到去年 11 月,全球一共有 800 多名 Java 系开发人员参与了这项调查。据报告数据显示,这 800 多名参与者中,其中 49% 的参与者是普通 Java 开发人员,24% 的参与者是 Java 架构师,17% 的参与者是团队 Leader。查老师有话说: 相比于去年 76% 的普通 Java 开发人员,今年高级职称参与者较多,看来是工作不饱和,还有空来填问卷。
通过阅读这份报告,我们可以从中了解到当前 Java 开发人员在开发过程中面临的最大问题,以及当下最流行的 Java 语言版本、Java 框架、数据库、CI/CD 技术和一些习惯等等,Perforce 公司也在报告中提供了一些比较有价值的评价。不说那么多了,赶快和查老师一起看看报告的具体内容吧。
技术报告部分
该部分报告,从 Java 语言的使用到应用程序架构、构建工具、虚拟化等方面进行了全方位介绍。
显而易见,当前 Java 系开发人员还是以 Java 8 的应用为主,只不过是从去年的 58% 提升到了 69%。另外 Java 11 的使用率也从去年的 22.56% 提升到了 36%,Perforce 公司预测这个数字还会逐渐增加,因为今年 9 月份 Java 17 就要发布了,这是继 Java 8 、Java 11 后的另一个长期支持(LTS)版本。查老师有话说: 查老师也觉得,再死守着 Java 8 就有点像死守着 Win XP 或 Win 7 一样了。今年问卷的这项调查调整为了多选,所以,有一些其他的 Java 系语言使用率数据也得到了显著提升。至于还有些小伙伴好奇的其他几个语言:Groovy、Kotlin、Scala,因为它们都是基于 JVM 的语言,所以也是属于 Java 系语言范畴内的。 至于 JavaScript?查老师暂时也不知道为啥被算进了 Java 系语言,大概是因为名字上带着 Java 的原因?懂行的小伙伴可以告诉一下。
1.2. 项目架构(多选)
根据报告显示,49% 的受访者在当前项目中使用微服务作为应用架构,比去年的 50.88 % 有所下降。按理说经过一年的发展,微服务架构应该应用越来越广泛,但这部分报告却出现了降低,连 Perforce 公司也比较好奇这事儿,怀疑可能是去年全球疫情的影响导致的。
另外,单体架构的占比依然不容小视,42%的占比仅次于微服务架构,去年才 27.57%,查老师有理由认为这还是由于今年问卷的这项调查允许多选的原因。根据报告显示,66% 的受访者在当前项目中使用 Tomcat 服务器,可以说是占据着应用服务器界的 “半壁江山”,这和去年的情况差别不大。查老师有话说: 其实也很好理解,Spring Boot 等各类应用平台和 Tomcat 都有 “交易”,再加上人家 Tomcat 自身的硬实力,这占比短时间内是不会降低的。
根据报告显示,62% 的受访者使用 Spring Boot 作为主要的框架技术,看起来挺厉害是吧?去年的比例是82.7%。
查老师有话说:Spring Boot 火起来也是有微服务广泛应用的影响,快速构建快速启动符合微服务项目的需求特点。
根据报告显示,75% 的受访者使用注解来完成框架配置工作,58% 的受访者使用外部 XML、YAML或其他类似的文件来完成框架配置工作,其他 22% 的受访者是通过初始化过程中运行一些配置代码来完成这事儿。查老师有话说: 毕竟,注解在这两年大行其道,所以这个比例没啥特别的,去年也是类似的情况。在近两年,效率好像比侵入式的影响更重要。
根据报告显示,65% 的受访者使用 Intellij IDEA 作为专业 IDE,48% 的受访者使用 Eclipse 作为专业IDE,这个情况与目前国内相差不大。查老师有话说: 毕竟 IntelliJ IDEA 用上之后,无论有多不适应,最后都是真 “香”。还有一个比较有意思的情况是,基于浏览器的 IDE 实现了 0 的突破,这也算是行业发展的一些变化吧,老牌 IDE Eclipse 将 Eclipse Che (在线 IDE)称为下一代 IDE ,不就是看好这个市场吗?
根据报告显示,59% 的受访者采用 Oracle Java ,比去年还略有上升。根据 Perforce 公司的推测,这种情况可能是由于今年来自于规模较大企业的受访者占比有所增加,这类企业要进行一些软件架构迁移要比小公司更麻烦一些,而且本身一般不差钱。不过 Perforce 公司还是期望未来这个比例可以降低一些,因为 Oracle Java 的许可证很贵,尤其对小公司来讲是一个很高的成本。根据报告显示,39% 的受访者采用亚马逊作为云服务商,另外,报告显示还有 24% 的受访者表示不需要云计算服务商。查老师有话说: 不过,查老师觉得,如果受访者主要在国内的话,这个第一名应该是阿里云了。
根据报告显示,43% 的受访者使用的是 MySQL 数据库 ,其次 Oracle 及 PostgreSQL 均为 36% 的占比,MongoDB 的占比为 29%。查老师有话说: 去年 PostgreSQL 独占鳌头,比例异常,今年这比例查老师倒是觉得挺合理的。至于其他 NoSQL 部分,查老师觉得没必要看了, Redis 在咱们国内可是非常火爆的。
根据报告显示,67% 的受访者使用 Maven 作为项目中主要的构建工具,其次就是 Gradle。前两名倒是没变,但是比例差异挺大,去年 Maven 和 Gradle 几乎对半分,Perforce 公司推测今年这情况与去年 Android 应用开发总量降低有关,因为 Android 应用主要使用 Gradle 作为构建工具。根据报告显示,57% 的受访者使用 Docker 作为虚拟化平台,42% 的受访者使用 Kubernetes 作为虚拟化平台,与去年相比,Docker 有所下降,Kubernetes 有所上升,这倒是符合当前的市场情况。
另外还有 12% 的受访者完全没用过虚拟化平台,查老师估计上述单体式架构的比例中就有这些人。
根据报告显示,54% 的受访者认为应用响应时间较长是常见的性能问题,39% 的受访者认为 CPU 的高占用是常见的性能问题,35% 的受访者认为内存泄露是常见的性能问题,26% 的受访者认为开启过多的连接是常见的性能问题,其次就是 19% 的受访者认为 IO 查询过多是常见的性能问题。查老师有话说: 在查老师看来,这不就是我们平时提升应用性能的几大方向吗?
根据报告显示,31% 的受访者平时需要花费 2 ~ 3 分钟来进行重新部署,11% 的受访者平时需要花费 1 分钟以内的时间来进行重新部署。
还有剩下各自占了 19% 比例的时间区间,4 ~ 5分钟,6 ~ 10分钟,10分钟以上,这简直是噩梦一样。查老师有话说: 其实重新部署的时间越长,越证明项目环境越复杂,所以倒是和微服务架构应用比例持正比。
根据报告显示,2 ~ 3 分钟,4 ~ 5 分钟,6 ~ 10 分钟,10 分钟以上所占的比例基本持平,只有 8% 的受访者可以在 1 分钟内完成远程容器化环境的部署。上面的问题显示,大多数受访者要花费较多的时间来完成重新部署,Perforce 公司也挺八卦,还想了解下他们这个等待时间一般都会干点什么。
35% 的受访者会在这个期间喝咖啡,21% 的受访者会在这个期间刷 Twitter 、脸书、ins等,各有 7% 的受访者会在这个期间和家人聊天或是睡一会儿,4% 的受访者会在这个期间玩会儿电子游戏。查老师有话说: 另外,还有些较为奇葩的选项是会去遛狗,难道这是居家办公?还是 “暗有所指” ?
八卦公司最后又问了一个问题是,如果你的团队可以在工作日节省出 10% 的时间,这个时间你会用来干嘛?
25% 的受访者会去提升测试覆盖度,21% 的受访者会去提升程序性能,19% 的受访者会去开发新功能,15% 的受访者会去改进开发过程,12% 的受访者会考虑提前发行日期,最后 8% 的受访者考虑开始一个新的项目。查老师有话说: 敬业的让人流泪!一点也不考虑摸鱼吗?还是因为 Perforce 公司没有提供摸鱼选项?
微服务报告
在上方的一些问题调查中,我们已经能很清晰的看出当下微服务的流行度,Perforce 公司这两年的很多调查也是对 Java 社区中微服务的相关问题比较关注。
根据报告显示,36% 的受访者当下正在进行到微服务的过渡工作,30% 的受访者正完全基于微服务开发应用,21% 的受访者表示当下正在积极讨论微服务,只有 13% 的受访者表示暂时没计划采用微服务。根据报告显示,36% 的受访者表示开发的项目中有 5 ~ 10 个微服务,34% 的受访者表示开发的项目中有 1 ~ 5 个微服务,14% 的受访者表示开发的项目中有 10 ~ 20 个微服务,16% 的受访者表示开发的项目中有 20 个以上的微服务。查老师有话说: 查老师没填这份问卷,不过推测这道问题,应该是选择了采用微服务后的关联题。
根据报告显示,30% 的受访者认为,解决服务间的功能问题是开发微服务的最大挑战;24% 的受访者认为,搭建本地开发环境是开发微服务的最大挑战;而解决服务间的性能问题及在生产中扩展及监控的所占比例各自是 14%;还有12% 的受访者认为,提升分布式系统的性能是开发微服务的最大挑战。查老师有话说: 另外的 6% ,查老师觉得他们可能是不想回答此问题。
CI/CD报告
根据报告显示,61% 的受访者表示使用 Jenkins 作为 CI/CD 的首选技术,还有 10 % 的受访者表示没有采用任何 CI/CD 技术。
根据报告显示,27% 的受访者表示他们在 CI/CD 上完成一次构建需要花费 10 分钟以上的时间,26% 的受访者表示需要花费 6 ~ 10 分钟, 22% 的受访者表示需要花费 4 ~ 5分钟,21% 的受访者表示需要花费 2 ~ 3 分钟,只有 4% 的受访者表示需要花费 1 分钟以内的时间。查老师有话说: 自动化的过程,这点时间完全是可以接受的。
最后一个调查的问题是:每天,你提交多少次代码到你的 CI/CD 构建平台?
33% 的受访者表示每天大概 5 次以上,20% 的受访者表示每天大概 2 次,19% 的受访者表示每天大概 3 次,每天提交 1 次或 4 次的各占 14%。后记
好了,报告看完了,八卦的 Perforce 公司做报告做的挺漂亮的。其次,这次受访者可能是由于大佬比较多,普通开发人员较少,所以有些部分的比例感觉不是太正常。当然本身问卷调查这种东西,基数大了可靠度才会越来越高,大家在读报告的时候,也不要太过于盲从一些选择,毕竟它只能体现出 800 多名受访者的大致情况,做个参考即可,具体还得根据自身项目要求决定一些技术选型等。最后,因为查老师自身翻译能力有限,所以有些部分的解释不够通俗易懂,希望大家海涵。想要获取 完整 pdf 版的报告 可以微信搜索 查老师的讲义 ,关注后回复 Java2021报告 即可获取到。Jrebel 2021年Java开发者生产力报告:https://www.jrebel.com/resources/java-developer-productivity-report-2021☞微软大中华区换帅:80后侯阳出任董事长兼CEO
☞Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇
☞为什么我们很难看到代码 5 分钟前的样子?
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/