写点什么

2022 年,作为一名 Java 后端开发程序员,必须掌握哪些框架

作者:Geek_dd2241
  • 2022 年 7 月 07 日
  • 本文字数:3240 字

    阅读完需:约 11 分钟

2022年,作为一名Java后端开发程序员,必须掌握哪些框架

前言

做了很多年的 Java 开发,和大家介绍一下我最近一两年用的比较多比较适合大学生学习的 Java 框架(包括软件、中间件)。

  • Spring:从刚开始工作的时候就在用;是一个 J2EE 框架,提供了对 IOC 的良好支持,也提供了对 AOP 技术非常好的封装;

  • Spring MVC:也是 Spring 的一个子项目,实现了 MVC 设计模式,目标是解耦;

  • MyBatis、Hibernate:两个都是 ORM 框架,现在 Hibernate 用的少了;也有用到 Spring Data JPA,这个可以看做是更高级的封装,可以通过方法的命名,实现 SQL 语句;

具体用什么框架跟项目规模和大小有很大的关系,下面从单体应用架构和微服务架构两个方面讲一下。

一、单体应用架构

单体应用架构比较简单,普遍用到就是五大框架,包括 mvc 层、持久层等。由于这五大框架是 web 开发框架学习的基础,相对于微服务框架比较简单,在此简单介绍一下。

1.Spring:ioc 容器和 bean 管理,解决的是业务逻辑层和其他各层的松耦合问题,也起到纽带和桥梁的作用。

2.Springmvc:目前使用最普遍和最流行的 mvc 框架。

3.Struts2:也是一款类似于 Springmvc 功能的 mvc 框架,它的前身 struts1 基本没人使用了。struts2 相较于 springmvc 有诸多劣势,包括自身漏洞门问题,慢慢走向没落。现在使用的大部分都是维护的老项目老系统。

4.hibernate:重量级的面向对象的持久层框架,其实它的功能非常强大,由于其自身功能的强大在使用和配置上比较复杂,很多程序员待之以鄙夷。hibernate 用于中小系统项目还是很合适的,开发效率较高。

5.mybatis:是一款中低量级别的半自动的持久层框架,由于自身使用的灵活性和易于 aql 调优,目前还是非常流行的,很多大型项目都用到它。

可以看到,上面就是 SSM 框架,现在还是比较流行的,这里小编也对应整理了一份 Spring 全家桶 1187 页的学习笔记,分享给到大家。



  • Maven:新老项目都是基于 Maven 构建,它是一个项目管理工具,主要功能有:项目构建;Jar 包的依赖管理;版本管理;持续集成等等等等;

  • JUint:单元测试工具;也是老朋友了;测试框架还有不少,比如 Spring Test,JMock 等等。

  • Shiro、Spring Security:关于安全认证的框架,用于用户身份认证,权限授权、加密、会话管理等;

  • Cxf or Axis:老项目 WebService 用的比较多一些;历史问题,还是要了解一下;

  • Quartz:定时服务框架,一般都是单机应用;

  • Elastic-job:分布式定时服务框架,当当出品;

  • log4j、logback:各种日志工具;现在会有一些日志采集分析的框架,比如 ELK;

  • Ehcache:缓存框架,也都是用于单机项目;

  • Redis:说道缓存,现在更多地使用 Memcached、Redis;当然 Redis 也不局限于缓存;



  • Spring Boot:用于搞定其他框架的一个框架,主要是提供了各种启动器、简化了各种配置、方便和其他框架集成、开发者能够快速上手。

  • Dubbo:一个微服务框架,阿里出品;

  • Spring Cloud:另外一套微服务框架,这个就多了,例如:Config(配置管理中心)、Netflix Eureka(服务注册、服务发现)、Hystrix(断路器,这个官方好像已经不建议使用了,又有新的了)、Feign(声明式服务调用组件)、Ribbon(客户端负载均衡)、Zuul(网关)、Bus(消息总线)等等。

二、微服务架构

微服务架构相对于单体应用架构复杂些,尤其是微服务架构用到分布式应用架构就更为复杂。

1.springboot:

微服务基础框架,由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

特点 :

1. 创建独立的 Spring 应用程序

2. 嵌入的 Tomcat,无需部署 WAR 文件

3. 简化 Maven 配置

4. 自动配置 Spring

5. 提供生产就绪型功能,如指标,健康检查和外部配置

6. 绝对没有代码生成和对 XML 没有要求配置。一句话总结:使用 springboot 可以高效快速开发 web 应用,而且可以不使用单体应用开发框架中那些繁杂的 xml 配置。

2.Dubbo:

Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。简单地说,dubbo 就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有 dubbo 这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别 Web Service 模式中的 WSdl,以服务者与消费者的方式在 dubbo 上注册)

其核心部分包含:

1. 远程通讯: 提供对多种基于长连接的 NIO 框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。

2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3. 自动发现: 基于注册中心目录服务,使服务消费方能动态地查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

3.SpringCloud:用官方文档的说明:

Spring Cloud 为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。

分布式系统的协调导致了锅炉板模式,并且使用 Spring Cloud 开发人员可以快速地站起来实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如 Cloud Foundry。

自己项目中用的比较多的技术,不仅仅是框架,有下列这些:

1,spring:低侵入式对象管理容器,提供大量注解,方便开发,声明式事务,集成别的框架变得简单!

2,springboot:微服务框架,大量现成库的集合,提供样板化的配置和开发,简化初始构建和开发!



3,springcloud:企业级的微服务框架,集成了大量微服务所需要的并能直接使用的库,比如服务注册与发现,jvm 运行参数获取,安全认证,断流器等等!

4,mybatis:持久层框架,轻量级,使 sql 和代码得到解耦,支持动态 sql,所以能支持强大复杂的 sql 语句,查询结果可与 JAVA 对象自动映射!

5,druid:连接池,可对 sql 执行次数,效率等进行监控,可对 web 请求数等进行监控,提供可视化页面!

6,redis:key-value 内存型缓存,可支持多种数据结构的存取,单线程保证线程安全,可用于业务数据加锁,计数,生成全局唯一 key,设计秒杀系统等等!



7,docker:微服务持续集成部署的容器首选,占用资源少,可构建一套独立的环境镜像,避免各种环境复杂性的影响!windows 可下载 boot2docker 体验,非常好用!

8,mycat:分库分表框架,有多种分库分表策略以供选择,简单配置即可获得优秀的数据库超量数据读写!

9,mysql:开源关系型数据库,性能强大!

10,mongodb:非关系型数据库,热数据存储在内存中,读取非常快速,文档式存储(大对象尤为方便),支持自动分片!

11,AOP:面向切面编程,可将非业务的公共部分抽出,比如日志,安全验证等等!

12,logback:日志工具,简单配置即可获取全面的日志打印,和日志文件管理!



13,jenkins:持续集成部署工具,通过简单配置,可实现自动部署!

14,ons,rabbitMq 等消息组件:异步处理,最终一致性解决方案!

15,nginx:负载均衡的不二之选,极为稳定,性能极好,配置简单,有多种均衡方式可供选择,可轻松实现前端跨域访问!

16,SVN/git:版本控制工具,是团队并行开发的保障!

17,putty/secureCRT:远程连接工具,方便对远程执行命令,查看日志等!

18,javamelody:集成在代码中,可以网页上查看实时内存,CPU 使用率等等性能监控指标!jmap:性能分析工具!

Dubbo or Spring Cloud:这个看公司的技术栈,用到哪个学哪个,都没有用到,建议学 Spring Cloud。



  • Restful API、RPC:不同风格的服务;

  • Swagger:Restful API 自动生成工具;

  • 消息队列:常用 RabbitMQ 和 Kafka,一种保存消息的容器,也用于系统间解耦;

  • MongoDB:BSON(类似 JSON)格式的内存数据库;

  • Zookeeper:一个分布式协调服务;

  • Nginx:或其他负载均衡软件;

  • Docker:容器技术。



以上就是我在工作中,最常用的 JAVA 开发相关的框架,技术,工具等!

希望这些框架可以对大家有帮助,喜欢的小伙伴可以帮忙转发+关注,感谢大家!

用户头像

Geek_dd2241

关注

还未添加个人签名 2021.12.12 加入

还未添加个人简介

评论

发布
暂无评论
2022年,作为一名Java后端开发程序员,必须掌握哪些框架_java程序员_Geek_dd2241_InfoQ写作社区