java常用的组件和框架总结

Java知识体系最强总结(2021版)

Spring框架

优点
◆JAVA EE应该更加容易使用。
◆面向对象的设计比任何实现技术(比如JAVA EE)都重要。
◆面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零。(面向接口编程有哪些复杂度?)
◆代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单。
◆JavaBean提供了应用程序配置的最好方法。
◆在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

简介
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

常用框架组合

1.SSH(Spring+Struts+Hibernate)
2.SSM(Spring +SpringMVC +Mybatis)+Gradle
3.Spring boot +Spring cloud +Maven

各框架特点和对比

在SpringBoot出现之前,我们常说的三大框架是 Spring、SpringMVC、Mybatis(SSM),而在SpringBoot出现之后,SpringBoot慢慢开始占据了主流地位,另外在SSM之前还有一个业内流行的SSH框架。

一、什么是SSH?
Struts、Spring和Hibernate ,简称SSH。在10多年前,SSH绝对是业内最流行的企业级开发框架。SSH框架是以Struts框架进行MVC分离、控制业务跳转,同时使用Hibernate进行持久化,最后配合Spring的统一管理进行实现的开发框架。相对于传统的J2EE开发框架来讲性能相对较高、资源消耗相对较少。具体优势如下:框架进行了代码分层,将Java代码和HTML代码进行分层,大大降低了开发人员的技术难度,不需要同时精通Java后端知识和Web前端知识。由于使用了Struts框架进行了MVC分离,降低了各层代码间的耦合度。与Spring的AOP机制相互独立,互不影响。使用SSH框架开发项目,能够大大提高项目的开发效率与开发质量。良好的扩展性和维护性。

二、什么是SSM?
SSM框架是Spring+SpringMVC+MyBatis三个框架整合而成的,其实SpringMVC属于Spring框架,所以SSM框架其实就是Spring和Mybatis两个框架的整合运用。那SSM框架的优势又有哪一些呢?对于MVC模式的实现,SpringMvc更加的轻量。由于SpringMvc本身属于Spring,因此与Spring的配合使用契合度更高。Mybatis相对Hibernate更加轻量,同时将Sql和业务代码进行了很好的解耦。MyBatis的学习门槛更低,相对于传统的JDBC差距不大,更好入门及掌握。

三、SSH框架和SSM框架的区别
两个框架的主要区别在于两点。第一,MVC分离的实现方式中前者为Struts,后者为SpringMVC;第二,持久层的框架前者为Hibernate,后者为MyBatis,所以这两个框架几乎所有的不同都是由这两点产生的。

四、Struts对比SpringMVC
由于SpringMVC针对方法进行设计,而Struts针对类进行设计,相对来讲SpringMVC的速度相对更快。SpringMVC配置更加简单,可以说完全0配置,开发效率更高。SpringMVC的学习门槛更低,使用更简单。SpringMVC扩展性更强,更灵活。

五、Hibernate对比MyBatis
MyBatis更加轻量,学习门槛更低,但相对功能全面性来讲Hibernate更好。如果你的项目中仅仅使用简单的增删改查功能,选用Hibernate会让你节省不少的开发时间。反之如果需要使用到较多的sql复杂语句,则选用MyBatis更加灵活。MyBatis默认的SQL查询性能更高,而Hibernate会进行所有字段查询,性能就相对较低了。Hibernate有自己的日志统计功能,而MyBatis需要使用Log4j实现。MyBatis缓存特性相对Hibernate更高。

52 类 110 个常用的组件和框架!!!以下排序是按照从技术组件到开发框架到代码工具:

WEB 容器

Tomcat
https://tomcat.apache.org/
Jetty
https://www.jetty.com/
JBoss
https://www.jboss.org/
Resin
https://caucho.com/products/resin

数据库

H2
https://h2database.com/
SQLite
https://www.sqlite.org/
MySQL
https://www.mysql.com/
Oracle
https://www.oracle.com/index.html
SQL Server
https://www.microsoft.com/en-us/sql-server/sql-server-downloads
PostgreSQL
https://www.postgresql.org/
MariaDB
https://mariadb.org/

缓存

Redis
https://redis.io/
Memcached
ttps://memcached.org/

消息队列

Kafka
https://kafka.apache.org/
RocketMQ
https://rocketmq.apache.org/
Pulsar
https://pulsar.apache.org/
RabbitMQ
https://www.rabbitmq.com/

负载均衡

LVS
http://www.linuxvirtualserver.org/
NGINX
https://www.nginx.com/

分布式存储

Ceph
https://docs.ceph.com/
HDFS
https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

数据库集群

MHA
https://github.com/yoshinorim/mha4mysql-manager

分布式协调

ZooKeeper
https://zookeeper.apache.org/

大数据相关

Storm
https://storm.apache.org/
Flink
https://flink.apache.org/
Spark
https://spark.apache.org/
HBase
https://hbase.apache.org/
ClickHouse
https://clickhouse.com/
Doris
https://doris.apache.org/

日志收集与分析

Filebeat
https://www.elastic.co/beats/filebeat
Logstash
https://www.elastic.co/logstash/
Kibana
https://www.elastic.co/kibana

搜索

Elasticsearch
https://www.elastic.co/

系统监控

SkyWalking
https://skywalking.apache.org/
zipkin
https://zipkin.io/

分库分表

ShardingSphere
https://shardingsphere.apache.org/
Mycat2
http://mycatone.top/

微服务

Spring Cloud
https://spring.io/projects/spring-cloud

RPC 框架

Dubbo
https://github.com/apache/dubbo
gRPC
https://github.com/grpc/grpc-java

网络框架

Netty
https://netty.io/

MVC 框架

Spring Framework
https://spring.io/projects/spring-framework
Spring Boot
https://spring.io/projects/spring-boot

数据层框架

MyBatis
https://github.com/mybatis/mybatis-3
MyBatis-Plus
https://github.com/baomidou/mybatis-plus
Hibernate
http://hibernate.org/orm/

数据库连接池

HikariCP
https://github.com/brettwooldridge/HikariCP
Druid
https://github.com/alibaba/druid

Redis 客户端

Jedis
https://github.com/xetorthio/jedis
Redisson
https://github.com/redisson/redisson

Rest 接口设计与开发

Swagger
https://swagger.io/

数据参数校验

Hibernate Validator
https://hibernate.org/validator/

安全相关

Shiro
https://shiro.apache.org/
Bouncy Castle
https://www.bouncycastle.org/java.html
jjwt
https://github.com/jwtk/jjwt

Reactive 编程

Akka
https://akka.io/
RxJava
https://github.com/ReactiveX/RxJava
vert.x
https://vertx.io/

单元测试

JUnit
https://junit.org/junit5/

测试辅助

JMockit
http://jmockit.github.io/
Mockito
https://github.com/mockito/mockito
JMeter
http://jmeter.apache.org/
Selenium
https://www.selenium.dev/

日志记录

Log4j2
https://logging.apache.org/log4j/
Logback
http://logback.qos.ch/
SLF4J
http://www.slf4j.org/

代码质量检查

Checkstyle
https://github.com/checkstyle/checkstyle
Spotbugs
https://github.com/spotbugs/spotbugs

代码生成

Lombok
https://projectlombok.org/

领域语言定制

ANTLR
https://www.antlr.org/

配置文件解析

config
https://github.com/lightbend/config

序列化格式

Avro
https://avro.apache.org/
Thrift
https://thrift.apache.org/
Protobuf
https://github.com/protocolbuffers/protobuf

模板引擎

Freemarker
https://freemarker.apache.org/
Thymeleaf
https://www.thymeleaf.org/

Office 文档处理

POI
https://poi.apache.org/

PDF 处理

iText
https://itextpdf.com/en
Apache PDFBox
https://pdfbox.apache.org/

高性能队列

Disruptor
https://lmax-exchange.github.io/disruptor/

HTTP 客户端

Async Http Client
https://github.com/AsyncHttpClient/async-http-client
Feign
https://github.com/OpenFeign/feign
Retrofit
https://square.github.io/retrofit/

二维码解析

ZXing
https://github.com/zxing/zxing

定时任务调度

Quartz
https://github.com/quartz-scheduler/quartz

JSON 解析

Gson
https://github.com/google/gson
Jackson
https://github.com/FasterXML/jackson
fastjson
https://github.com/alibaba/fastjson

分布式事务

Seata
https://github.com/seata/seata

属性映射

MapStruct
https://github.com/mapstruct/mapstruct

本地缓存

Ehcache
http://www.ehcache.org/
Caffeine
https://github.com/ben-manes/caffeine

系统排错与调优

JMH
http://openjdk.java.net/projects/code-tools/jmh/
Arthas
https://github.com/alibaba/arthas

命令行参数解析

JCommander
http://jcommander.org/

计算机视觉

JavaCV
https://github.com/bytedeco/javacv

工具集合

Guava
https://github.com/google/guava
Hutool
https://hutool.cn/

构建工具

Maven
https://maven.apache.org/
Gradle
https://gradle.org/
Bazel
https://bazel.build/

本地系统开发

JNA
https://github.com/java-native-access/jna

JVM

Adopt Open JDK
https://adoptopenjdk.net/
Graal
https://github.com/oracle/graal
Open JDK
https://openjdk.java.net/

多版本 Java 支持

jenv
https://github.com/jenv/jenv

爬虫相关

Nutch
https://nutch.apache.org/
Crawler4j
https://github.com/yasserg/crawler4j
jsoup
https://jsoup.org/
webmagic
https://github.com/code4craft/w

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值