毫無(wú)疑問(wèn),Java是目前最需要的編程語(yǔ)言之一。在這里,我們已經(jīng)挖掘了一些關(guān)于框架趨勢(shì)的有用信息,以減輕全球軟件開(kāi)發(fā)人員的日常工作。
根據(jù)RebelLabs,也是在線Java用戶組(虛擬JUG)的媒體盟友所進(jìn)行的調(diào)查,2016年最佳java框架的陣容如下:
我們并不希望你只看比較圖,而跳過(guò)對(duì)每個(gè)框架的概述,因?yàn)槔锩鏁?huì)對(duì)框架進(jìn)行分析和對(duì)比,來(lái)幫助你根據(jù)你的項(xiàng)目選擇完美的工具。
1.Spring MVC
姜還是老的辣,Spring MVC自從它第一次發(fā)布已經(jīng)有了十多年的歷史,但仍然處于領(lǐng)先地位。在為了擁抱完整的MVC框架的擴(kuò)展之后,Spring繼續(xù)保持發(fā)展變化,并轉(zhuǎn)變成為了面向Internet的應(yīng)用程序的全面Java框架,為軟件工程師在Web應(yīng)用程序開(kāi)發(fā)和應(yīng)用程序配置以及安全項(xiàng)目上提供了強(qiáng)大的工具包。作為程序員中最受歡迎的框架之一,Spring有一個(gè)得到很好開(kāi)發(fā)的生態(tài)系統(tǒng),提供各種附加選項(xiàng):REST API或SOAP Web服務(wù),安全(身份驗(yàn)證和授權(quán),加密)等。選擇它還有一個(gè)好處是很多大公司里的開(kāi)發(fā)同行也選擇用這個(gè)特定的Java框架。因此,他們可以為你提供你所需的查詢幫助。
優(yōu)點(diǎn)和缺點(diǎn)
沒(méi)有理由的,Spring在圖表的頂部沒(méi)有嵌套。它是最好和最知名的Java框架之一,因?yàn)椋?
- 通過(guò)使用POJO簡(jiǎn)化測(cè)試數(shù)據(jù)的注入。
- 增強(qiáng)的模塊化,導(dǎo)致更好的代碼可讀性。
- 不同模塊之間的松散耦合。
- 依賴注入(DI)靈活使用。
雖然并非框架直接的一個(gè)缺點(diǎn),忽略參考文檔數(shù)量,Spring MVC可能并非Java新手開(kāi)發(fā)人員可以輕易掌握,它的學(xué)習(xí)曲線過(guò)于陡峭。因此,處理這個(gè)Java框架的某些部分可能會(huì)有點(diǎn)難,如果你碰上一個(gè)糟糕的參考文檔的話。你可能會(huì)發(fā)現(xiàn)不同版本之間的信息有所不同。
順便說(shuō)一句,由于我們工程師的偉大經(jīng)驗(yàn),Spring MVC是我們最喜歡的框架之一。
2. Struts 2
為了更詳細(xì)地闡述為現(xiàn)代軟件工程師廣泛使用的現(xiàn)有Java框架,我們決定引用Apache的Struts 1(Struts 2)的后續(xù)版本。這個(gè)Java框架對(duì)于那些構(gòu)建當(dāng)代Java EE Webapp的工程師來(lái)說(shuō)真是一個(gè)不錯(cuò)的發(fā)現(xiàn)。Apache Software Foundation為開(kāi)發(fā)人員提供了一個(gè)廣泛的工具,用于創(chuàng)建面向企業(yè)的web應(yīng)用程序,優(yōu)化了從開(kāi)始到最終點(diǎn)的開(kāi)發(fā)過(guò)程以及后期維護(hù)。如果你正在對(duì)高負(fù)載系統(tǒng)(如廣播門(mén)戶)愁眉不展,那么這是一個(gè)正確的選擇。
由于Struts 2實(shí)現(xiàn)好了的Action類(普通POJO對(duì)象),測(cè)試編寫(xiě)代碼所需的工作量減輕了。使用框架的API,耦合變得更容易,這也有助于調(diào)整攔截器。
優(yōu)點(diǎn)和缺點(diǎn)
當(dāng)你問(wèn)自己為什么應(yīng)該考慮Struts 2的時(shí)候,那就想想不必重寫(xiě)或?qū)崿F(xiàn)Action類的奢侈——它已經(jīng)就位了! IT工程師需要為多個(gè)操作而創(chuàng)建重復(fù)設(shè)置的代碼不再是一個(gè)問(wèn)題,因?yàn)閿r截器會(huì)處理它。
然而,你可能會(huì)因?yàn)檫@個(gè)Java框架的龐大體型而望而卻步:一些程序員發(fā)現(xiàn)它不夠靈活。
3.Hibernate
雖然也不是在RebelLabs的列表中,但在討論最好的Java框架時(shí),Hibernate值得一提。這種映射Java框架通過(guò)替換持久化的DB訪問(wèn)高級(jí)對(duì)象處理函數(shù)來(lái)破解對(duì)象關(guān)系阻抗不匹配問(wèn)題。隨著每個(gè)企業(yè)應(yīng)用程序開(kāi)始都有這樣的問(wèn)題,Hibernate配備了一個(gè)偉大的功能套件,來(lái)幫助后端開(kāi)發(fā)人員微調(diào)數(shù)據(jù)訪問(wèn)層。這是一個(gè)高級(jí)的ORM框架,允許你對(duì)Java對(duì)象(實(shí)體)執(zhí)行數(shù)據(jù)庫(kù)操作。它是一個(gè)持久性的概念——利用Hibernate緩存將數(shù)據(jù)從Java環(huán)境持久化到數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn)和缺點(diǎn)
Hibernate允許你使用你寫(xiě)的代碼中的微小變化與任何數(shù)據(jù)庫(kù)通信,彌合對(duì)象和關(guān)系詞之間的差距。最重要的是:
- Oracle,Db2或MySQL,Hibernate是獨(dú)立于DB的。
- 通過(guò)相似查詢的緩存機(jī)制到bug數(shù)據(jù)庫(kù)。
- N + 1或延遲加載支持。
雖然它有這些明顯的優(yōu)勢(shì),但Hibernate不允許多個(gè)插入,不允許JDBC可以做的一些查詢。此外,對(duì)于具有較少表格的小規(guī)模項(xiàng)目,此Java框架可能不是一個(gè)好的選擇。
4.JSF
作為Java EE的一部分,Oracle支持JavaServer Faces。雖然不是快速Java開(kāi)發(fā)的最好框架,但它很容易使用,因?yàn)镺racle提供了偉大的文檔。此外,在你使用Java EE環(huán)境之時(shí),你會(huì)發(fā)現(xiàn)JSF沒(méi)有外部依賴,反而提供了大量功能。豐富的庫(kù)和工具(包括一個(gè)方便創(chuàng)建用戶界面的工具集)使之成為了一個(gè)魔術(shù)棒,來(lái)支持你面對(duì)無(wú)論看起來(lái)有多復(fù)雜的應(yīng)用程序。
優(yōu)點(diǎn)和缺點(diǎn)
如上所述,JSF是Java EE的一個(gè)組成部分。因此,開(kāi)發(fā)人員利用IDE軟件套件以及來(lái)自行業(yè)領(lǐng)先供應(yīng)商最好水平的支持。
另一方面,JavaServer Faces太龐大,以致于對(duì)于那些在web開(kāi)發(fā)基礎(chǔ)上的經(jīng)驗(yàn)和技能不夠堅(jiān)固的人而言,非常難以理解。
5.Vaadin
使用GWT渲染結(jié)束網(wǎng)頁(yè),Vaadin成為了現(xiàn)代開(kāi)發(fā)人員在創(chuàng)建業(yè)務(wù)應(yīng)用程序時(shí)選擇的流行框架之一。利用一個(gè)眾所周知的基于組件的方法,Vaadin通過(guò)將做的改變傳達(dá)給瀏覽器來(lái)減輕了開(kāi)發(fā)人員的負(fù)擔(dān)。一個(gè)廣泛的UI組件,以及各種小部件和控件,允許程序員隨時(shí)構(gòu)建酷酷的應(yīng)用程序。
優(yōu)點(diǎn)和缺點(diǎn)
在Java,HTML或兩者中構(gòu)建布局,Vaadin提供了使用或MVC或MVP綁定數(shù)據(jù)的機(jī)會(huì)。拖放支持以及其他突出的功能簡(jiǎn)化了Java應(yīng)用程序單頁(yè)UI的創(chuàng)建。
在缺點(diǎn)方面,移動(dòng)應(yīng)用程序的UI遲緩可能是一個(gè)問(wèn)題,因?yàn)閂aadin將每個(gè)事件發(fā)送回服務(wù)器。
6. Google Web Toolkit
GWT是另一個(gè)免費(fèi)的Java框架,允許程序員創(chuàng)建和優(yōu)化復(fù)雜的基于Web的應(yīng)用程序。 GWT軟件開(kāi)發(fā)套件提供核心Java API和小部件,用于構(gòu)建之后編譯為JavaScript的應(yīng)用程序。
優(yōu)點(diǎn)和缺點(diǎn)
使用Google Web Toolkit,你可以獲得單個(gè)代碼庫(kù)(Java中的瀏覽器端和服務(wù)器端編程),從而簡(jiǎn)化開(kāi)發(fā)和調(diào)試過(guò)程。與其他技術(shù)的簡(jiǎn)單集成允許程序員在Web頁(yè)面中嵌入GWT小部件。自定義窗口小部件功能是另一個(gè)可以在GWT幫助下創(chuàng)建的好處。
然而,如果你是一個(gè)Web設(shè)計(jì)師,GWT可能并非Java框架的最佳選擇;它對(duì)那些純HTML和后期動(dòng)態(tài)內(nèi)容布局并不和藹可親。
7.Grails
這個(gè)特殊的Web框架因?yàn)槠涔虉?zhí)的API,合理的默認(rèn)值,以及約定優(yōu)于配置的范例,使之被當(dāng)作是一個(gè)提高工程師生產(chǎn)力的動(dòng)態(tài)工具。無(wú)縫的Java集成使得這個(gè)特殊的框架成為了全世界大量程序員的最佳選擇。一系列強(qiáng)大的功能,例如Spring提供的依賴注入和各種插件,提供了創(chuàng)建現(xiàn)代基于Web的應(yīng)用程序所需的一切。
優(yōu)點(diǎn)和缺點(diǎn)
快速設(shè)置一個(gè)新的項(xiàng)目和支架為程序員節(jié)省了大量寶貴的時(shí)間。一個(gè)巨大的庫(kù)提供了超過(guò)900種不同的易于安裝的插件。盡管Grails是一個(gè)全棧開(kāi)發(fā)的Java框架,但它還有一個(gè)Grails的對(duì)象關(guān)系映射覆蓋的龐大功能,使其成為了一個(gè)相對(duì)笨重的軟件。
那么選擇什么呢?
在2016年各種流行的Java框架中選擇合適的概念可能是一個(gè)麻煩的任務(wù),因?yàn)槊總€(gè)公司在選擇獲勝方法時(shí)都會(huì)堅(jiān)持他們自己基于web和移動(dòng)app創(chuàng)建的思想。無(wú)論你使用的是什么確切的框架,謹(jǐn)記許可證,易于安裝,網(wǎng)絡(luò)的活躍程度,以及手邊的文檔等。根據(jù)項(xiàng)目類型,有時(shí),明智的做法是將所有工具放在一起挑選,但很多時(shí)候,“減肥”和轉(zhuǎn)向一個(gè)輕量級(jí)的概念更有意義。
另一個(gè)問(wèn)題是,你忙碌的小伙伴們是否準(zhǔn)備好學(xué)習(xí),是否有空余時(shí)間分配給知識(shí)汲取。通常,將開(kāi)發(fā)交給遠(yuǎn)程團(tuán)隊(duì)并獲得可盈利產(chǎn)品是非常值得的??鞓?lè)開(kāi)發(fā)!



