在眾多編程語言當(dāng)中,java是目前軟件開發(fā)中,應(yīng)用比較廣泛的編程語言。但是想要使用java開發(fā)軟件,也是需要一些框架來作為支撐的。那么常用的java框架有哪些?目前仍然有許多Java框架。對工作中經(jīng)常使用的框架的簡要介紹主要分為兩種。一種是框架本身是用Java語言開發(fā)的,另一種是用非Java語言開發(fā)的,但是它也經(jīng)常被使用。
1.Spring
Spring 框架可以說是現(xiàn)在的老大哥,它提供了管理 Bean 對象的容器,省去了我們自己去 new 對象,只要通過簡單的依賴注入就可以引入想使用的對象。這是 Spring 的核心功能之一的 IOC(控制反轉(zhuǎn)),它的作用就是幫我們管理對象,省去了自己創(chuàng)建對象,而是由 Spring 來自動進(jìn)行裝配。
Spring 還提供了另一個核心功能 AOP(面向切面編程的思想),通過動態(tài)代理來實現(xiàn)對一些切面功能的處理來降低耦合,比如統(tǒng)一的異常處理、日志處理、權(quán)限校驗等等。
可以說 Spring 是一個大生態(tài),很多框架都能通過簡單地配置和 Spring 共同使用,大大方便了我們進(jìn)行開發(fā)。
2.Spring MVC
Spring MVC 是一個使用了 MVC 分層模式的 Web 框架,它底層其實就是一個 Servlet,接收并處理請求,然后返回響應(yīng)。
MVC 分層架構(gòu)主要分為
· Model 層是對應(yīng)用程序數(shù)據(jù)的一個封裝;
· View 層負(fù)責(zé)展示應(yīng)用程序返回的數(shù)組;
· Contorller 層負(fù)責(zé)處理用戶請求,并建立對應(yīng)的模型,然后做渲染。
3.MyBatis
MyBatis 是一個對象關(guān)系映射(Object Relational Mapping)框架。它主要關(guān)注對象與數(shù)據(jù)庫之間的映射,框架會屏蔽操作數(shù)據(jù)庫的細(xì)節(jié),然后把數(shù)據(jù)庫返回的數(shù)據(jù)封裝成對象,我們在應(yīng)用中直接操作對象就行了。
但 MyBatis 需要自己手寫 SQL,這既是缺點也是優(yōu)點吧。說它是缺點是因為還需要我們自己寫 SQL,優(yōu)點呢就是我們可以對 SQL 進(jìn)行定制化,比較自由。而且現(xiàn)在有很多插件可以實現(xiàn)對定義好的數(shù)據(jù)庫自定義生成對應(yīng)的 SQL,如果有自定義 SQL 的需求,只要在 XML 文件中修改就好??傊?,它方便了我們對數(shù)據(jù)庫的操作。
上面介紹的 Spring、Spring MVC、MyBatis 就是江湖大名鼎鼎的 SSM 框架。
4.Spring Boot
Spring Boot 是一個快速開發(fā)的框架,能夠通過引入 Maven 依賴快速引入第三方框架,并且它通過引入大量的注解來簡化 XML 的配置。現(xiàn)在很多公司都已經(jīng)在用 Spring Boot 了。
5.Spring Cloud
Spring Cloud 為分布式系統(tǒng)提供完整的微服務(wù)框架,可以簡單看下它提供的組件:
· Eureka:用于服務(wù)的注冊發(fā)現(xiàn);
· Ribbon/Feign:提供負(fù)載均衡;
· Hystrix:防止過載的斷路器;
· Config:配置中心;
· Zuul:網(wǎng)關(guān)。
可見 Spring Cloud 對分布式系統(tǒng)提供了豐富的組件。
6.Dubbo
Dubbo 是一款開源的 RPC 遠(yuǎn)程調(diào)用框架。現(xiàn)在很多公司都在使用微服務(wù)、分布式架構(gòu),也就是由之前的單體應(yīng)用拆分成多個服務(wù),然后服務(wù)之間進(jìn)行調(diào)用。為了使消費端對服務(wù)端的調(diào)用透明化,就有了 RPC 框架,很多公司都在使用 Dubbo 來搭建微服務(wù)。
Dubbo 使用 SPI 機(jī)制實現(xiàn)了插件的可插拔,你可以自由擴(kuò)展它提供的功能。同時它還提供了豐富的協(xié)議支持、豐富的負(fù)載均衡策略。在最新的版本中,Dubbo 對異步調(diào)用也做了很好的支持??傊珼ubbo 是一款優(yōu)秀的 RPC 框架。
7.Netty
Netty 是一個異步驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護(hù)、高性能的服務(wù)器和客戶端。很多 RPC 框架的的通信層都采用的是 Netty,上面介紹的 Dubbo 框架默認(rèn)的 dubbo 協(xié)議就是采用 Netty 作為其通信框架。
Netty 的高性能取決于其 I/O 模型和線程模型。I/O 模型采用了 I/O 多路復(fù)用,雖然也是調(diào)用 select 方法,雖然會阻塞線程,但不會阻塞 I/O ,它會同時檢查多個寫和多個讀,只有在有數(shù)據(jù)就緒時,才會調(diào)用真正的 I/O 操作。
Netty 還解決了粘包/拆包問題,還支持零拷貝等等??傊?,Netty 是一個高性能的網(wǎng)絡(luò)框架。
8.SkyWalking
SkyWalking 是一個 APM(Application Performance Management,應(yīng)用性能管理) 框架,在微服務(wù)盛行的時代,它可以做到服務(wù)調(diào)用鏈路的追蹤,是一個監(jiān)控服務(wù)性能的利器。
SkyWalking 基于 OpenTracing 規(guī)范,Java 探針采用了字節(jié)碼增強(qiáng)技術(shù)實現(xiàn),對業(yè)務(wù)代碼無侵入,而且社區(qū)非?;钴S,支持多語言,是一款很好的 APM 框架。
9.ZooKeeper
ZooKeeper 是一個分布式協(xié)調(diào)框架,提供統(tǒng)一命名服務(wù)、配置管理、數(shù)據(jù)發(fā)布/訂閱、負(fù)載均衡、分布式協(xié)調(diào)/通知、分布式鎖等分布式的基礎(chǔ)服務(wù)。ZooKeeper 采用了 ZAB 協(xié)議來解決分布式數(shù)據(jù)的一致性。在應(yīng)用方面,Dubbo 的服務(wù)注冊中心就是采用的 ZooKeeper,其用途也是非常廣泛。
10.canal
canal 是由阿里開源的一款基于 MySQL 數(shù)據(jù)庫增量日志解析的框架,主要提供增量數(shù)據(jù)訂閱和消費。canal 的工作原理是模擬 MySQL slave 的交互協(xié)議,偽裝自己是 MySQL 的 slave,向 master 發(fā)送 dump 協(xié)議,等 master 收到 dump 協(xié)議后,會把 binlog 日志傳給 canal ,然后 canal 就可以解析 binlog 日志了。該框架一般用于同步 MySQL 的數(shù)據(jù),現(xiàn)在還支持把消息發(fā)送到 Kafka 中,然后由使用方訂閱 topic 進(jìn)行消費。
11.Vert.x
Vert.x 是一款異步框架,基于 Netty 實現(xiàn),通過事件循環(huán)(Event Loop)來調(diào)用存儲在異步任務(wù)隊列的任務(wù),能夠極大地提高系統(tǒng)的吞吐量,它還有一個特點是無鎖化。
12.Elasticsearch
Elasticsearch 是一款分布式可擴(kuò)展的實時搜索和分析引擎,底層基于 Lucene 開發(fā)。該框架可以用于分布式實時文件存儲、分布式搜索引擎等。Elaticsearch 的倒排索引被很多廣告公司用到了廣告庫檢索上,同時 Elaticsearch + Logstash + Kibana 可以搭建日志分析系統(tǒng),即 ELK。
以上就是關(guān)于常用的java框架有哪些的全部內(nèi)容,這里總計介紹12個框架,當(dāng)然這里并不是全部的框架內(nèi)容,如果想了解更多關(guān)于java的信息,請繼續(xù)關(guān)注中培偉業(yè)。