德阳吧

您现在的位置是:首页 > 生活百科 > 正文

生活百科

java开发主流框架是什么(java传统开发与框架开发有何区别)

zhiyongz2024-10-06生活百科

网友提问:

现在企业开发时,Java所用到的主流框架有哪些?

优质回答:

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

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:性能分析工具!

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

肯定还有什么是你觉得很重要的?烦请补充,谢谢。。。

其他网友回答

做开发的就应该知道,要想成为一个合格的Java开发者,语言学两年、框架学一年算是真正上道了。

今天我就带大家看一下目前主流的Java框架。首先是Java祖师爷镇楼!老牌ORM框架浅说

ORM框架采用元数据来描述对象、关系映射细节,元数据一般采用XML格式,并且存放在专门的文件中,将对象持久化到数据库中。我们可能会写很多数据访问层代码,不断地从数据库保存、删除、读取对象信息,但是往往这些代码是重复的,ORM则可以大大地减少重复性,但是缺点是多表联查的时候就痛苦了。

常见的ORM框架有以下几种,hibernate、ibatis、mybatis等。

struts2框架

struts2是struts的下一代产品,本质上是相当于servlet,是基于mvc设计模式而设计的,本质上是是在struts的基础上加入了webwork的设计哲学,本质上是两个框架的结合,它是一个更加简洁的mvc实现。

强大的表达式语言,基于mvc模式的强大的可变的、可重用的标签API都是其经典优势。

Spring MVC框架

对于初学者来说,这是一个堪称完美的教科书级别的mvc框架,非常标准,Spring框架提供了构建web应用程序的全功能mvc模块,在使用Spring做开发时,你可以选择SpringMVC框架或者选择加入其他的类似Struts2等MVC框架。可以说是味道非常地道、体验非常纯正的servlet系统。

Springboot正在兴起

PHP出现以后,也是在PHP逐渐变得强大以后,人们越来越发现PHP就是为web而生的,为快速开发而生的,用PHP你可以集中精力在业务开发,复杂的业务逻辑交给其他语言。

正是因为PHP的高效,Java逐渐感受到了压力,于是Springboot就应运而生,Springboot就是为了快速开发而生的。

最后说一说框架整合

Struts2+Spring+hibernate逐渐因为Struts的诸多漏洞慢慢地被Spring+SpringMVC+Hibernate/Mybatis替代,并且可以预见的是随着Springboot逐渐走向舞台中央,Springboot+Mybatis会逐渐成为行业主流。

Java是一门强大的语言,曾经辉煌过,在那个年代因为平台无光、可靠安全、多线程、分布式、近乎完全的面向对象,多年雄踞编程语言榜首,在企业级应用、电子商务领域占据着较大优势。

随着PHP、python、C#的成长,加上Oracle公司的作死,动不动打打官司,Java的江湖地位受到了一定的挑战,而且在这个时代Java的优势已经不太明显,但是缺点却越来越突出,未来Java发展如何还真不好说。

作为一个Java出身的程序员,深感叹息,希望甲骨文不要把Java玩死了!我常说Java很垃圾,但JVM却很强大,未来JVM的空间也许会比Java更值得期待,Kotlin就是很好的例子!当然技术终究是要进步的,新技术终归要替代旧技术,知识时间问题而已。毕竟不是所有编程语言都最终像C/C++一样坚挺。

其他网友回答

一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。

Java是主流开发语言,应用普遍。以Web服务开发为例,基本框架可分为数据层、HTTP开发、异步任务、鉴权认证、日志监控等几大类别,不同的业务场景也会用到其他扩展框架。

注意学习框架时要挑选当前广泛使用的Top3,已经过时或者太新还看不清楚未来的框架,可以在需要时再去学习研究。

虽然框架很多,但是可以专题分类,只要在学习过程中不断总结,针对常用的几个框架重点学习,积累起来非常快。

Web服务开发常用框架分类介绍

1)Spring框架,Spring Boot和Spring Cloud是最常用框架,有非常丰富的组件和易用的功能

2)数据层,MySQL数据库,MyBatis持久层,Flyway版本化管理数据库SQL脚本,Ali Druid连接池等框架。

3)缓存系统,最常使用Redis,MongoDB等其他NoSQL也经常使用。

4)异步消息队列,常用ActiveMQ,RocketMQ,RabbitMQ,建议选择一个学习。

5)JSON数据处理,常用Fastjson,Gson,Jackson,Json-lib,推荐Fastjson

6)开发工具包,Apache Commons套件,lang, collections, codec, io等功能库。

7)网框开发工具包,推荐Apache HttpClient,其他比如OKHttp,Java原生库HttpURLConnection使用也很普遍。

8)鉴权认证,控制访问权限,REST接口安全,常用Apache Shiro, Jwt

9)异步任务调度,复杂耗时任务,使用Quartz框架异步执行,Spring框架自带的Schedule可以满足小型项目使用。

10)单元测试JUnit + Mockit

11)日志系统,集成LogBack,接入LogStash配合ELK分析处理。

12)服务监控,使用Actuator等框架实现运行信息收集和报警,配合图像化展示工具,比如Prometheus + Grafana + AlertManager

13)REST接口开发时,推荐使用Swagger接口文档,Postman接口调试工具

其他网友回答

主流框架还是spring生态的内容!

现在微服务架构已经成为主流,所以spring生态里是springboot和springcloud是首当其冲的!还有Apache的dubbo也是主流。可以学习。

其他关于JAVA的比如mybatis,hibernate,redis,netty,ngnix这些都是比较常用于微服务分布式架构的工具和框架!

其他网友回答

根据笔者的工作经验总结一下,使用Java作为编码语言,经常会用到的框架有两类,一类是框架本身就是用 Java 语言开发的,另一类是非Java 语言开发的,下面分别分享一下。

使用Java 语言开发的常用框架

Spring框架

Spring核心框架自从诞生以来,一直都是最主流的框架之一,它提供了管理 Bean 对象的容器,省去了我们自己去 new 对象,只要通过简单的依赖注入就可以引入想使用的对象。这是 Spring 的核心功能之一的 IOC(控制反转),它的作用就是帮我们管理对象,省去了自己创建对象,而是由 Spring 来自动进行装配。

Spring还提供了另一个核心功能 AOP(面向切面编程的思想),通过动态代理来实现对一些切面功能的处理来降低耦合,比如统一的异常处理、日志处理、权限校验等等。

Spring拥有一个很大的开发生态圈,很多框架都能通过简单地配置和Spring 共同使用,大大方便了我们进行开发。

SpringMVC

SpringMVC是一个使用了 MVC 分层模式的 Web 框架,它底层其实就是一个 Servlet,接收并处理请求,然后返回响应。

MVC 分层架构主要分为:

Model 层是对应用程序数据的一个封装;

View 层负责展示应用程序返回的数组;

Contorller 层负责处理用户请求,并建立对应的模型,然后做渲染。

MyBatis

MyBatis是一个对象关系映射(Object Relational Mapping)框架。它主要关注对象与数据库之间的映射,框架会屏蔽操作数据库的细节,然后把数据库返回的数据封装成对象,我们在应用中直接操作对象就行了。

也因为MyBatis框架的特性:逻辑代码和SQL分离,所以需要自己手写 SQL,这既是缺点也是优点吧。说它是缺点是因为还需要我们自己写 SQL,优点呢就是我们可以对 SQL 进行定制化,比较自由。而且现在有很多插件可以实现对定义好的数据库自定义生成对应的 SQL,如果有自定义 SQL 的需求,只要在 XML 文件中修改就好。总之,它方便了我们对数据库的操作。

上面介绍的 Spring、SpringMVC和Mybatis就是常用的SSM框架集。

SpringBoot

Spring全家桶之一的SpringBoot,是一个快速开发的框架,通过引入项目依赖快速引入第三方框架,并且它通过引入大量的注解来简化XML的配置。它的主要功能就是为了简化开发过程中的成本,快速引入依赖、简化因使用配置带来的复杂度、简洁打包运行,一个字就是快!

SpringCloud

SpringCloud框架为构建分布式系统提供了一套完整的微服务解决方案,它提供了如下组件:

Eureka:用于服务的注册发现;

Ribbon/Feign:提供负载均衡;

Hystrix:防止过载的断路器;

Config:配置中心;

Zuul:网关。

SpringCloud不断在完善及增加这些功能,是一个开发过程中的利器。

Dubbo

Dubbo是阿里巴巴研发的一款开源的 RPC 远程调用框架。现在很多公司都在使用微服务、分布式架构,也就是由之前的单体应用拆分成多个服务,然后服务之间进行调用。为了使消费端对服务端的调用透明化,就有了 RPC 框架,很多公司都在使用 Dubbo 来搭建微服务。

Dubbo 使用 SPI 机制实现了插件的可插拔,你可以自由扩展它提供的功能。同时它还提供了丰富的协议支持、丰富的负载均衡策略。在最新的版本中,Dubbo 对异步调用也做了很好的支持。总之,Dubbo 是一款优秀的 RPC 框架。

Netty

Netty是一个异步驱动的网络应用框架,用于快速开发可维护、高性能的服务器和客户端。很多 RPC 框架的的通信层都采用的是 Netty,上面介绍的 Dubbo 框架默认的 dubbo 协议就是采用 Netty 作为其通信框架。

Netty 的高性能取决于其 I/O 模型和线程模型。I/O 模型采用了 I/O 多路复用,虽然也是调用 select 方法,虽然会阻塞线程,但不会阻塞 I/O ,它会同时检查多个写和多个读,只有在有数据就绪时,才会调用真正的 I/O 操作。

Netty 还解决了粘包/拆包问题,还支持零拷贝等等。

总之,Netty 是一个高性能的网络框架。

SkyWalking

SkyWalking是一个APM(Application Performance Management,应用性能管理) 框架,在微服务盛行的时代,它可以做到服务调用链路的追踪,是一个监控服务性能的利器。

SkyWalking 基于 OpenTracing 规范,Java 探针采用了字节码增强技术实现,对业务代码无侵入,而且社区非常活跃,支持多语言,是一款很好的 APM 框架。

ZooKeeper

ZooKeeper是一个分布式协调框架,提供统一命名服务、配置管理、数据发布/订阅、负载均衡、分布式协调/通知、分布式锁等分布式的基础服务。ZooKeeper 采用了 ZAB 协议来解决分布式数据的一致性。在应用方面,Dubbo 的服务注册中心就是采用的 ZooKeeper,其用途也是非常广泛。

canal

canal也是阿里巴巴研发的一款基于 MySQL 数据库增量日志解析的框架,主要提供增量数据订阅和消费。canal 的工作原理是模拟 MySQL slave 的交互协议,伪装自己是 MySQL 的 slave,向 master 发送 dump 协议,等 master 收到 dump 协议后,会把 binlog 日志传给 canal ,然后 canal 就可以解析 binlog 日志了。该框架一般用于同步 MySQL 的数据,现在还支持把消息发送到 Kafka 中,然后由使用方订阅 topic 进行消费。

Vert.x

Vert.x是一款异步框架,基于 Netty 实现,通过事件循环(Event Loop)来调用存储在异步任务队列的任务,能够极大地提高系统的吞吐量,它还有一个特点是无锁化。

Elasticsearch

Elasticsearch是一款分布式可扩展的实时搜索和分析引擎,底层基于 Lucene 开发。该框架可以用于分布式实时文件存储、分布式搜索引擎等。Elaticsearch 的倒排索引被很多广告公司用到了广告库检索上,同时 Elaticsearch + Logstash + Kibana 可以搭建日志分析系统,即 ELK。

非Java语言开发的框架

Redis

Redis是一款基于C语言开发的 key-value 存储系统,一般用作缓存、分布式锁、消息队列,也支持持久化数据到磁盘上。

Redis 支持多种数据类型,例如字符串、哈希、列表、集合和有序集合、位图、HyperLogLog 等类型。

Redis 支持 RDB 和 AOF 两种持久化方式,也有对键的过期策略。Redis 还支持事务、LUA 脚本等特性。

Redis 通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。

Redis 在工作中常用于实现分布式缓存和分布式锁。

当然,每个公司或团队的技术追求不同,还有其它的常用框架这里没有一一列出,欢迎大家在评论区留言探讨,互相学习。

关注我『Java实战技术』,专注Java基础原理分析、实战技术、微服务技术探索、分布式系统构建!