我最近几周一直在组织年度"Java生态现状"调查,这是该调查的第五年,自然也是规模最大的一次——5160名开发者参与了答题。

我们直接来看数据。

1. Java版本采用情况

不出所料,Java 8仍在生产环境中占据绝对主导地位:
Java版本采用情况

Java 9和10的采用率仍然很低,均不足5%。
作为参考:2017年Java 7及更早版本的采用率约为24.4%,如今已降至10.6%——显然生态正在升级,且主要流向Java 8。

2. Spring框架采用情况

再看Spring的数据:
Spring版本采用情况

这里明显看出Spring 5的迁移趋势,生产环境中已有24%的Spring系统运行在最新版本上(较去年仅2.2%的早期采用率大幅提升)。
当然,今年我们也首次获得了Java EE的明确数据——毕竟不是所有人都在用Spring 😉

3. Spring Boot采用情况

在所有基于Spring构建的系统中,几乎都在生产环境使用了Boot:
Spring Boot采用情况

真正令人惊讶的是Spring Boot 2的采用速度——正式GA发布不到两个月,采用率就高达30%。
而"Boot 1.4及更早版本"从一年前的30%暴跌至6.8%,说明Boot社区的升级速度远超整个生态。
最后,去年约30.2%的Spring应用仅使用核心框架而未用Boot,如今这一比例降至16.7%。简单说:现在大部分Spring应用都在用Boot

4. 构建工具采用情况

Maven地位稳固。去年它还占据75.7%的市场份额,今年依然以74.2%的占比领跑:
构建工具采用情况

Gradle则蚕食了部分市场(主要来自Ant),如今市场份额接近五分之一——21.3%。

5. IDE采用情况

IDE数据总是很有意思,今年也不例外:
IDE采用情况

IntelliJ从2017年的45.8%飙升至55.4%,显然今年赢得了Java领域IDE之战。
NetBeans跌至5.1%(去年12.4%),让一些忠实拥趸扼腕叹息。
Eclipse似乎止住了下滑趋势,今年仅下降2个百分点,目前占38%市场份额。
有趣的是,IntelliJ增长的市场份额主要来自NetBeans而非Eclipse。

6. Web/Application服务器采用情况

当前服务器生态格局:
服务器采用情况

这是调查中的新问题,没有2017年数据可对比,但结论清晰且毫不意外:
Tomcat统治市场——62.5%的采用率超过其他所有服务器的总和。
其他服务器各占约5%,分布相对均匀。

7. 其他JVM语言

来看最后一组数据——哪些JVM语言正在被使用?
首先,62.8%的项目是纯Java的单语言项目。

多语言项目生态:
JVM语言生态

仅关注使用其他语言的前沿项目:
前沿项目JVM语言

核心结论当然是Kotlin——它经历了爆发式增长,从2017年的11.4%跃升至28.8%。
Scala的数据也值得关注:从28.4%下降到21.6%。

8. 总结

2018年Java生态的这次盘点确实很有意思,既验证了已知趋势,也揭示了新动向。
Spring Boot已成为大部分Spring项目的标配——这虽不令人意外,但考虑到项目历史较短,仍是巨大成就。
IDE方面,IntelliJ仍在快速增长。而与之高度相关的是,Kotlin或许是今年最大赢家,彻底改变了JVM语言格局。
整体来看,这是对Java社区一次很酷的审视,感谢所有参与者!


原始标题:The State of Java in 2018