Java后端開發(fā)框架
Java web開發(fā)框架了解
web開發(fā)
前端–頁(yè)面的設(shè)計(jì)、路由、展示—靜態(tài)資源(HTML、CSS、JS)–web服務(wù)器(nginx)-- Vue 技術(shù)棧開發(fā)
后端–對(duì)外提供(類)RESTful風(fēng)格的API—數(shù)據(jù)庫(kù)交互-- web應(yīng)用服務(wù)器(tomcat)-- Spring 技術(shù)棧開發(fā)
交互–HTTP協(xié)議通信-- JSON格式–RESTful 風(fēng)格
java web開發(fā)框架的變遷
SSH ——Struts、Spring、Hibernate
Spring +SpringMVC + Hibernate/ibatis
SSM —— Spring+SpringMVC+Mybatis—— 主流
Springboot+Mybatis——興起
微服務(wù)框架——springboot+dubbo、springcloud—— 前沿
后端服務(wù)器的主要功能
接收外界的API請(qǐng)求,解析后去執(zhí)行數(shù)據(jù)庫(kù)操作,最后將數(shù)據(jù)包裝好返回給調(diào)用者(當(dāng)然,中間還包含其他業(yè)務(wù)邏輯)
和數(shù)據(jù)操作有關(guān)的
這類框架一般負(fù)責(zé)和數(shù)據(jù)庫(kù)進(jìn)行連接,負(fù)責(zé)SQL的處理,以及將查詢到的數(shù)據(jù)映射成指定的java對(duì)象。
mybatis:易學(xué),SQL手動(dòng)編寫,移植性差,支持動(dòng)態(tài)SQL,數(shù)據(jù)量大、高并發(fā)、表關(guān)聯(lián)復(fù)雜度高、要求對(duì)數(shù)據(jù)庫(kù)可控性好可深度調(diào)優(yōu)的項(xiàng)目,半智能效率快些
hibernate:難學(xué),SQL封裝好,移植性好,不支持動(dòng)態(tài)SQL,中小企業(yè)變化不多的項(xiàng)目,全智能效率慢
和API請(qǐng)求響應(yīng)有關(guān)的
這類框架一般負(fù)責(zé)根據(jù)不同的API請(qǐng)求來(lái)調(diào)用程序中不同的處理方法,負(fù)責(zé)將調(diào)用者傳入的數(shù)據(jù)映射成java對(duì)象,也負(fù)責(zé)處理程序返回給客戶端的響應(yīng)數(shù)據(jù)格式等。
struts2: 類級(jí)別的攔截,每次發(fā)一次請(qǐng)求都會(huì)實(shí)例一個(gè)action,每個(gè)action都會(huì)被注入屬性。
springmvc: 方法級(jí)別的攔截,是單例的,一個(gè)方法對(duì)應(yīng)一個(gè)request上下文,而方法同時(shí)又跟一個(gè)url對(duì)應(yīng),性能好開發(fā)效率高零配置。
和業(yè)務(wù)邏輯有關(guān)的
這類框架主要用到了兩個(gè)特性,以此來(lái)簡(jiǎn)化程序的復(fù)雜性:控制反轉(zhuǎn)(IOC)和依賴注入(DI)。在程序中結(jié)合這類框架,寫出來(lái)的程序具有更好的維護(hù)性擴(kuò)展性,也更加清晰簡(jiǎn)潔。
spring: 非侵入性的方式,以一種完全外部化的方式來(lái)對(duì)待對(duì)象依賴關(guān)系。在 Spring 里,你可以使用 XML、SpringJavaConfig 或者 Groovy-Spring DSL 來(lái)連接對(duì)象依賴關(guān)系,也可以使用其它的方案。一站式解決方案,能夠解決絕大部分框架類問(wèn)題。
guice:代碼將和容器緊密耦合在一起。
常用的框架
數(shù)據(jù)層:mybatis
API層:spring mvc
業(yè)務(wù)層:spring
外加重要的:spring boot——進(jìn)一步簡(jiǎn)化基于 spring 框架的項(xiàng)目的構(gòu)建工具
web后端開發(fā)框架
企業(yè)最常用
Spring:是 Java 后端框架家族里面最強(qiáng)大的一個(gè)框架,其擁有 IOC(控制反轉(zhuǎn)) 和 AOP(面向切面) 兩大利器,大大簡(jiǎn)化了軟件開發(fā)復(fù)雜性。并且,Spring 現(xiàn)在能與所有主流開發(fā)框架集成,可謂是一個(gè)萬(wàn)能框架,Spring 讓 JAVA 開發(fā)變得更多簡(jiǎn)單。
SpringMVC:API層,處理|響應(yīng)請(qǐng)求,獲取表單參數(shù),表單校驗(yàn)等。HTTP協(xié)議中的請(qǐng)求/響應(yīng)特性,在該框架中,用戶的每一個(gè)請(qǐng)求都聲明了一個(gè)需要執(zhí)行的動(dòng)作。而這主要是通過(guò)將每個(gè)請(qǐng)求URI映射到一個(gè)可執(zhí)行的方法來(lái)實(shí)現(xiàn)。同時(shí),也將請(qǐng)求參數(shù)映射到對(duì)應(yīng)方法的參數(shù)。
SpringBoot:Spring 組件一站式解決方案,簡(jiǎn)化使用 Spring 框架的難度,簡(jiǎn)省繁重的配置。
SpringCloud:微服務(wù)框架首選,它利用Spring Boot 的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等
Mybatis:一種輕量級(jí)的對(duì)象關(guān)系映射持久層(ORM)框架,數(shù)據(jù)層,數(shù)據(jù)庫(kù)相關(guān),連接、處理、映射。
Swagger-UI:前后端協(xié)作的利器,解析代碼里的注解生成JSON文件,通過(guò)Swagger UI生成網(wǎng)頁(yè)版的接口文檔,可以在上面做簡(jiǎn)單的接口調(diào)試 。
ApachePOI:POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫的功能。
關(guān)系型數(shù)據(jù)庫(kù)
MySQL:中小型數(shù)據(jù)庫(kù)
Oracle:大型數(shù)據(jù)庫(kù),大并發(fā),大訪問(wèn)量
NoSQL
Redis:內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件,配合關(guān)系型數(shù)據(jù)庫(kù)做高速緩存,一個(gè)key-value型的數(shù)據(jù)庫(kù),解決應(yīng)用服務(wù)器的cpu和內(nèi)存壓力、減少io的讀操作、減輕io的壓力,適用于數(shù)據(jù)高并發(fā)的讀寫、海量數(shù)據(jù)的讀寫、對(duì)擴(kuò)展性要求高的數(shù)據(jù)等場(chǎng)景。
MongoDB:更類似 MySQL,支持字段索引、游標(biāo)操作,其優(yōu)勢(shì)在于查詢功能比較強(qiáng)大,擅長(zhǎng)查詢 JSON 數(shù)據(jù),能存儲(chǔ)海量數(shù)據(jù),但是不支持事務(wù)。
消息中間件
解決分布式系統(tǒng)之間消息的傳遞,異步處理(放入消息隊(duì)列,提高吞吐量)、應(yīng)用解耦(寫入-訂閱)、流量削峰(秒數(shù)或者團(tuán)搶活動(dòng)),大型電子商務(wù)類網(wǎng)站消除高并發(fā)訪問(wèn)高峰,加快網(wǎng)站的響應(yīng)速度
ActiveMQ:中小型公司,萬(wàn)級(jí),非常成熟,功能強(qiáng)大,在早些年業(yè)內(nèi)大量的公司以及項(xiàng)目中都有應(yīng)用,主要是基于解耦和異步來(lái)用的,較少在大規(guī)模吞吐的場(chǎng)景中使用。
RabbitMQ:萬(wàn)級(jí),延時(shí)很低,是erlang語(yǔ)言本身帶來(lái)的問(wèn)題。很難讀源碼,很難定制和掌控。
RocketMQ:大型公司,十萬(wàn)級(jí),阿里,接口簡(jiǎn)單易用,可以做到大規(guī)模吞吐,性能也非常好,分布式擴(kuò)展也很方便,社區(qū)維護(hù)還可以,可靠性和可用性都是ok的,還可以支撐大規(guī)模的topic數(shù)量,支持復(fù)雜MQ業(yè)務(wù)場(chǎng)景。
Kafka:十萬(wàn)級(jí),大數(shù)據(jù)領(lǐng)域的實(shí)時(shí)計(jì)算、日志采集,超高的吞吐量,ms級(jí)的延遲,極高的可用性以及可靠性,而且分布式可以任意擴(kuò)展。
SOA(面向服務(wù))相關(guān)
系統(tǒng)集成—有序,系統(tǒng)的服務(wù)化—復(fù)用,業(yè)務(wù)的服務(wù)化—高效
SpringCloud.Dubbo:阿里,分布式、高性能、透明化的 RPC 服務(wù)框架,提供服務(wù)自動(dòng)注冊(cè)、自動(dòng)發(fā)現(xiàn)等高效服務(wù)治理方案。RPC 指的是遠(yuǎn)程調(diào)用協(xié)議,也就是說(shuō)兩個(gè)服務(wù)器交互數(shù)據(jù)。透明化的遠(yuǎn)程方法調(diào)用,像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,配置簡(jiǎn)單,無(wú)API侵入;軟負(fù)載均衡以及容錯(cuò)機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本;服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn),不需要寫死服務(wù)提供方的地址,注冊(cè)中心基于接口名查詢服務(wù)提供著的IP地址,并且可以平滑的添加或者刪除服務(wù)提供者;采用全Spring配置方式,透明化接入應(yīng)用,對(duì)應(yīng)用沒有任何API侵入,只需要Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載。
Zookeeper: 分布式服務(wù)框架,是Apache Hadoop 的一個(gè)子項(xiàng)目,它主要是用來(lái)解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問(wèn)題,如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等。zookeeper=文件系統(tǒng)+監(jiān)聽通知機(jī)制,客戶端注冊(cè)監(jiān)聽它關(guān)心的文件目錄節(jié)點(diǎn),當(dāng)目錄節(jié)點(diǎn)發(fā)生變化(數(shù)據(jù)改變、被刪除、子目錄節(jié)點(diǎn)增加刪除)時(shí),zookeeper會(huì)通知客戶端。
假設(shè)我們的程序是分布式部署在多臺(tái)機(jī)器上,如果我們要改變程序的配置文件,需要逐臺(tái)機(jī)器去修改,非常麻煩,現(xiàn)在把這些配置全部放到zookeeper上去,保存在zookeeper 的某個(gè)目錄節(jié)點(diǎn)中,然后所有相關(guān)應(yīng)用程序?qū)@個(gè)目錄節(jié)點(diǎn)進(jìn)行監(jiān)聽,一旦配置信息發(fā)生變化,每個(gè)應(yīng)用程序就會(huì)收到zookeeper 的通知,然后從zookeeper 獲取新的配置信息應(yīng)用到系統(tǒng)中。
搜索相關(guān)
全文搜索搜索引擎,計(jì)算機(jī)索引程序通過(guò)掃描文章中的每一個(gè)詞,對(duì)每一個(gè)詞建立一個(gè)索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶查詢時(shí),檢索程序就根據(jù)事先建立的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個(gè)過(guò)程類似于通過(guò)字典中的檢索字表查字的過(guò)程。
Elasticsearch: 一個(gè)基于Lucene的搜索服務(wù)器,它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。分布式、多租戶、某些節(jié)點(diǎn)出現(xiàn)故障時(shí)會(huì)自動(dòng)分配其他節(jié)點(diǎn)代替其進(jìn)行工作、接近實(shí)時(shí)的搜索。自身帶有分布式協(xié)調(diào)管理功能、僅支持json文件格式、在處理實(shí)時(shí)搜索應(yīng)用時(shí)效率明顯高于Solr、適用于新興的實(shí)時(shí)搜索應(yīng)用。
Solr: 基于Lucene的全文搜索服務(wù)器。同時(shí)對(duì)其進(jìn)行了擴(kuò)展,提供了比Lucene更為豐富的查詢語(yǔ)言,同時(shí)實(shí)現(xiàn)了可配置、可擴(kuò)展并對(duì)查詢性能進(jìn)行了優(yōu)化,并且提供了一個(gè)完善的功能管理界面。成熟、穩(wěn)定;不考慮建索引的同時(shí)進(jìn)行搜索,速度更快;建立索引時(shí),搜索效率下降,實(shí)時(shí)索引搜索效率不高。用 Zookeeper 進(jìn)行分布式管理、支持更多格式的數(shù)據(jù)、傳統(tǒng)的搜索應(yīng)用中表現(xiàn)好于 Elasticsearch、傳統(tǒng)搜索應(yīng)用的有力解決方案?;ヂ?lián)網(wǎng)巨頭,如Netflix,eBay,Instagram和亞馬遜(CloudSearch)都使用Solr,因?yàn)樗軌蛩饕退阉鞫鄠€(gè)站點(diǎn)。
Lucene:一個(gè)全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎。一個(gè)Java全文搜索引擎,完全用Java編寫。Lucene不是一個(gè)完整的應(yīng)用程序,而是一個(gè)代碼庫(kù)和API,可以很容易地用于向應(yīng)用程序添加搜索功能。
通訊相關(guān)
Netty: 異步高性能的通信框架,往往作為基礎(chǔ)通信組件被 RPC 框架使用。典型的應(yīng)用有:阿里分布式服務(wù)框架 Dubbo 的 RPC 框架使用 Dubbo 協(xié)議進(jìn)行節(jié)點(diǎn)間通信,Dubbo 協(xié)議默認(rèn)使用 Netty 作為基礎(chǔ)通信組件,用于實(shí)現(xiàn)各進(jìn)程節(jié)點(diǎn)之間的內(nèi)部通信。淘寶的消息中間件 RocketMQ 的消息生產(chǎn)者和消息消費(fèi)者之間,也采用 Netty 進(jìn)行高性能、異步通信。大數(shù)據(jù)領(lǐng)域,經(jīng)典的 Hadoop 的高性能通信和序列化組件 Avro 的 RPC 框架,默認(rèn)采用 Netty 進(jìn)行跨節(jié)點(diǎn)通信,它的 Netty Service 基于 Netty 框架二次封裝實(shí)現(xiàn)。
文件存儲(chǔ)
FastDFS: 一個(gè)輕量級(jí)分布式文件系統(tǒng),對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)。
項(xiàng)目構(gòu)建類
Maven:主要功能主要分為5點(diǎn),分別是依賴管理系統(tǒng)、多模塊構(gòu)建、一致的項(xiàng)目結(jié)構(gòu)、一致的構(gòu)建模型和插件機(jī)制。


Gradle:構(gòu)建包括編譯主代碼、處理資源、編譯測(cè)試代碼、執(zhí)行測(cè)試、上傳歸檔等,基于靈活的任務(wù)模型,因此很多事情包括覆蓋現(xiàn)有任務(wù),跳過(guò)任務(wù)都非常易于實(shí)現(xiàn)。
Gradle作為一款基于Groovy語(yǔ)言的構(gòu)建工具,已經(jīng)吸引眾多的ant,maven使用者轉(zhuǎn)投gradle的懷抱,和Gradle相比,ant顯得冗余復(fù)雜,maven顯得有些死板落后,而gradle基于DSL語(yǔ)法,特點(diǎn)明顯:簡(jiǎn)潔、靈活、可讀性強(qiáng)。Gradle和maven有很多相似點(diǎn),gradle充分考慮到maven庫(kù)的價(jià)值,在jar包管理上完全支持mavenRepository,很多屬性乍眼一看就能反應(yīng)過(guò)來(lái)maven中對(duì)應(yīng)的是什么標(biāo)簽,大大降低maven到gradle的遷移難度,并在構(gòu)建方面改善了很多maven的不足,,同時(shí),gradle對(duì)比maven更好的面向ant用戶,使用maven時(shí),雖然能通過(guò)plugin來(lái)跑ant的命令,但是maven在任務(wù)實(shí)現(xiàn)主要靠的是插件以及自身的固定框架,Gradle在定義任務(wù)方面思想與ant非常相似,做了很好的集成。
IDE
IntellijIDEA: 更好的調(diào)試、更高的開發(fā)效率、更智能的重構(gòu)、目錄分層少而清。
Ecplise: 最大化控制臺(tái)、項(xiàng)目結(jié)構(gòu)支持更強(qiáng)大、插件編寫更容易、免費(fèi)。
————————————————
版權(quán)聲明:本文為CSDN博主「lorogy」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lorogy/article/details/100663659