当前位置: 首页 > 后端技术 > Java

SnykJVM生态系统报告2021发现Java11在生产中的使用有所增加

时间:2023-04-01 19:49:50 Java

Snyk和Azul的JVM生态系统报告2021显示,62%的受访开发人员在生产中使用Java11,高于Java8的60%。Kotlin是最继Java之后流行的JVM语言。AdoptOpenJDK是最受欢迎的JDK发行版,占45%,远远领先于OracleOpenJDK和OracleJDK,分别为28%和23%。最近创建了新工作组的EclipseAdoptium贡献了1%(Adoptium仍在孵化阶段,尚未正式发布任何二进制文件)。SpringBoot、JarkartaEE和更新的框架的使用在过去一年中有所增长。开发者青睐IntelliJIDEA,它的使用量是EclipseIDE的三倍,Maven的使用量是Gradle的两倍。该调查从2021年2月到2021年3月持续了六周,超过2,000名Java开发人员对此做出了回应。60%的回复来自欧洲,19%来自北美,12%来自俄罗斯和亚洲。35%的受访者就职于员工人数不超过100人的公司,而37%的受访者就职于员工人数不超过1,000人的公司。今年的大部分调查结果都无法与去年的进行比较,因为它允许提供多个答案。调查发现,21%的开发人员在生产中使用Java12或更新版本,是使用Java7或更早版本的6%的开发人员的三倍多。由于此问题最多允许三个回答,因此使用Java11或更高版本的开发人员的总体百分比是未知的,使用Java8或更早版本的开发人员的百分比也是如此。该报告的调查结果与JRebel于2021年3月发布的2021年Java开发人员生产力报告形成鲜明对比。该报告发现,Java8的使用率是Java11的两倍,Java7及更早版本与Java12持平,更新。JRebel报告收集了2020年8月至2020年11月的876份开发人员回复,与Snyk报告不同,该报告没有区分JDK的开发和生产使用。下图比较了今年和去年的Snyk报告和JRebel报告的结果:Java版本使用情况JRebel2021报告显示,所有Java版本的使用量从2020年开始增长,包括Java8和Java7及更早版本。Snyk发现Java是最受欢迎的JVM语言,占91%,领先于Kotlin的18%、Groovy的13%、Scala的10%和Clojure的8%。该报告通过分析GitHub存储库的编程语言,将调查结果与实际使用情况进行对比。由于Kotlin1.0在GitHub发布8年后发布,因此Java以18:1而不是5:1领先Kotlin也就不足为奇了,正如调查回复所表明的那样。Groovy和Scala发布了它们的1.0版本,此后不久GitHub与Clojure一起引入。尽管如此,Kotlin仍然以比调查中更大的优势领先所有三种语言:Groovy8:1vs.1.4:1,Scala2.7:1vs.1.8:1,以及7:1vs.2.3:1Clojure。Kotlin在报告中的受欢迎程度与TIOBE指数形成鲜明对比,截至2021年7月,Groovy领先Kotlin3.4:1(1.09%对0.32%)。TIOBE指数衡量编程语言作为其搜索引擎的一部分的受欢迎程度查询。在AdoptOpenJDK之后,第二受欢迎的JDK发行版是Oracle的OpenJDK发行版,占28%。Oracle的商业许可JDK以23%位居第三,其次是各种OpenJDK发行版:Azul16%,AmazonCorrecto9%,与Linux和RedHat捆绑的OpenJDK发行版各占8%。去年的调查已经允许对服务器端框架进行多项回答,因此可以与去年进行比较。除了SpringMVC之外,所有框架的使用量都有所增长:SpringBoot以适度增长保持领先地位,而JavaEE/JakartaEE增长显着。RedHat的Quarkus、EclipseMicroProfile和Micronaut等现代微服务框架在今年首次亮相。在IDE部分,Snyk报告说IntelliJIDEA拥有72%的市场份额,Eclipse25%,微软的VisualStudioCode23%。Snyk还发现,每两个开发人员使用一个以上的IDE,每四个开发人员使用四个或更多。据报道,76%的开发人员使用Maven构建工具,38%使用Gradle,12%使用Ant,5%使用SBT。在查看Snyk开源工具报告的实际使用数据时,Maven对Gradle的领先优势增加到3:1(74%对25%)。但该工具仅支持Maven、Gradle和SBT。而且,与调查不同的是,这里的使用率加起来是100%。Snyk的开发倡导者、JavaChampion和该研究的作者BrianVermeer向InfoQ谈到了这份报告。InfoQ:你们的研究基于2000多个调查回复。与整个Java开发人员群体相比,您认为您的结果有多具有代表性?我相信默认情况下调查总是有偏见的。然而,这是当前JVM生态系统报告中受访者人数最多的一次,我们去年的人数也差不多。我相信数字可能会波动,但结果将具有代表性。InfoQ:今年你与Azul合作进行了这项研究。他们的贡献是什么?Azul的人帮助我们设置了调查和审查问题。此外,其他几位JavaChampion和Java社区人员也提供了反馈。Azul的工作人员在如何命名所有不同的OpenJDK构建与更商业许可的构建方面提供了很多帮助。对于某些人来说,这可能是一个微妙的问题。此外,我们、Snyk和Azul已决定将JDK构建和发布的生产和开发分开。InfoQ:你们的报告总是包含基于调查响应的Java构建工具的分布。但今年,您还包括基于Snyk的开源工具自动收集的数据的构建工具分发。为什么?对于多个问题,我们将调查数据与其他数据源进行了比较。我们使用了来自Github搜索、谷歌趋势和我们自己在Snyk的数据。这样我们就可以在一定程度上验证研究结果。对于构建工具,我们查看了Snyk内部构建工具的分布,发现Maven比其他构建工具使用更广泛。这与调查得出的结论相似。InfoQ:Snyk工具扫描构建文件和Docker容器。您是否计划在未来的研究中包含更多由您的工具(例如Java框架、JDK版本或JDK版本)收集的数据?在某种程度上,我们已经做到了。对于容器,我们还可以在某些Linux发行版中扫描二进制文件以查找JDK版本。例如,这里是AlpineLinux3.8附带的OpenJDK8中的问题列表。我们已经针对Maven或Gradle中项目的清单文件扫描了Java框架和库是否存在安全问题。除此之外,我们目前还有Snyk代码,这是一种SAST功能,可以扫描您的自定义Java代码以查找可能的安全问题。所有这些功能都可以从我们的CLI获得,其中大部分也可以使用Snyk集成IDE、构建工具和CI管道。开发人员调查(例如Snyk和JRebel提供的调查)为Java社区提供了有用的数据。然而,结果往往不能代表全球Java开发人员群体,因为调查“通常是自我选择的,并且围绕特定的人口统计数据聚集,例如Twitter关注者或IDE论坛”。Snyk和JRebel都没有透露他们调查结果的误差幅度。更多细节可以在完整的报告中找到。