admin管理员组文章数量:1794759
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 tomcat.apache/ Jetty www.jetty/ JBoss www.jboss/ Resin caucho/products/resin
数据库H2 h2database/ SQLite www.sqlite/ MySQL www.mysql/ Oracle www.oracle/index.html SQL Server www.microsoft/en-us/sql-server/sql-server-downloads PostgreSQL www.postgresql/ MariaDB mariadb/
缓存Redis redis.io/ Memcached ttps://memcached/
消队列Kafka kafka.apache/ RocketMQ rocketmq.apache/ Pulsar pulsar.apache/ RabbitMQ www.rabbitmq/
负载均衡LVS www.linuxvirtualserver/ NGINX www.nginx/
分布式存储Ceph docs.ceph/ HDFS hadoop.apache/docs/r1.2.1/hdfs_design.html
数据库集群MHA github/yoshinorim/mha4mysql-manager
分布式协调ZooKeeper zookeeper.apache/
大数据相关Storm storm.apache/ Flink flink.apache/ Spark spark.apache/ HBase hbase.apache/ ClickHouse clickhouse/ Doris doris.apache/
日志收集与分析Filebeat www.elastic.co/beats/filebeat Logstash www.elastic.co/logstash/ Kibana www.elastic.co/kibana
搜索Elasticsearch www.elastic.co/
系统监控SkyWalking skywalking.apache/ zipkin zipkin.io/
分库分表ShardingSphere shardingsphere.apache/ Mycat2 mycatone.top/
微服务Spring Cloud spring.io/projects/spring-cloud
RPC 框架Dubbo github/apache/dubbo gRPC github/grpc/grpc-java
网络框架Netty netty.io/
MVC 框架Spring Framework spring.io/projects/spring-framework Spring Boot spring.io/projects/spring-boot
数据层框架MyBatis github/mybatis/mybatis-3 MyBatis-Plus github/baomidou/mybatis-plus Hibernate hibernate/orm/
数据库连接池HikariCP github/brettwooldridge/HikariCP Druid github/alibaba/druid
Redis 客户端Jedis github/xetorthio/jedis Redisson github/redisson/redisson
Rest 接口设计与开发Swagger swagger.io/
数据参数校验Hibernate Validator hibernate/validator/
安全相关Shiro shiro.apache/ Bouncy Castle www.bouncycastle/java.html jjwt github/jwtk/jjwt
Reactive 编程Akka akka.io/ RxJava github/ReactiveX/RxJava vert.x vertx.io/
单元测试JUnit junit/junit5/
测试辅助JMockit jmockit.github.io/ Mockito github/mockito/mockito JMeter jmeter.apache/ Selenium www.selenium.dev/
日志记录Log4j2 logging.apache/log4j/ Logback logback.qos.ch/ SLF4J www.slf4j/
代码质量检查Checkstyle github/checkstyle/checkstyle Spotbugs github/spotbugs/spotbugs
代码生成Lombok projectlombok/
领域语言定制ANTLR www.antlr/
配置文件解析config github/lightbend/config
序列化格式Avro avro.apache/ Thrift thrift.apache/ Protobuf github/protocolbuffers/protobuf
模板引擎Freemarker freemarker.apache/ Thymeleaf www.thymeleaf/
Office 文档处理POI poi.apache/
PDF 处理iText itextpdf/en Apache PDFBox pdfbox.apache/
高性能队列Disruptor lmax-exchange.github.io/disruptor/
HTTP 客户端Async Http Client github/AsyncHttpClient/async-http-client Feign github/OpenFeign/feign Retrofit square.github.io/retrofit/
二维码解析ZXing github/zxing/zxing
定时任务调度Quartz github/quartz-scheduler/quartz
JSON 解析Gson github/google/gson Jackson github/FasterXML/jackson fastjson github/alibaba/fastjson
分布式事务Seata github/seata/seata
属性映射MapStruct github/mapstruct/mapstruct
本地缓存Ehcache www.ehcache/ Caffeine github/ben-manes/caffeine
系统排错与调优JMH openjdk.java/projects/code-tools/jmh/ Arthas github/alibaba/arthas
命令行参数解析JCommander jcommander/
计算机视觉JavaCV github/bytedeco/javacv
工具集合Guava github/google/guava Hutool hutool/
构建工具Maven maven.apache/ Gradle gradle/ Bazel bazel.build/
本地系统开发JNA github/java-native-access/jna
JVMAdopt Open JDK adoptopenjdk/ Graal github/oracle/graal Open JDK openjdk.java/
多版本 Java 支持jenv github/jenv/jenv
爬虫相关Nutch nutch.apache/ Crawler4j github/yasserg/crawler4j jsoup jsoup/ webmagic github/code4craft/w
版权声明:本文标题:java常用的组件和框架总结 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686781364a102060.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论