前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“404x5”年Java技术报告

“404x5”年Java技术报告

作者头像
xjjdog
发布2020-02-19 15:05:59
4870
发布2020-02-19 15:05:59
举报
文章被收录于专栏:架构专题架构专题

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

以下数据来源来自于jrebel的在线调查。统计了400多份调查问卷,和真实数据相比会有出入,仅供参考。

使用的Java版本

首先看一下使用的Java版本。可以看到,接近58%的用户在使用Java8版本,这依然是使用最多的版本。使用Java11稳定版的用户,也有23%左右,甚至有6%的用户更加激进的尝试更新版本。

值得注意的是,仍然有接近7%的团队,在使用Java7或以下的版本。这或许是一些正在等待死亡的项目吧。

使用服务容器

Tomcat一枝独秀,超第二名的Jetty接近5倍,这是一个终结者么?

Weblogic和WebSphere也占据了超过10%的市场,不得不说,在追求轻量级应用的今天,有钱的大爷还是很多的。花钱买放心,皆大欢喜。

相比较,JBoss也有不少的市场,和上面这两位一样,它们都可以对企业收费,也就是有较好的商业支持,很多企业还是吃这一套的。

点评:作为占有率这么高的服务容器,Tomcat的源码是非常值得一读的。

主要开发框架

又是一个一统天下的技术。SpringBoot凭借其便捷的使用,以及全面的覆盖,使用率超过82%。它的极速发展,还与近几年微服务的推广有关。其他的容器,应用少的可怜,包括宣传的很不错的Vert.x,使用也才1%。其他的能排上的几个框架,有Dropwizard、Micronaut、Quarkus等。

点评:如果你不是很确定某个框架的发展趋势和技术细节,就不要引入一些乱七八糟的技术,给整个项目组添堵。

开发技术

毋庸置疑,Spring最受欢迎。那个把Java从复杂的开发环境中解救出来的英雄。相对于国内MyBatis的广泛应用,国外有51%的用户使用Hibernate、JPA等工具进行开发。26% 使用JAX-RS 或者JAX-WS技术做接口暴露(比如 Jersey, RESTEasy, CXF, Axis)。在响应式编程方面,有11%的用户使用Vert.x, Akka, RxJava, 或者Project Reactor。令人吃惊的是,仍然有大约7%仍然使用EJB。

点评:技术的更换成本是很大的,上船容易下船难。终有一天Spring会老去,我们该何去何从?

配置方式

得益于SpringBoot的出现,基于注解的配置成为主流。仍然有很多用户在使用xml和yaml等其他配置方式。 18%的用户比较自信的选择了使用Java代码进行配置的初始化。

点评:越简单,越流行。

IDE

绝大多数的人选择了IDEA,像我这样的穷B选择了IDEA的社区版。仍有24%小伙伴顽固的使用Eclipse。 另外,VSCode作为一只新秀,占据了10%。

点评:jetbrains家族的编辑器真香。

JRE/JDK发布版本

使用最多的当属OracleJDK,加上Oracle的OpenJDK,几乎覆盖了整个市场。国内几乎没有Open不Open的概念,所以它们的区别我们可以忽略。Java11之后Oracle JDK成为收费软件,或许会促进转向OpenJDK的过程。

Azul Zulu作为“性能最高”的收费JVM,约占据了2%,就已经活的很好了。

点评:有非常多的监控工具和优化工具,是基于特定版本去做的。Open是大势所趋,但有的是公司“不差钱”。

数据库

Oracle真是家有钱的公司,DB方面份额依然很大。在国外,竟然有47%在使用PostgreSQL,这个数字远超在国内流行的MySQL。

虽然有诸多问题,加上修改许可证,对MongoDB的使用还是达到了12%。其余的NoSQL,比如Cassandra,也有较好的应用。

点评:2020年的世界,仍然是关系型的。

构建工具

Maven和Gradle毫无疑问是最流行的,Gradle的流行可能和移动端开发有非常大的原因。

另外一个就是古老的Ant,占据了7%。

虚拟化工具

微服务伴随着虚拟化,Docker风采依旧。Kubernetes单独使用的场景也比较多,占据了35%。

另外,有14的反馈根本没有使用虚拟化。说实话,这个数字有点小了。

常见的Java问题

在使用Java中,常见的线上问题有。

  • 长时间的服务停顿,看来GC优化仍然任重道远。 深层微服务会加剧这个症状。
  • 内存泄漏。 永无止境的捉虫历程。
  • 高CPU占用。 代码需要优化优化再优化。
  • 连接数太多。
  • I/O占用太多。

END

可以看到,大多数同行的开发,集中在Docker虚拟化基础上,使用SpringBoot框架,IDEA开发,Tomcat容器,PG、MySQL数据库。一边骂着Oracle,一边用着它的JDK。

希望对你有所帮助。

作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小姐姐味道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用的Java版本
  • 使用服务容器
  • 主要开发框架
  • 开发技术
  • 配置方式
  • IDE
  • JRE/JDK发布版本
  • 数据库
  • 构建工具
  • 虚拟化工具
  • 常见的Java问题
  • END
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档