2024-06-20
開(kāi)發(fā)大型項(xiàng)目必備 98%公司都在用的十佳 Java Web 應(yīng)用框架
第一,大名鼎鼎的Spring MVC框架。Spring MVC 框架堪稱是一個(gè)教科書式的 MVC (模型Model、視圖View和控制器Controller)框架,嚴(yán)格組照 MVC 模式要求進(jìn)行分層設(shè)計(jì)。經(jīng)過(guò)多年的發(fā)展,Spring MVC 已經(jīng)發(fā)展成了一個(gè) Web 應(yīng)用程序的全能架構(gòu)。
易用性方面, Spring MVC 為 Web 應(yīng)用程序的開(kāi)發(fā)和配置提供了有用的工具箱。擴(kuò)展性方面, Spring MVC 也以插件多而出名,大量?jī)?yōu)秀插件可供選擇,如SOAP 服務(wù)、REST API 和安全認(rèn)證。
優(yōu)點(diǎn):
強(qiáng)大的模塊化功能,代碼可讀性高;
可以通過(guò) POJO (Plain Ordinary Java Object,簡(jiǎn)單的Java對(duì)象)對(duì)測(cè)試數(shù)據(jù)進(jìn)行簡(jiǎn)單的注入;
可以靈活使用DI(DependencyInjection,依賴注入,或者叫控制反轉(zhuǎn));
不同模塊間是低耦合的(上面四點(diǎn)優(yōu)點(diǎn)歸根結(jié)底還是耦合度低)。
缺點(diǎn):
對(duì)于新手來(lái)說(shuō),實(shí)現(xiàn)的難度比較大;
學(xué)習(xí)曲線比較陡峭,即入門比較難。
?
第二,JSF。它可以說(shuō)是所有 Java 框架中的與 Java 關(guān)系最近的,因?yàn)樗蚃ava 都是 Oracle 的嫡系部隊(duì)。JSF 也許并算不上最好的 Java 框架,但是由于 Oracle 的加持,JSF 的文檔是最全也最容易找到的。
此外,由于 JSF 已通過(guò) JCP 格式化為 JavaEE 的一部分,所以你只要安裝了 J2EE,就可以無(wú)障礙使用 JSF 了。復(fù)雜的功能也能用JSF 提供的大量工具和庫(kù)來(lái)實(shí)現(xiàn)。借助 JSP(Java Server Pages),JSF 還可以支持不同的 Facelets 和 XUL 技術(shù)。
優(yōu)點(diǎn):
由于 JSF 集成在 JavaEE 中,對(duì)于使用 IDE 的開(kāi)發(fā)人員來(lái)說(shuō)非常方便。
缺點(diǎn):
入門門檻比較高,如果沒(méi)有 Java Web 的開(kāi)發(fā)經(jīng)歷很難完整理解 JSF。
第三,Struts。Struts 是 Apache 軟件基金會(huì)(ASF)贊助的一個(gè)開(kāi)源項(xiàng)目,也是基于 MVC 模式進(jìn)行設(shè)計(jì)的,但是不像 Spring MVC 那么嚴(yán)格遵守 MVC 模式,經(jīng)常被視作一種變種。
Struts是通過(guò)一系列接口和類來(lái)實(shí)現(xiàn)某些特定的功能,為 Java 應(yīng)用提供了網(wǎng)絡(luò)框架。與傳統(tǒng)的互聯(lián)網(wǎng)功能不同,它可以創(chuàng)建動(dòng)態(tài)響應(yīng)。眾人拾柴火焰高,在各個(gè)開(kāi)源社區(qū)的共同努力下,Struts 才有了今天的影響。當(dāng)然,Struts 常常被詬病為“萬(wàn)年漏洞王”,去年國(guó)內(nèi)還因?yàn)樾侣┒呆[的沸沸揚(yáng)揚(yáng),但仍然不能否定其是一個(gè)強(qiáng)大易用的框架。
優(yōu)點(diǎn):
原生支持I-18-N(即國(guó)際化,其來(lái)源是英文單詞 internationalization 的首末字符i和n,18為中間的字符數(shù));
便捷的數(shù)據(jù)有效性驗(yàn)證和身份驗(yàn)證;
支持模塊化開(kāi)發(fā)和集成插件。
缺點(diǎn):
靈活性不足;
安全性有待提高。

第四,Hibernate ORM?也是一個(gè)不能被忽略的優(yōu)秀框架, 屬于使用 GNU 通用公共許可證發(fā)行的自由開(kāi)源軟件。Hibernate 是一套對(duì)象關(guān)系映射解決方案,能夠建立面向?qū)ο竽P团c關(guān)系數(shù)據(jù)模型的映射。Hibernate 對(duì) JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使 Java 開(kāi)發(fā)人員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn):
移植性好,只需要修改極少量的代碼修改實(shí)現(xiàn)與其他數(shù)據(jù)庫(kù)通信;
數(shù)據(jù)庫(kù)不敏感,通吃MySQL, DB2 和 Oracle等主流數(shù)據(jù)庫(kù);
優(yōu)秀的緩存機(jī)制(session緩存,二級(jí)緩存,查詢緩存),對(duì)于那些改動(dòng)不大且經(jīng)常使用的數(shù)據(jù),可以將它們放到緩存中,不必在每次使用時(shí)都去查詢數(shù)據(jù)庫(kù),緩存機(jī)制對(duì)提升性能大有裨益;
延遲加載(只有等系統(tǒng)需要使用集合屬性時(shí)才從數(shù)據(jù)庫(kù)裝載關(guān)聯(lián)的數(shù)據(jù))。
缺點(diǎn):
一旦斷電,所有未存儲(chǔ)就會(huì)丟失;
重啟非常慢。

第五,GWT(Google Web Toolki)?是一個(gè)前端使用 JavaScript,后端使用 Java 的 AJAX 框架,以 Apache 許可證2.0版本開(kāi)放源碼。GWT 通過(guò)編譯器將 Java 代碼編譯成JavaScript,可以讓開(kāi)發(fā)人員只使用 Java 就可以快速開(kāi)發(fā)維護(hù)復(fù)雜但高性能的 JavaScript ,借此減輕開(kāi)發(fā)人員負(fù)擔(dān)。
除了一些本地庫(kù)之外,都可以用集成的 GWT Ant 將 Java 源碼構(gòu)建成 JavaScript。 GWT已經(jīng)實(shí)現(xiàn)了大量代碼跨平臺(tái)復(fù)用,包括跨瀏覽器移植性、國(guó)際化、UI抽象化、書簽、歷史管理、遠(yuǎn)程程序調(diào)用和異步的代碼。
優(yōu)點(diǎn):
入門容易;
特別適合應(yīng)用;在想要通過(guò)增加客戶端負(fù)載從而減少服務(wù)器端負(fù)載,進(jìn)而提升響應(yīng)速度的web應(yīng)用程序;
借助各種各樣的JavaScript庫(kù),開(kāi)發(fā)人員可以充分利用GWT的能力;
內(nèi)置IDE能夠直接重構(gòu)Java密文/代碼;
由Google負(fù)責(zé)開(kāi)發(fā),前景光明。
缺點(diǎn):
GWT是一個(gè)快速迭代的項(xiàng)目,版本太多,可能沒(méi)法知道所有接口和方法;
編譯器執(zhí)行效率比較慢;
定義結(jié)構(gòu)的時(shí)候必須使用專用的方法來(lái)執(zhí)行。

第六,Play?框架是一種基于無(wú)狀態(tài)(stateless)、Web 友好和輕量級(jí)的架構(gòu),支持 Scala 和Java兩種語(yǔ)言。它構(gòu)建在 Akka (一個(gè)用 Scala 編寫的分布式應(yīng)用框架)上并利用了 Akka 頂部設(shè)計(jì)的完全異步模型,為可高度伸縮的應(yīng)用程序分配最小和可預(yù)測(cè)的資源(比如線程數(shù)、內(nèi)存和CPU)。
Play比較友好,開(kāi)發(fā)人員可以通過(guò)文本編輯器和瀏覽器直接進(jìn)行修改。此外,盡管它是無(wú)狀態(tài)的,但它的規(guī)模是可以預(yù)見(jiàn)的??梢哉f(shuō),Play 是為了因應(yīng)現(xiàn)代移動(dòng)和網(wǎng)絡(luò)應(yīng)用的需要而誕生的。
優(yōu)點(diǎn):
極大地提高了開(kāi)發(fā)人員的生產(chǎn)率;
配置、模板和java代碼的更改可以快速完成重載;
Play是在Netty基礎(chǔ)上設(shè)計(jì)的,支持異步I/O;
它是開(kāi)源的;
由Zenexity公司和Lightbend公司提供商業(yè)支持;
Play可以在運(yùn)行時(shí)處理錯(cuò)誤。
缺點(diǎn):
Play 2基本上是對(duì)Play 1的重寫,比Python3.X和Python2.X的差距大多了,想想Python就知道了;
它是圍繞異步I/O構(gòu)建的,你可能會(huì)得到一個(gè)不知名的內(nèi)部類;
無(wú)論是Play框架還是Akka的中文資料少之又少。

第七,Vaadin?是一個(gè) Apache 許可的開(kāi)源 Java web 應(yīng)用程序項(xiàng)目,并擁有一個(gè)活躍的社區(qū)(https://vaadin.com/forum)。用 Vaadin 開(kāi)發(fā)的瀏覽器應(yīng)用界面可以達(dá)到和桌面應(yīng)用類似的效果,但和 Flash 、Silverlight 不同的是,Vaddin 應(yīng)用無(wú)需在瀏覽器上安裝任何插件。它支持純Java開(kāi)發(fā)環(huán)境,開(kāi)發(fā)人員無(wú)需深入了解 HTML,XML 或是JavaScipt。如果你曾經(jīng)使用 Java 開(kāi)發(fā)過(guò) Swing,SWT 等應(yīng)用,可以非常容易開(kāi)始使用 Vaddin 開(kāi)發(fā) Web 應(yīng)用。
優(yōu)點(diǎn):
只需要在服務(wù)器端編程;
支持布局、偵聽(tīng)器和組件類型;
支持各類插件;
可以很方便地和Spring框架集成。
缺點(diǎn):
不支持多窗口;
自動(dòng)創(chuàng)建的JS代碼的不夠精簡(jiǎn)。

第八,Grails基于 Groovy 編程語(yǔ)言,是一個(gè)堅(jiān)持己見(jiàn)、提倡用約定的默認(rèn)設(shè)置代替復(fù)雜配置的框架。它與 JVM 很好地融合,能夠在提供強(qiáng)大功能的同時(shí)保持高效,包括異步編程、編譯時(shí)元編程、運(yùn)行時(shí)和領(lǐng)域?qū)S谜Z(yǔ)言(DSL,專注于某個(gè)應(yīng)用程序領(lǐng)域的計(jì)算機(jī)語(yǔ)言)。Grails可以透明地、無(wú)縫地與 Java、Java EE 容器和 JVM 進(jìn)行互操作和集成。
優(yōu)點(diǎn):
處理中小型項(xiàng)目的理想工具;
提供一個(gè)快速的開(kāi)發(fā)周期;
提供豐富的插件;
文檔簡(jiǎn)單易懂的;
安裝過(guò)程很簡(jiǎn)單,新手也可以在短時(shí)間內(nèi)構(gòu)建應(yīng)用程序;
GORM(Grails ObjectRelational Mapping,Grails對(duì)象關(guān)系映射)的配置簡(jiǎn)單;
管理CSS簡(jiǎn)單;
動(dòng)態(tài)配置特性,無(wú)需重新啟動(dòng)服務(wù)器即可更改配置。
缺點(diǎn):
依賴JVM運(yùn)行環(huán)境;
多線程時(shí)候有時(shí)可能會(huì)有問(wèn)題。

第九,Wicket?又稱 Apache Wicket,一看這個(gè)名字,又是一個(gè) Apache 基金會(huì)旗下的開(kāi)源框架了。Wicket 是一個(gè)基于組件的輕量級(jí)的 Java 應(yīng)用程序框架。Wicket 使用遵循 XHTML 標(biāo)準(zhǔn)的命名空間來(lái)支持 HTML 模板。其特點(diǎn)在于對(duì) Html 和 Java代碼進(jìn)行了有效的分離(有利于程序員和美工的合作),基于規(guī)則的配置(減少了 XML 等配置文件的使用)。
優(yōu)點(diǎn):
代碼是用Java編寫的;
沒(méi)有XML配置文件;
沒(méi)有返回鍵的問(wèn)題;
是一種簡(jiǎn)單Java對(duì)象為中心的編程;
測(cè)試比較容易。
缺點(diǎn):
發(fā)展前景比較不明確;
基于事件的設(shè)計(jì)可能增加代碼混亂的幾率。

第十,Vert.x框架是一個(gè)基于 JVM、輕量級(jí)、高性能的應(yīng)用框架,基于事件驅(qū)動(dòng)和異步,使用極少的核心線程里占用最小限度的硬件資源處理大量的高并發(fā)。Vert.x支持多種語(yǔ)言,例如Ceylon、Ruby、Groovy、JavaScript和Java,因此可以根據(jù)項(xiàng)目特性和團(tuán)隊(duì)技能靈活選擇語(yǔ)言。
優(yōu)點(diǎn):
設(shè)置容易;
Vert.x容器里強(qiáng)大的內(nèi)核線程;
為異步提供簡(jiǎn)單的方法和對(duì)象。
缺點(diǎn):
?一些硬件可能無(wú)法執(zhí)行;
支持語(yǔ)言太多,選擇一門恰當(dāng)?shù)恼Z(yǔ)言會(huì)讓人頭疼會(huì)。
相關(guān)專題
-
交互體驗(yàn)設(shè)計(jì)和UI設(shè)計(jì)哪個(gè)更重要 -
怎么判斷網(wǎng)頁(yè)前端做的好壞2024-01-13
-
AI那么火熱,是否會(huì)替代UI設(shè)計(jì)師2023-11-30
-
-
-
體驗(yàn)從溝通開(kāi)始,讓我們聆聽(tīng)您的需求!
開(kāi)始您的數(shù)字化品牌體驗(yàn)! 0571-85815193 期待您的來(lái)電!
[ 網(wǎng)站建設(shè)×品牌官網(wǎng)設(shè)計(jì)×大策略營(yíng)銷門戶×微信小程序開(kāi)發(fā)×微信公眾號(hào)開(kāi)發(fā)]
網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理
免費(fèi)獲取項(xiàng)目策劃
項(xiàng)目開(kāi)發(fā)部產(chǎn)品經(jīng)理
免費(fèi)獲取項(xiàng)目策劃