毫無疑問,Java是目前最需要的編程語言之一盛泡。在這里闷祥,我們已經(jīng)挖掘了一些關(guān)于框架趨勢的有用信息,以減輕全球軟件開發(fā)人員的日常工作饭于。
根據(jù)RebelLabs蜀踏,也是在線Java用戶組(虛擬JUG)的媒體盟友所進(jìn)行的調(diào)查维蒙,2016年最佳java框架的陣容如下:
我們并不希望你只看比較圖,而跳過對每個(gè)框架的概述果覆,因?yàn)槔锩鏁蚣苓M(jìn)行分析和對比颅痊,來幫助你根據(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)用程序開發(fā)和應(yīng)用程序配置以及安全項(xiàng)目上提供了強(qiáng)大的工具包薛耻。作為程序員中最受歡迎的框架之一营罢,Spring有一個(gè)得到很好開發(fā)的生態(tài)系統(tǒng),提供各種附加選項(xiàng):REST API或SOAP Web服務(wù)饼齿,安全(身份驗(yàn)證和授權(quán)饲漾,加密)等。選擇它還有一個(gè)好處是很多大公司里的開發(fā)同行也選擇用這個(gè)特定的Java框架缕溉。因此考传,他們可以為你提供你所需的查詢幫助。
優(yōu)點(diǎn)和缺點(diǎn)
沒有理由的证鸥,Spring在圖表的頂部沒有嵌套僚楞。它是最好和最知名的Java框架之一,因?yàn)椋?/p>
通過使用POJO簡化測試數(shù)據(jù)的注入枉层。
增強(qiáng)的模塊化泉褐,導(dǎo)致更好的代碼可讀性。
不同模塊之間的松散耦合鸟蜡。
依賴注入(DI)靈活使用兴枯。
雖然并非框架直接的一個(gè)缺點(diǎn),忽略參考文檔數(shù)量矩欠,Spring MVC可能并非Java新手開發(fā)人員可以輕易掌握财剖,它的學(xué)習(xí)曲線過于陡峭。因此癌淮,處理這個(gè)Java框架的某些部分可能會有點(diǎn)難躺坟,如果你碰上一個(gè)糟糕的參考文檔的話。你可能會發(fā)現(xiàn)不同版本之間的信息有所不同乳蓄。
順便說一句咪橙,由于我們工程師的偉大經(jīng)驗(yàn),Spring MVC是我們最喜歡的框架之一。
2. Struts 2
為了更詳細(xì)地闡述為現(xiàn)代軟件工程師廣泛使用的現(xiàn)有Java框架美侦,我們決定引用Apache的Struts 1(Struts 2)的后續(xù)版本产舞。這個(gè)Java框架對于那些構(gòu)建當(dāng)代Java EE Webapp的工程師來說真是一個(gè)不錯(cuò)的發(fā)現(xiàn)。Apache Software Foundation為開發(fā)人員提供了一個(gè)廣泛的工具菠剩,用于創(chuàng)建面向企業(yè)的web應(yīng)用程序易猫,優(yōu)化了從開始到最終點(diǎn)的開發(fā)過程以及后期維護(hù)。如果你正在對高負(fù)載系統(tǒng)(如廣播門戶)愁眉不展具壮,那么這是一個(gè)正確的選擇准颓。
由于Struts 2實(shí)現(xiàn)好了的Action類(普通POJO對象),測試編寫代碼所需的工作量減輕了棺妓。使用框架的API攘已,耦合變得更容易怜跑,這也有助于調(diào)整攔截器样勃。
優(yōu)點(diǎn)和缺點(diǎn)
當(dāng)你問自己為什么應(yīng)該考慮Struts 2的時(shí)候,那就想想不必重寫或?qū)崿F(xiàn)Action類的奢侈——它已經(jīng)就位了彤灶! IT工程師需要為多個(gè)操作而創(chuàng)建重復(fù)設(shè)置的代碼不再是一個(gè)問題,因?yàn)閿r截器會處理它鞋囊。
然而挺益,你可能會因?yàn)檫@個(gè)Java框架的龐大體型而望而卻步:一些程序員發(fā)現(xiàn)它不夠靈活夯缺。
3.Hibernate
雖然也不是在RebelLabs的列表中,但在討論最好的Java框架時(shí)截驮,Hibernate值得一提鹉勒。這種映射Java框架通過替換持久化的DB訪問高級對象處理函數(shù)來破解對象關(guān)系阻抗不匹配問題捺氢。隨著每個(gè)企業(yè)應(yīng)用程序開始都有這樣的問題盔憨,Hibernate配備了一個(gè)偉大的功能套件,來幫助后端開發(fā)人員微調(diào)數(shù)據(jù)訪問層讯沈。這是一個(gè)高級的ORM框架郁岩,允許你對Java對象(實(shí)體)執(zhí)行數(shù)據(jù)庫操作婿奔。它是一個(gè)持久性的概念——利用Hibernate緩存將數(shù)據(jù)從Java環(huán)境持久化到數(shù)據(jù)庫。
優(yōu)點(diǎn)和缺點(diǎn)
Hibernate允許你使用你寫的代碼中的微小變化與任何數(shù)據(jù)庫通信问慎,彌合對象和關(guān)系詞之間的差距萍摊。最重要的是:
Oracle,Db2或MySQL如叼,Hibernate是獨(dú)立于DB的冰木。
通過相似查詢的緩存機(jī)制到bug數(shù)據(jù)庫。
N + 1或延遲加載支持笼恰。
雖然它有這些明顯的優(yōu)勢踊沸,但Hibernate不允許多個(gè)插入,不允許JDBC可以做的一些查詢社证。此外逼龟,對于具有較少表格的小規(guī)模項(xiàng)目,此Java框架可能不是一個(gè)好的選擇追葡。
4.JSF
作為Java EE的一部分腺律,Oracle支持JavaServer
Faces。雖然不是快速Java開發(fā)的最好框架宜肉,但它很容易使用匀钧,因?yàn)镺racle提供了偉大的文檔。此外谬返,在你使用Java
EE環(huán)境之時(shí)之斯,你會發(fā)現(xiàn)JSF沒有外部依賴,反而提供了大量功能遣铝。豐富的庫和工具(包括一個(gè)方便創(chuàng)建用戶界面的工具集)使之成為了一個(gè)魔術(shù)棒佑刷,來支持你面對無論看起來有多復(fù)雜的應(yīng)用程序。
優(yōu)點(diǎn)和缺點(diǎn)
如上所述翰蠢,JSF是Java EE的一個(gè)組成部分。因此啰劲,開發(fā)人員利用IDE軟件套件以及來自行業(yè)領(lǐng)先供應(yīng)商最好水平的支持梁沧。
另一方面,JavaServer Faces太龐大蝇裤,以致于對于那些在web開發(fā)基礎(chǔ)上的經(jīng)驗(yàn)和技能不夠堅(jiān)固的人而言廷支,非常難以理解。
5.Vaadin
使用GWT渲染結(jié)束網(wǎng)頁栓辜,Vaadin成為了現(xiàn)代開發(fā)人員在創(chuàng)建業(yè)務(wù)應(yīng)用程序時(shí)選擇的流行框架之一恋拍。利用一個(gè)眾所周知的基于組件的方法,Vaadin通過將做的改變傳達(dá)給瀏覽器來減輕了開發(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ī)會。拖放支持以及其他突出的功能簡化了Java應(yīng)用程序單頁UI的創(chuàng)建默怨。
在缺點(diǎn)方面讯榕,移動(dòng)應(yīng)用程序的UI遲緩可能是一個(gè)問題,因?yàn)閂aadin將每個(gè)事件發(fā)送回服務(wù)器匙睹。
6. Google Web Toolkit
GWT是另一個(gè)免費(fèi)的Java框架愚屁,允許程序員創(chuàng)建和優(yōu)化復(fù)雜的基于Web的應(yīng)用程序。 GWT軟件開發(fā)套件提供核心Java API和小部件痕檬,用于構(gòu)建之后編譯為JavaScript的應(yīng)用程序霎槐。
優(yōu)點(diǎn)和缺點(diǎn)
使用Google Web Toolkit,你可以獲得單個(gè)代碼庫(Java中的瀏覽器端和服務(wù)器端編程)谆棺,從而簡化開發(fā)和調(diào)試過程栽燕。與其他技術(shù)的簡單集成允許程序員在Web頁面中嵌入GWT小部件。自定義窗口小部件功能是另一個(gè)可以在GWT幫助下創(chuàng)建的好處改淑。
然而碍岔,如果你是一個(gè)Web設(shè)計(jì)師,GWT可能并非Java框架的最佳選擇朵夏;它對那些純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)工具随常。無縫的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è)巨大的庫提供了超過900種不同的易于安裝的插件辩棒。盡管Grails是一個(gè)全棧開發(fā)的Java框架,但它還有一個(gè)Grails的對象關(guān)系映射覆蓋的龐大功能膨疏,使其成為了一個(gè)相對笨重的軟件一睁。
那么選擇什么呢?
在2016年各種流行的Java框架中選擇合適的概念可能是一個(gè)麻煩的任務(wù)佃却,因?yàn)槊總€(gè)公司在選擇獲勝方法時(shí)都會堅(jiān)持他們自己基于web和移動(dòng)app創(chuàng)建的思想者吁。無論你使用的是什么確切的框架,謹(jǐn)記許可證饲帅,易于安裝复凳,網(wǎng)絡(luò)的活躍程度瘤泪,以及手邊的文檔等。根據(jù)項(xiàng)目類型染坯,有時(shí)均芽,明智的做法是將所有工具放在一起挑選,但很多時(shí)候单鹿,“減肥”和轉(zhuǎn)向一個(gè)輕量級的概念更有意義掀宋。
另一個(gè)問題是,你忙碌的小伙伴們是否準(zhǔn)備好學(xué)習(xí)仲锄,是否有空余時(shí)間分配給知識汲取劲妙。通常,將開發(fā)交給遠(yuǎn)程團(tuán)隊(duì)并獲得可盈利產(chǎn)品是非常值得的儒喊×头埽快樂開發(fā)!
譯文鏈接:http://www.codeceo.com/article/2016-7-best-java-framework.html
翻譯作者:碼農(nóng)網(wǎng)– 小峰
[轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接怀愧、譯文鏈接和譯者等信息侨颈。]