2021中使用的10個(gè)最佳Java框架
時(shí)間:2023-05-24 09:21:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-05-24 09:21:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
2021中使用的10個(gè)最佳Java框架:Java是一種強(qiáng)大的語(yǔ)言,當(dāng)與框架相結(jié)合時(shí),Java可以為您提供電子商務(wù),銀行,云計(jì)算,財(cái)務(wù),大數(shù)據(jù),股票市場(chǎng),且更多的任何域的最佳解決方案。
如果您剛剛從Java開(kāi)始,請(qǐng)參閱Java Live Active使用此博客將通過(guò)您需要知道的所有重要概念來(lái)開(kāi)始使用框架。
什么是Java框架?
作為模板或骨架的預(yù)先寫(xiě)代碼的正文,其中一個(gè)開(kāi)發(fā)人員可以根據(jù)需要填寫(xiě)其代碼來(lái)使用和重用以創(chuàng)建應(yīng)用程序,以便在他們打算引用其作為框架時(shí)使用的代碼來(lái)創(chuàng)建應(yīng)用程序。重用框架使開(kāi)發(fā)人員能夠在沒(méi)有手動(dòng)開(kāi)銷(xiāo)的情況下從頭開(kāi)始創(chuàng)建每行代碼的手動(dòng)。Java框架特定于Java編程語(yǔ)言,用作開(kāi)發(fā)軟件應(yīng)用程序的平臺(tái),Java程序.java框架可以包括用于處理,輸入和管理硬件設(shè)備的預(yù)定義類(lèi)和功能,以及與系統(tǒng)軟件進(jìn)行交互。這取決于框架的類(lèi)型,程序員的技能水平,他們?cè)噲D完成的東西,以及他們的喜好。
為什么要用框架?
框架為您的應(yīng)用程序提供結(jié)構(gòu)。例如,如果我們有適當(dāng)?shù)臏y(cè)試框架,我們可以自動(dòng)化大量的東西并獲得準(zhǔn)確和一致的結(jié)果。同樣的方式如果有orm,web應(yīng)用程序,日志記錄,數(shù)據(jù)管理等框架,它將使開(kāi)發(fā)人員的生活簡(jiǎn)單,并幫助他們專(zhuān)注于業(yè)務(wù)邏輯,而不是擔(dān)心域或應(yīng)用程序中使用的常見(jiàn)代碼。
10個(gè)最佳Java框架
雖然Java有許多框架,但這里有一些非常常用類(lèi)型的框架不同類(lèi)型 - Web應(yīng)用程序,網(wǎng)絡(luò)應(yīng)用程序,日志記錄,測(cè)試,ORM等。注意,這些都有其自己的好處,可以為不同的業(yè)務(wù)工作最佳用例。我們不能說(shuō)哪個(gè)更好,因?yàn)樗鼈兌荚诓煌膱?chǎng)景中都很好。
Spring
憑借其依賴(lài)注入和面向方面的編程特征的概念,Spring逐行開(kāi)發(fā)世界。它是一種用于企業(yè)應(yīng)用程序的開(kāi)源框架。
在春天,開(kāi)發(fā)人員可以創(chuàng)建松散耦合的模塊,其中依賴(lài)性由框架處理,而不是根據(jù)代碼中的庫(kù)來(lái)處理。
Spring框架是詳盡的,涵蓋了很多功能,包括安全性和配置,易于學(xué)習(xí)。此外,由于它是最受歡迎的Web框架,您可以找到很多文檔和活動(dòng)社區(qū)。
通過(guò)配置的所有內(nèi)容,您的代碼將是干凈且易于理解的。
主要概念:
- 依賴(lài)注入(DI)(控制的反轉(zhuǎn)) - 在此原則上,而不是依次控制流量的應(yīng)用程序,它使控制到驅(qū)動(dòng)流量的外部控制器。外部控制器是事件。當(dāng)有些事件發(fā)生時(shí),申請(qǐng)流程繼續(xù)。這為應(yīng)用提供了靈活性。在春天,IOC由DI完成,其中三種類(lèi)型 - Setter注入,方法噴射和構(gòu)造儀注入。
- Bean和Spring上下文 - 在春Spring,對(duì)象稱(chēng)為bean,并且有一個(gè)beanfactory管理和配置這些bean。您可以將BeanFactory視為實(shí)例化,配置和管理bean的容器。大多數(shù)應(yīng)用程序使用XML(beans.xml)進(jìn)行配置。ApplicationContext哪個(gè)BeanFactory用于更復(fù)雜的應(yīng)用程序,需要事件傳播,聲明機(jī)制和與Spring的方面的面向側(cè)向特征的集成。
- 閱讀關(guān)于一些更多主要的Spring概念。
2.Apache Struts
Apache Struts是Web應(yīng)用程序的另一個(gè)強(qiáng)大的開(kāi)源框架。它遵循MVC(模型 - 視圖 - 控制器)模型并擴(kuò)展JSP API。在傳統(tǒng)的servlet-jsp方法中,如果用戶(hù)提交給我們的詳細(xì)信息說(shuō)明表單,則該信息然后轉(zhuǎn)到Servlet進(jìn)行處理,或者控制轉(zhuǎn)到下一個(gè)JSP(Java Server Pages - 您可以在其中編寫(xiě)Java代碼HTML)。由于“View”或演示層理想地沒(méi)有業(yè)務(wù)邏輯,這將使復(fù)雜應(yīng)用程序變得令人困惑。
Struts將視圖,控制器和模型(數(shù)據(jù))分開(kāi),并通過(guò)配置文件Struts-config.xml提供各自之間的綁定。
控制器是actionservlet,您可以在其中編寫(xiě)視圖的模板,并且使用ActionForm JavaBean保持用戶(hù)數(shù)據(jù)。操作對(duì)象負(fù)責(zé)轉(zhuǎn)發(fā)應(yīng)用程序流程。
該視圖由豐富的標(biāo)記庫(kù)維護(hù)。
Struts易于設(shè)置并通過(guò)Servlet和JSP單獨(dú)使用傳統(tǒng)的MVC方法提供更大的靈活性和可擴(kuò)展性。這可能是您作為Web開(kāi)發(fā)人員的職業(yè)生涯的一個(gè)很好的起點(diǎn)。
3.Hibernate
雖然Hibernate不是一個(gè)全堆棧的框架,但它完全改變了我們查看數(shù)據(jù)庫(kù)的方式。Java Persistence API(JPA)的實(shí)現(xiàn),Hibernate是Java應(yīng)用程序的對(duì)象關(guān)系映射(ORM)數(shù)據(jù)庫(kù)。就像SQL一樣,Hibernate中的查詢(xún)稱(chēng)為HQL(Hibernate查詢(xún)語(yǔ)言)。
Hibernate直接將Java類(lèi)映射到對(duì)應(yīng)的數(shù)據(jù)庫(kù)表,反之亦然。
Hibernate中的主文件是hibernate.cfg.xml文件,其中包含有關(guān)映射Java類(lèi)的信息,其中包含數(shù)據(jù)庫(kù)配置。
Hibernate解決了JDBC - JDBC的兩個(gè)主要問(wèn)題 - JDBC不支持對(duì)象級(jí)關(guān)系,如果您決定遷移到不同的數(shù)據(jù)庫(kù),則舊的查詢(xún)可能無(wú)法正常工作 - 意味著很多更改 - 即時(shí)間和金錢(qián)!
Hibernate提供了一個(gè)抽象層,使得代碼與數(shù)據(jù)庫(kù)松散地耦合。諸如建立數(shù)據(jù)庫(kù)連接的東西,執(zhí)行CRUD操作是由Hibernate處理的 - 所以開(kāi)發(fā)人員不需要實(shí)現(xiàn),因此使得代碼獨(dú)立于使用的數(shù)據(jù)庫(kù)。
從這些初學(xué)者和高級(jí)課程中選擇一個(gè)或多個(gè),以了解Hibernate和JPA的完整概述。
4. Apache Wicket.
如果您已經(jīng)與JSP合作,則學(xué)習(xí)Wicket將成為Cakewalk。一個(gè)簡(jiǎn)單的Java Web框架,Wicket有一個(gè)面向組件的結(jié)構(gòu),您需要知道的只是Java和HTML。絕對(duì)沒(méi)有XML或配置文件!
Wicket的主要特點(diǎn)是IT POJO模型,其中組件很簡(jiǎn)單(普通舊的)Java對(duì)象具有OOP功能。這些組件作為可重用包作為可重用包,其中包含圖像,按鈕,表單,鏈接,頁(yè)面,容器,行為等,以便開(kāi)發(fā)人員可以自定義它們。
Wicket是輕量調(diào),您可以確保建立應(yīng)用程序。它也很容易在檢票口中編寫(xiě)的單元測(cè)試代碼。
5. JSF(Java Server Faces)
不要將JSF與JSP混淆,這只是可以具有靜態(tài)和動(dòng)態(tài)內(nèi)容的文本文檔。JSF是由Oracle開(kāi)發(fā)的,作為Java Enterprise Edition 7的一部分。
它是基于組件的MVC框架,并具有基于服務(wù)器的應(yīng)用程序的可重用UI組件。主要思想是封裝各種客戶(hù)端技術(shù),如CSS,JavaScript和HTML,它將允許開(kāi)發(fā)人員在不知道任何深入的任何技術(shù)的情況下創(chuàng)建UI。它們只能拖放UI組件并更多地關(guān)注其演示層細(xì)節(jié)。
JSF中的默認(rèn)模板系統(tǒng)是Facelets。JSF與Struts非常相似。
JSF可以進(jìn)一步無(wú)縫地與啟用Ajax的組件集成,以通過(guò)為驗(yàn)證和方法調(diào)用添加Ajax事件來(lái)豐富用戶(hù)體驗(yàn)。
查看此鏈接課程以了解更多有關(guān)JSF的信息。
6.Dropwizard
另一個(gè)Java框架符合其名稱(chēng) - 向?qū)А_@種輕量級(jí)框架允許您非??焖俚赝瓿蓱?yīng)用程序,因?yàn)樗菍?duì)高級(jí)配置,日志記錄,應(yīng)用指標(biāo)等的框支持。您可以創(chuàng)建提供高性能的RESTful Web應(yīng)用程序,穩(wěn)定可靠。
DropWizard尤其是神奇的,因?yàn)樗鼌R集了一系列庫(kù),如Jetty,Guava,Jersy,Jackson和java生態(tài)系統(tǒng)中的許多其他人的指標(biāo),并為您提供了輕量級(jí)和精益的應(yīng)用。
由于所有配置,安全性和性能相關(guān)的任務(wù)都有集成的庫(kù),因?yàn)槟枰龅乃信渲?,就像開(kāi)發(fā)人員建立業(yè)務(wù)邏輯一樣。
DropWizard是一個(gè)與庫(kù)捆綁在一起的開(kāi)源框架,您可以輕松地使用Eclipse IDE設(shè)置并創(chuàng)建一個(gè)簡(jiǎn)單的項(xiàng)目來(lái)學(xué)習(xí)(相信我,您可以自己學(xué)習(xí)陣列!)。DropWizard網(wǎng)站的基本教程將通過(guò)每個(gè)步驟幫助您。
7. Grails.
Grails是一種很容易學(xué)習(xí)的全堆??蚣埽m合剛剛開(kāi)始編程職業(yè)的人。雖然Grails是以Groovy編程語(yǔ)言編寫(xiě)的Web框架,但它在Java平臺(tái)上運(yùn)行,并且與Java語(yǔ)法完美兼容。該框架基于MVC設(shè)計(jì)模式。
Groovy類(lèi)似于Java,與Java相比,有一些更多的功能。如果您已經(jīng)知道Java,則非常容易學(xué)習(xí)Groovy。
與JSP類(lèi)似,在Grails中,渲染技術(shù)是GSP(Groovy Server頁(yè)面)。為Grails中的視圖創(chuàng)建標(biāo)記簡(jiǎn)單且簡(jiǎn)單。它還使用GOM,因?yàn)槟赡芤呀?jīng)猜到是Grails中使用的ORM實(shí)現(xiàn)。您也可以直接使用Hibernate而不是GOM。Grails為RESTful API建立了支持,因此可以輕松創(chuàng)建此類(lèi)服務(wù)。
以下是最好的部分 - 您可以將現(xiàn)有的Java代碼與Grails集成。如果您的應(yīng)用程序中的Groovy和Java代碼混合 - 它將正常工作!
學(xué)習(xí)Grails的最佳方式是使用像Eclipse,NetBeans等的任何Java IDE設(shè)置自己的開(kāi)發(fā)環(huán)境……并按照任何這些教程建立您的第一個(gè)Web應(yīng)用程序。
8.ATG
ATG是用Java編寫(xiě)的Web Commerce平臺(tái)。它是一種可定制和可配置的框架,對(duì)與電子商務(wù)有關(guān)的網(wǎng)站特別有用。該產(chǎn)品由Oracle擁有,并支持復(fù)雜和巨大的B2B和B2C應(yīng)用程序。然而,對(duì)于小規(guī)模應(yīng)用,它可能是昂貴的。如果您正在進(jìn)入開(kāi)發(fā)電子商務(wù)網(wǎng)站,ATG是一個(gè)很好的學(xué)習(xí)框架,并將豐富您的技術(shù)以及域名知識(shí)。
ATG平臺(tái)可以在三個(gè)服務(wù)器上運(yùn)行 - Oracle WebLogic,IBM WebSphere和JBoss。
框架中有3個(gè)主要層 -
- Dynamo應(yīng)用程序框架 - 它是基于JavaBeans和JSP的開(kāi)發(fā)環(huán)境提供的基礎(chǔ)層。對(duì)于所有常用功能,都有標(biāo)準(zhǔn)的ATG類(lèi),甚至可以通過(guò)通過(guò)配置文件鏈接來(lái)創(chuàng)建和組裝甚至自定義Java代碼。
- 個(gè)性化模塊 - 這是每個(gè)用戶(hù)的內(nèi)容是動(dòng)態(tài)定制的。此模塊有助于控制和維護(hù)用戶(hù) - 配置文件和業(yè)務(wù)規(guī)則,該配置文件和業(yè)務(wù)規(guī)則定義要將內(nèi)容顯示到特定用戶(hù)的內(nèi)容。此圖層還支持有針對(duì)性的電子郵件。
- 方案模塊 - 此模塊通過(guò)引入時(shí)間敏感的事件驅(qū)動(dòng)的廣告系列來(lái)增強(qiáng)個(gè)性化模塊的功能,這些活動(dòng)是在一段時(shí)間內(nèi)管理站點(diǎn)訪問(wèn)者和內(nèi)容之間的交互。例如,有限時(shí)間提供,某些成員的獨(dú)家優(yōu)惠等……
ATG是一個(gè)廣泛的框架,你需要時(shí)間和耐心學(xué)習(xí)它。幾家像沃爾瑪,梅奇,最佳,ASDA等幾家大公司都擁有他們的網(wǎng)站,建于ATG。
9 Play
Play是一種略微傳統(tǒng)和獨(dú)特的框架類(lèi)型,遵循“慣例”通過(guò)配置的方法。它基于MVC模式,是一個(gè)開(kāi)源Web應(yīng)用程序框架。除了Java,您可以在Scala中編寫(xiě)播放Web應(yīng)用程序。
播放類(lèi)似于Django或Ruby在Rails或
http://ASP.NET架構(gòu)上,不一定遵循J2EE Web標(biāo)準(zhǔn)。
Play的一些特征是 -
- 由于異步處理,性能高
- 沒(méi)有容器,沒(méi)有狀態(tài),建立在反應(yīng)原則上
- 使用靜態(tài)類(lèi)型的語(yǔ)言,因此大多數(shù)錯(cuò)誤在編譯時(shí)捕獲了在開(kāi)發(fā)生命周期的早期節(jié)省大量錯(cuò)誤。
- Scala探討了真正的OOP以及一些功能性編程概念。它與Java的兼容性為一個(gè)優(yōu)秀和強(qiáng)大的系統(tǒng)制作。
- 使用Play2,已發(fā)布了一個(gè)新的強(qiáng)大的構(gòu)建系統(tǒng)SBT,這使得與Maven Projects易于集成以及創(chuàng)建簡(jiǎn)單JAR文件。
- 廣泛的關(guān)系數(shù)據(jù)庫(kù)訪問(wèn)庫(kù),用于常用功能。
10. Apache Hadoop.
雖然Apache Hadoop不是一個(gè)全堆??蚣?,但它提供了一個(gè)軟件框架并在MapReduce編程模型上工作。這些實(shí)用程序可以輕松處理大量數(shù)據(jù)(大數(shù)據(jù)),存儲(chǔ),分析和處理它們,以提供更快,更高效的結(jié)果。
我在這個(gè)列表中包含了Hadoop,因?yàn)樗墙裉斓摹皷|西”,具有大數(shù)據(jù)的突出。
Hadoop有助于使用主從設(shè)計(jì)模式的分布式數(shù)據(jù)存儲(chǔ)和處理。主節(jié)點(diǎn)(即NameNode)的Hadoop HDFS(Hadoop分布式文件系統(tǒng))層具有數(shù)據(jù)節(jié)點(diǎn)。MapReduce圖層具有JobTracker和TaskTracker。從節(jié)點(diǎn)分別具有數(shù)據(jù)節(jié)點(diǎn)和TaskTracker。
HDFS將文件劃分為塊集,這些文件在群集中復(fù)制。
如果您想熟悉大數(shù)據(jù)和數(shù)據(jù)科學(xué) - Hadoop就是您開(kāi)始的地方。通過(guò)這些教程輕松學(xué)習(xí)Hadoop。
11. GWT.
Google Web Toolkit(GWT)是一個(gè)明顯創(chuàng)建的框架,由Google創(chuàng)建,在Java中創(chuàng)建豐富的Internet應(yīng)用程序。 GWT的最佳功能之一是它將Java代碼轉(zhuǎn)換為JavaScript代碼 - 基于瀏覽器的超自定義代碼。我個(gè)人喜歡這個(gè)功能,因?yàn)樵陂_(kāi)發(fā)期間,我們?cè)?jīng)在瀏覽器測(cè)試中花費(fèi)了大量的時(shí)間和精力。使用此開(kāi)源組工具集,我們可以在更短的時(shí)間內(nèi)編寫(xiě)高度性能的Web應(yīng)用程序。如果您已經(jīng)有一個(gè)代碼庫(kù),您可以輕松地將其與GWT集成,因?yàn)镚WT也與Eclipse IDE,Maven和Junit兼容。該框架還提供了廣泛的窗口小部件庫(kù),可以執(zhí)行大多數(shù)任務(wù),使Java中的初學(xué)者甚至是開(kāi)發(fā)業(yè)務(wù)邏輯,而不擔(dān)心基本的東西。 GWT框架有3個(gè)主要組成部分 - Java到JS編譯器,坐在核心JRE庫(kù)頂部的JAVA仿真庫(kù)和包括UI組件,歷史管理和更多功能的GWT UI構(gòu)建庫(kù)。
在這里開(kāi)始學(xué)習(xí)GWT。
12. vaadin.
Vaadin是一個(gè)旗艦產(chǎn)品,也是開(kāi)發(fā)人員可以使用Java進(jìn)行HTML5 Web UI實(shí)現(xiàn)的平臺(tái)。它是一個(gè)開(kāi)源平臺(tái),包括Java Web框架和一組Web組件以及應(yīng)用程序啟動(dòng)器和工具。這些Web組件形成了Vaadin的核心,可以定制,導(dǎo)致桌面和移動(dòng)應(yīng)用程序的高性能和多功能代碼。
Vaadin Flow是Vaadin平臺(tái)的實(shí)際Java Framework部分,負(fù)責(zé)客戶(hù)服務(wù)器通信以及路由。使用Vaadin Flow,您可以完全在Java中完全寫(xiě)入Web應(yīng)用程序,而無(wú)需JS或CSS的FUSS。UI組件使用自動(dòng)通信和瀏覽器和服務(wù)器處理用戶(hù)的瀏覽器活動(dòng)。您可以輕松地將Vaadin組件集成到您使用的任何IDE中,只需跨平臺(tái)框架,因此無(wú)需擔(dān)心將代碼遷移到其他平臺(tái)中。
構(gòu)建Java應(yīng)用程序是一種全新的方法,以便您可以單獨(dú)專(zhuān)注于演示層,而無(wú)需擔(dān)心客戶(hù)端 - 服務(wù)器通信。它還具有數(shù)據(jù)綁定API,可使用類(lèi)型安全的Java代碼和抽象圖層將UI組件映射到數(shù)據(jù)庫(kù),以便使用HTML模板和Java構(gòu)建UI中的可重用組件。
13.Spark
來(lái)自Apache的另一個(gè)Masterstroke,Spark是一個(gè)開(kāi)源的Web開(kāi)發(fā)框架,它具有與春天,播放和JAX-RS類(lèi)似的功能,但更強(qiáng)大,并且不遵循傳統(tǒng)的MVC設(shè)計(jì)模式。
它是一個(gè)微框架和一個(gè)特定于域的語(yǔ)言,用于Java專(zhuān)注于開(kāi)發(fā)速度。它需要非常少的配置和編碼。由于內(nèi)存中的計(jì)算,它在數(shù)據(jù)處理方面比Hadoop快10倍。Spark支持完全動(dòng)態(tài)的框架,支持延遲初始化和實(shí)時(shí)數(shù)據(jù)處理。
它也很容易與Scala和R集成,這是專(zhuān)注于數(shù)據(jù)科學(xué)和大數(shù)據(jù)的編程語(yǔ)言。Spark的主要目標(biāo)是處理大量數(shù)據(jù),并支持使用SQL查詢(xún),機(jī)器學(xué)習(xí)和圖形算法的高級(jí)分析。
不要以為火花可以替換Hadoop - 它可以是Hadoop提供的功能的擴(kuò)展 - 學(xué)習(xí)這兩個(gè)框架如果您進(jìn)入數(shù)據(jù)科學(xué)領(lǐng)域,這兩個(gè)框架將為您提供優(yōu)勢(shì)。
14. OpenXava.
一種以快速方式開(kāi)發(fā)Web應(yīng)用程序的低碼平臺(tái),您可以在記錄時(shí)間內(nèi)啟動(dòng)和運(yùn)行業(yè)務(wù)應(yīng)用程序。它由業(yè)務(wù)組件組成,使建立甚至復(fù)雜應(yīng)用程序簡(jiǎn)單,可為開(kāi)發(fā)人員提供麻煩。OpenXava的可擴(kuò)展,可自定義和OO,使用Java類(lèi)作為其核心來(lái)模擬業(yè)務(wù)問(wèn)題。這種模型驅(qū)動(dòng)的開(kāi)發(fā)方法確保封裝。開(kāi)發(fā)人員僅將模型定義為普通注釋的Java類(lèi),并且在運(yùn)行時(shí)都會(huì)生成必要的功能。
OpenXava的結(jié)構(gòu)和哲學(xué)遵循業(yè)務(wù)組件架構(gòu),而不是傳統(tǒng)的MVC架構(gòu)。在這里,一切都是經(jīng)營(yíng)理念,并且所有貢獻(xiàn)到某個(gè)業(yè)務(wù)概念的偽影都在同一個(gè)位置是相關(guān)的視圖,模型或控制器。
在您了解此框架之前,您肯定應(yīng)該閱讀此語(yǔ)言背后的概念。
15. Vert.x.
由Eclipse開(kāi)發(fā),Vert.x是一個(gè)事件驅(qū)動(dòng)的應(yīng)用程序框架,它使用了Java,JS,Groovy,Scala等許多語(yǔ)言。因此是本質(zhì)上的多膠。它依賴(lài)于異步編程模型,從而使應(yīng)用程序不堵塞并沒(méi)有多線程。
vert.x可以說(shuō)是一個(gè)工具包,提供多種語(yǔ)言的API,以執(zhí)行所有Web應(yīng)用程序所需的異步任務(wù) - 記錄,身份驗(yàn)證,監(jiān)視,DB連接,多集群支持等… Vert中有2個(gè)主要概念。X -
- verticle - 就像任何其他異步模型一樣,存在一個(gè)事件循環(huán),該事件循環(huán)具有消息,網(wǎng)絡(luò)緩沖區(qū),HTTP請(qǐng)求等。來(lái)自事件循環(huán)的每個(gè)事件由vertice處理。
- 事件總線 - 不同的頂點(diǎn)使用事件總線互相通信。這是通過(guò)異步消息傳遞完成的。事件總線可以執(zhí)行不同類(lèi)型的消息傳遞,如點(diǎn),廣播和請(qǐng)求 - 響應(yīng)。
關(guān)于Vert.x的最佳方法是其非阻塞性質(zhì),使Web應(yīng)用程序具有高度性能。該框架可用于任何應(yīng)用 - 小,中或大規(guī)模。如果您已經(jīng)知道node.js,則將更多地欣賞vert.x更多,因?yàn)樗哂蠳ode.js的所有功能以及Java虛擬機(jī)的益處,它使得強(qiáng)大且強(qiáng)大的組合。
16.Tapestry
概念上,Tapestry類(lèi)似于JSF和Wicket。它是一個(gè)開(kāi)源,跨平臺(tái),基于組件的Web應(yīng)用程序開(kāi)發(fā)框架,可以創(chuàng)建高度可擴(kuò)展的應(yīng)用程序。構(gòu)建在Rich Java Servlet API上,它適用于任何容器或應(yīng)用程序服務(wù)器。Tapestry是一個(gè)真正面向?qū)ο蟮目蚣?,因?yàn)槟褂眉僅TML模板或普通Java類(lèi)(對(duì)象)創(chuàng)建HTML頁(yè)面。幾乎沒(méi)有必需的XML配置,Tapestry相當(dāng)使用注釋?zhuān)瑥亩勾a簡(jiǎn)單且易于管理。
使用Tapestry,應(yīng)用程序停機(jī)時(shí)間最小,因?yàn)樯踔量梢詿岵灏尉鶆虻娜魏胃?,而無(wú)需重新啟動(dòng)服務(wù)器。Tapestry還負(fù)責(zé)URL構(gòu)建和重定向。與其他框架不同,這里的框架適應(yīng)代碼,而不是反之亦然。
其中一些開(kāi)箱功能的掛毯是 - 文件上傳,分頁(yè),字段驗(yàn)證,日期和日歷邏輯,內(nèi)化,顯示彈出窗口等……
很容易與春天,休眠等的后端框架集成掛毯代碼,以及測(cè)試框架等exenium等框架。
17.Jersey
Jersey是一個(gè)Web服務(wù)框架,可以創(chuàng)建RESTful服務(wù)并支持JAX-RS API。通過(guò)有用的功能和實(shí)用功能,它大大簡(jiǎn)化了RESTful服務(wù)的開(kāi)發(fā)。Jersey提供了一種抽象層,以便開(kāi)發(fā)人員不必?fù)?dān)心客戶(hù)端 - 服務(wù)器通信的低級(jí)別實(shí)現(xiàn),并可以專(zhuān)注于主要的Web服務(wù)功能。
與任何其他寧?kù)o的框架相反,Jersey的一個(gè)醒目特征是它允許Chunked輸出即,服務(wù)器可以向零件或塊中的客戶(hù)端發(fā)送響應(yīng)。當(dāng)必須發(fā)送大數(shù)據(jù)時(shí),這很有用,并且在準(zhǔn)備整個(gè)響應(yīng)時(shí)可以發(fā)送數(shù)據(jù)塊。
Jersey還可以輕松測(cè)試基礎(chǔ)設(shè)施。您可以編寫(xiě)主要基于JUnit的輕量級(jí)集成測(cè)試。與Maven環(huán)境相結(jié)合,還容易集成測(cè)試。您需要做的就是添加pom.xml中的依賴(lài)項(xiàng)。
18. OSGI.
OSGI或Open Service Gateway Initiative定義了基于組件的系統(tǒng)。它是一個(gè)受歡迎的Java框架,其中每個(gè)組件都被稱(chēng)為捆綁包。每個(gè)捆綁都有一個(gè)獨(dú)立的生命周期,不依賴(lài)于其他捆綁包??紤]捆綁包是具有OSGi特定標(biāo)題的JAR文件。捆綁包必須明確聲明他們需要訪問(wèn)的包,而無(wú)需哪個(gè)OSGI平臺(tái)。
捆綁包使用JVM級(jí)服務(wù)注冊(cè)表來(lái)發(fā)現(xiàn),發(fā)布和綁定捆綁包作為服務(wù)。這是OSGI的本質(zhì) - 對(duì)于模塊化應(yīng)用程序架構(gòu),促進(jìn)適應(yīng)性和快速更改,無(wú)需超時(shí)(運(yùn)行時(shí)靈活性)。
OSGI主要是流行的,因?yàn)樗cEclipse和基于Maven的項(xiàng)目輕松集成。
OSGI具有一些好的概念和好處,但由于個(gè)人獨(dú)立的捆綁版本控制可能是一個(gè)問(wèn)題。這可能是使用此框架在其他框架上的一個(gè)主要缺點(diǎn)。然而,由于模塊化和孤立的課程加載是開(kāi)發(fā)人員的重要概念,值得投資這一框架中的一些時(shí)間。
19.Drools
Drools是一個(gè)流行的商業(yè)規(guī)則管理系統(tǒng)。它具有業(yè)務(wù)規(guī)則引擎(BRE),創(chuàng)作,規(guī)則管理應(yīng)用程序和運(yùn)行時(shí)支持,用于決策和符號(hào)模型。規(guī)則管理應(yīng)用程序稱(chēng)為Drools Workbench。該項(xiàng)目由Redhat和Jboss支持。使用Drools,開(kāi)發(fā)人員可以輕松地將數(shù)據(jù)與業(yè)務(wù)邏輯分開(kāi)。Drools中的兩個(gè)主要步驟是 -
- 創(chuàng)作 - 創(chuàng)建規(guī)則文件
- 運(yùn)行時(shí) - 您執(zhí)行規(guī)則的位置
Drools最重要的特點(diǎn)是可以隨時(shí)刪除并添加新規(guī)則,而無(wú)需重新啟動(dòng)服務(wù)器。
Drools是依賴(lài)于某些行動(dòng)的大量條件的應(yīng)用程序的使用權(quán)。例如,要檢查一個(gè)人是否有資格升級(jí)他的計(jì)劃,例如,有一定的設(shè)定規(guī)則 - 例如,客戶(hù)現(xiàn)有數(shù)量,客戶(hù)的賬單金額大于特定限制等。這些規(guī)則可以定義為決策表而不是在代碼中的硬編碼它們。任何更改都不需要另一種方式構(gòu)建,完整的測(cè)試或重新部署!
20. Mybatis.
Apache的自由軟件,MyBatis是Java中的持久框架,其中Java方法映射了SQL語(yǔ)句,與ORM將Java對(duì)象映射到數(shù)據(jù)庫(kù)中的表。映射引擎以聲明方式使用XML描述符或注釋將SQL結(jié)果映射到對(duì)象樹(shù)中。
在很多方面,Mybatis比JDBC和Hibernate更好。MyBatis可以動(dòng)態(tài)生成將它們與代碼分開(kāi)的SQL語(yǔ)句。它還提供查詢(xún)緩存,便于訪問(wèn)。API非常簡(jiǎn)單,您不必是SQL或數(shù)據(jù)庫(kù)中的專(zhuān)家,以便能夠編寫(xiě)MyBatis代碼。
Mybatis是一個(gè)很好的替代Hibernate和JDBC,當(dāng)您的應(yīng)用程序不太復(fù)雜并且您希望簡(jiǎn)單的框中的功能,如數(shù)據(jù)庫(kù)連接,事務(wù)管理,加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,管理和釋放連接等框架。Mybatis也可以用彈簧框架輕松集成。
21. Apache Mina.
Apache Mina是一個(gè)網(wǎng)絡(luò)應(yīng)用程序框架,開(kāi)發(fā)人員可以輕松地創(chuàng)建高度可擴(kuò)展和性能的網(wǎng)絡(luò)應(yīng)用程序。無(wú)論是使用TCP / IP,UDP,LDAP,NTP,DNS等還是自定義協(xié)議,Mina都有所有傳輸?shù)慕y(tǒng)一API。該框架可以提供高級(jí)和低級(jí)別的網(wǎng)絡(luò)API。Mina完全處理I / O操作,幫助開(kāi)發(fā)人員充分集中在業(yè)務(wù)邏輯和其他應(yīng)用需求上。很容易測(cè)試在模擬對(duì)象的幫助下編寫(xiě)的代碼。您可以使用Eclipse IDE輕松學(xué)習(xí)MINA。它可以與流行的框架相結(jié)合,如Spring和Picocontainer,使其成為網(wǎng)絡(luò)應(yīng)用的熱門(mén)選擇。
Mina比Soap更好,更穩(wěn)定可靠。它有一個(gè)豐富的網(wǎng)絡(luò)庫(kù)來(lái)處理并發(fā)線程。
從他們的官方頁(yè)面上了解有關(guān)Apache Mina的更多信息。
結(jié)論
還有許多其他Java框架不是全堆?;騑eb開(kāi)發(fā)框架,但在每個(gè)應(yīng)用程序中都很有用 - 像Logging,JUnit和Selenium用于測(cè)試等等。很重要,雖然您可以在與上面列表中看到的其他框架一起了解它們,但您可以了解這些問(wèn)題。
您申請(qǐng)的最佳框架應(yīng)滿(mǎn)足您的業(yè)務(wù)需求,提供一定的靈活性和最佳性能,并且易于維護(hù)和吸收變化。
例如,對(duì)于完整的堆棧Web開(kāi)發(fā)框架,如果需要更改某些東西,它應(yīng)該影響應(yīng)用程序最少,即,您不必再次構(gòu)建和部署應(yīng)用程序以進(jìn)行小型更改。只是一個(gè)配置變化應(yīng)該做魔法。此類(lèi)應(yīng)用程序節(jié)省停機(jī)時(shí)間并提供靈活性。
明智地選擇Java的框架,享受Java提供的功能。
(本文由聞數(shù)起舞翻譯自Sebastian D. Rosenbolt的文章《10 Best Java Frameworks to Use in 2021》,轉(zhuǎn)載請(qǐng)注明出處,原文鏈接:
https://medium.com/swlh/10-best-java-frameworks-to-use-in-2021-49b6d1322c9a)