長(zhǎng)沙java軟件開(kāi)發(fā)培訓(xùn),Java是開(kāi)源的,框架很多,這些框架都能解決特定的問(wèn)題,提高開(kāi)發(fā)效率、簡(jiǎn)化我們的代碼復(fù)雜度,現(xiàn)在除了很多大家通用的一些主流框架外,很多公司針對(duì)自己的業(yè)務(wù)會(huì)自定義一些公司內(nèi)部的框架,當(dāng)然作為學(xué)習(xí)者我們首先要清楚Javaweb都有哪些框架需要學(xué)習(xí)。
回答這個(gè)問(wèn)題首先要看我們的項(xiàng)目規(guī)模,對(duì)于"體量"較小的單應(yīng)用項(xiàng)目,和需要處理海量數(shù)據(jù)、高并發(fā)的分布式項(xiàng)目所學(xué)習(xí)使用的框架還是不同的。
對(duì)于"體量"較小的單應(yīng)用項(xiàng)目:
ORM型框架,很多Javaweb程序都需要使用關(guān)系數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)的持久化,所以對(duì)于這種需要進(jìn)行數(shù)據(jù)庫(kù)操作的框架,也就是對(duì)JDBC進(jìn)行封裝的ORM框架是需要學(xué)習(xí)的,目前比較流行的是基于SQL的mybatis框架,這是一個(gè)輕量級(jí)的ORM框架,學(xué)習(xí)使用起來(lái)比較容易上手,同類型的還有Hibernate框架。
MVC型框架,MVC把程序從邏輯上分為視圖層、控制層、模型層,各層各司其職,之間是相互調(diào)用的關(guān)系而不是相互依賴的關(guān)系,這種模式能很好的適應(yīng)需求的變化及軟件的升級(jí)變更。目前應(yīng)用較多的MVC框架是spring MVC框架,這個(gè)框架有清晰的角色劃分,有強(qiáng)大而直接的配置方式,高效的綁定和驗(yàn)證等很多優(yōu)勢(shì)。較早的Struts2框架也是MVC框架。
Spring框架,其實(shí)Java的從業(yè)者很多都繞不開(kāi)Spring ,Spring家族有很多"工具",編程思想從面相過(guò)程到面相對(duì)象是一個(gè)巨大的進(jìn)步,然而隨著程序越來(lái)越復(fù)雜,對(duì)象越來(lái)越多,高效的"管理"及應(yīng)用這些對(duì)象變得越來(lái)越重要,Spring的IoC就是把對(duì)象的創(chuàng)建、"管理"交由Spring容器來(lái)進(jìn)行,來(lái)實(shí)現(xiàn)控制反轉(zhuǎn),同時(shí)提供了各種注入值(DI)的方式,大大提高和簡(jiǎn)化了我們的工作,這就是javaweb需要學(xué)習(xí)的spring的IoC/DI;我們程序的業(yè)務(wù)比較復(fù)雜時(shí),除了要完成核心功能外,還需要完成注入異常處理、日志記錄、事務(wù)處理等常規(guī)功能,這些常規(guī)的操作比較耗費(fèi)精力,springAOP(面向切面編程)就是解決這個(gè)問(wèn)題的。
Javaweb需要學(xué)習(xí)一些前端框架,尤其是問(wèn)題中提到的已經(jīng)寫(xiě)好了數(shù)據(jù)接口,或者是已經(jīng)有了簡(jiǎn)單的后臺(tái),前端框架jQuery是一定要學(xué)習(xí)的,如果項(xiàng)目基于效率考慮,需要前后端分離,可以學(xué)習(xí)vue等框架。
對(duì)于海量數(shù)據(jù)、高并發(fā)類型的分布式項(xiàng)目,這種類型項(xiàng)目的特點(diǎn)就是前面提到的需要處理的數(shù)據(jù)量大,例如雙十一阿里需要處理的訂單數(shù)據(jù),比如12306的搶票等。
提升查詢效率的緩存數(shù)據(jù)庫(kù)框架Redis,這個(gè)框架在單應(yīng)用程序中為了提升數(shù)據(jù)的讀取效率也可以使用,先把數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)通過(guò)Redis存放到緩存中,從緩存中讀取數(shù)據(jù)的速度比直接從硬盤(pán)上讀取就要高多了,另外Redis還能進(jìn)行集群配置主從服務(wù)器等,使用非常方便,同類型的還有memcached框架;
在分布式中,服務(wù)集群中的負(fù)載均衡特別重要,Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)框架,支持多種負(fù)載均衡算法;
消息隊(duì)列框架:RabbitMQ、ActiveMQ、RocketMQ等,在電商系統(tǒng)中,當(dāng)結(jié)算訂單后,需要進(jìn)行積分的變化等操作,這些操作的量很大,如果等積分變化結(jié)束后在通知用戶結(jié)算成功,顯然不可行,那么此時(shí)積分的變更操作交由消息隊(duì)列來(lái)完成。
搜索框架,為了提升搜索的效率,創(chuàng)建搜索索引庫(kù)及中文搜索分詞等,可以使用solr框架,同類型的還有ElasticSearch
用于文件使用的分布式文件系統(tǒng)框架Fastdfs
Spring boot框架,簡(jiǎn)化了spring 的復(fù)雜配置,提供了Thymeleaf模板,很多微服務(wù)都是基于Springboot的;
微服務(wù)框架,把應(yīng)用拆分成若干個(gè)為服務(wù)后,很好的適用了高并發(fā)及海量數(shù)據(jù)的處理,但是微服務(wù)的管理也很重要,目前基于服務(wù)注冊(cè)、服務(wù)監(jiān)控的框架有Dubbo+zookeeper,還有SpringCloud,里面包括SpringCloud Eureka,SpringCloud Ribbon,SpringCloud Feign,SpringCloudHystrix,SpringCloudZuul,SpringCloud Config,SpringCloud ZipKin,SpringCloud Sleuth等;
其它框架,還有很多根據(jù)項(xiàng)目特定要求的一些框架,例如進(jìn)行日志記錄的log4j框架,進(jìn)行認(rèn)證和授權(quán)的shiro框架,工作流處理的Activite框架等。
總結(jié)一下:學(xué)習(xí)框架好的方式就是在實(shí)際項(xiàng)目中去應(yīng)用,這對(duì)框架的原理、應(yīng)用流程都能有很好的學(xué)習(xí)效果,如果單純的做一些簡(jiǎn)單的Demo,框架的很多應(yīng)用場(chǎng)景、優(yōu)化、注意事項(xiàng)等是學(xué)習(xí)不全面的。