Java后端开发技术选型

简介

本文介绍Java后端开发的技术选型。持续更新。

本文中的每一项都按照从上到下为从好到差的顺序排列技术栈,并给它们打分(满分100分)。我推荐使用最高分的那个,也就是第一个。

持久层框架

说明

这几个框架我都用过。按开发速度来看,一个模块,如果MyBatis-Plus开发需要1天,则JPA需要2.5天,MyBatis需要4天。

新项目基本都是用MyBatis-Plus了。

评分

  1. MyBatis-Plus(95)
    1. 好处:开发速度快、兼容MyBatis
    2. 缺点:个别场景的多表联查不如JPA。(但可以使用MyBatis)
  2. JPA(60)
    1. 好处:个别场景的多表联查比较好用。
    2. 缺点:正常场景下,开发速度不如MyBatis-Plus。
  3. MyBatis(40)
    1. 优点:可以被MyBatis-Plus依赖,与MyBatis-Plus共同使用。
    2. 缺点:开发速度慢

分布式框架

说明

现在新项目一般都用Spring Cloud Alibaba了。feign+nacos+sentinel,很舒服!

评分

  1. Spring Cloud Alibaba(95)
    1. 优点:feign调用基于http,灵活;nacos和sentinel很好用
  2. Spring Cloud原生(80)
    1. 优点:feign调用基于http,灵活
    2. 缺点:eureka已闭源,配置中心使用不方便
  3. Dubbo(50)
    1. 优点:基于长连接,比SpringCloud速度稍快一点儿
    2. 缺点:不够灵活,且相关的组件很少

分布式锁

  1. Redisson(95分)
    1. 续期、可重入等接近完美
  2. Zookeeper(70分)
    1. 用的比较少
  3. MySQL(30分)
    1. 效率很低

分布式定时任务

  1. XXL-JOB(90分)
    1. 很流行;很好用
  2. PowerJob(80分)
    1. 流行度低;使用体验略差
  3. Quartz(50分)
    1. 难用;
  4. Spring自带(30分)
    1. 无可视化页面

分布式事务

  1. Seata(95分)
    1. 阿里开发,很流行

MQ

  1. RocketMQ(95)
    1. 支持延迟消息
    2. 吞吐量也够大
  2. RabbitMQ(85)
    1. 支持延迟消息
    2. 吞吐量略小(但对于一般项目足够了)
  3. Kafka(75)
    1. 不支持延迟消息
    2. 吞吐量大,适用于数据量很大的场景,比如:日志收集

Redis客户端

  1. Ridisson(98)
  2. RedisTemplate(80)
  3. Jedis(60)

ElasticSearch客户端

  1. Spring Data ElasticSearch(95)
  2. bboss-elasticsearch(75)
  3. elasticsearch-sql(60)

链路追踪

  1. SkyWalking(90)
  2. Zipkin(80)
  3. Cat(60)

接口文档工具

  1. knife4j(90)
  2. swagger(75)
  3. apidoc(60)

工具类

工具类优先使用Spring自带的(稳定、基本没bug)。Spring自带的工具基本都够用,非必要不要用其他乱七八糟的工具类(不稳定、bug多)。

JSON工具

  1. Jackson(99)
    1. Spring自带,效率和稳定性都很好
  2. FastJson(60)
    1. bug多,经常爆出问题
  3. gson(50)
    1. 不流行

HTTP客户端

  1. RestTemplate(95)
    1. 优点:Spring自带,稳定性好。
    2. 缺点:只能用于Spring的Web项目(gateway也可以),不能用于其他项目。
  2. Okhttp(85)
    1. 优点:稳定,性能好
    2. 缺点:易用性略低于RestTemplate;代码是Kotlin写的,不是Java。
  3. HttpClient(80)
    1. 有点:稳定,性能好
    2. 缺点:易用性较差。
  4. HttpRequest(70)
    1. 优点:hutool的,灵活性不错
    2. 缺点:hutool的东西,bug多;底层基于HttpUrlConnection,性能差。

String工具

  1. Spring自带的StringUtils(95)
    1. Spring自带,稳定性好
  2. Apache的StringUtil(90)
    1. 稳定,但版本略复杂。
  3. Hutool的(70)
    1. 不推荐!

  • 13
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值