流行的9個Java框架介紹:優點、缺點等等

NO IMAGE

在2018年,Java仍然是世界上最流行的程式語言。它擁有一個巨大的生態系統,在全世界有超過900萬Java開發人員。雖然Java不是最直接的語言,但是您不需要從頭編寫Java程式。有許多優秀的Java框架可以編寫在Java虛擬機器上執行的web和移動應用程式、微服務和REST api。

Java框架允許您關注應用程式的業務邏輯,而不是編寫資料庫連線或處理異常等基本功能。此外,如果您有Java方面的經驗,您可以快速入門。這些框架都使用相同的語法,使用相似的術語、範例和概念。

Play: Reactive Web and Mobile Framework for Highly Scalable Java Applications

Play框架可以為桌面和移動介面構建輕量級的、web友好的Java和Scala應用程式。Play是一個非常受歡迎的框架,被領英(LinkedIn)、三星(Samsung)、沃爾瑪(Walmart)、衛報(Guardian)、威瑞森(Verizon)等公司使用。

Play經常與其他程式語言的強大web框架相比較,比如Ruby的Ruby on Rails框架,Python的Django框架。實際上,Play是一個獨特的Java框架,因為它不依賴於Java EE標準。相反,它打算消除傳統Java web開發的所有不便,比如開發週期緩慢和配置過多。它儘可能地類似於指令碼語言的web框架(PHP、Python、Ruby等)。

在底層,Play構建在Akka工具包之上,該工具包簡化了在Java虛擬機器上建立併發和分散式應用程式。因此,Play使用了一個完全非同步的模型,可以帶來更好的可擴充套件性,特別是因為它還遵循無狀態原則。

Play框架通過提供熱程式碼過載、約定優於配置以及瀏覽器中的錯誤訊息等特性,將開發人員的工作效率放在首位。此外,它是一個反應系統,它遵循現代的系統架構(響應性、彈性、彈性和訊息驅動)來實現更靈活和容錯的結果。

PrimeFaces: UI Framework for Java EE and JavaServer Faces

PrimeFaces是一個流行的web框架,用於為Java EE和JavaServer Faces(見上面)應用程式建立輕量級使用者介面。

PrimeFaces庫確實是輕量級的。它打包為一個JAR檔案,需要零配置,並且沒有任何依賴項。通過提供豐富的元件集(100 )、內建的面板框架和預先設計的主題和佈局,它允許您為Java應用程式建立使用者介面。由於PrimeFaces構建在JavaServer Faces之上,它繼承了一些特性,比如快速應用程式開發。您還可以向任何Java專案新增框架。

在PrimeFaces網站上,你可以找到一個很好的展示所有的早期元件、模板和主題的展示。這些元件帶有相關的程式碼片段,您可以快速地將它們複製/貼上到應用程式中,或者在必要時對它們進行調整。例如,這裡有一個水平的mega選單,允許您一起顯示根項的子選單。

PrimeFaces也有一個很棒的主題設計器,這是一個基於sassbased的主題引擎,有超過500個變數、一個示例主題和字型圖示。而且,如果你不想自己構建一個主題,你也可以下載一個社群主題或者購買一個高階的主題畫廊。

Spark Framework: Micro Framework for Web Apps and REST APIs

Spark框架是Java和Kotlin程式語言的一個微型框架和領域專用語言。Kotlin也在JVM上執行,它與Java的互操作性是100%的。使用Spark,您可以輕鬆地開發web應用程式、微服務和REST api。

微框架最初出現在Ruby和PHP等指令碼語言中,由於專注於開發速度和簡單性,很快獲得了廣泛的關注。Spark受到Sinatra為Ruby開發的web應用框架的啟發,並於2011年首次釋出。它不是MVC框架,但它可以讓你隨心所欲地構建你的應用程式。與大多數微框架一樣,它有一個小的程式碼庫,需要最少的配置,並且不需要編寫太多的樣板程式碼。

事實上,您可以在幾分鐘內啟動Spark框架並執行。預設情況下,它在嵌入框架的Jetty web伺服器上執行。但是,您也可以在其他Java web伺服器上使用它。根據Spark自己的調查,超過50%的使用者使用該框架建立REST api,這可以被視為它最流行的用例。Spark還支援高通訊量的web應用程式,每天服務超過10,000個使用者。

Spring Framework: Enterprise-level Java Application Framework

Spring框架可能是最知名的Java框架,擁有巨大的生態系統和活躍的社群。它允許您構建企業級Java應用程式、web服務和微服務。

Spring框架最初是一個依賴注入工具,但是,多年來,它已經發展成為一個全面的應用程式框架。它為您提供了一個包含所有內容的程式設計和配置模型,該模型支援通用任務,如建立資料庫連線或處理異常。除了Java之外,您還可以與Kotlin和Groovy一起使用這個框架,它們都在Java虛擬機器上執行。

Spring框架利用了控制反轉(IoC)軟體設計原則,根據該原則,框架控制定製的程式碼(而不是傳統的程式設計,將自定義程式碼呼叫到處理通用任務的其他庫中)。因此,您可以為您的Spring應用程式建立鬆散耦合的模組。

儘管Spring框架非常適合構建企業級Java應用程式,但它確實有一條陡峭的學習曲線。這是因為它是一個廣泛的框架,它打算為可能出現在企業級應用程式中的每個任務提供解決方案,並且還支援許多不同的平臺。因此,配置、設定、構建和部署過程都需要多個您可能不希望處理的步驟,尤其是在處理較小的專案時。Spring Boot(與Spring框架不同)是這個問題的解決方案,因為它允許您更快地設定Spring應用程式,配置更少。

Struts: MVC Framework for Enterprise-level Java Applications

Struts是由Apache Software Foundation維護和開發的全功能Java web應用程式框架。與Spring框架相比,它是一個擁有龐大社群的堅實平臺。Struts允許您建立企業級Java應用程式,隨著時間的推移,這些應用程式很容易維護。

它遵循MVC軟體設計模式,並且有一個基於外掛的體系結構。外掛使擴充套件框架以適應不同的專案需求成為可能。Struts外掛是基本的JAR包。因此,它們是可移植的,您也可以將它們新增到應用程式的類路徑中。一些外掛與框架繫結(JSON外掛、REST外掛、配置瀏覽器外掛等),而您可以從第三方源新增其他外掛。

您可以將Struts與其他Java框架整合在一起,以執行不構建到平臺中的任務。例如,可以使用Spring外掛進行依賴注入,或者使用Hibernate外掛進行物件關係對映。Struts還允許您使用不同的客戶端技術來構建應用程式的前端,例如javascript頁面或具有角度的HTML。

但是,如果您希望建立可以在前端呈現的伺服器端元件,那麼Struts可能不是最好的選擇。相反,您應該檢視具有不同架構的框架,如Tapestry或Wicket(請參閱下面的兩個框架)。另外,請注意,由於您仍然需要注意一些關鍵的安全漏洞,Struts最近受到了負面影響。

Tapestry: Component-oriented Framework for Highly Scalable Apps

Tapestry是一個基於元件的Java框架,可以建立可伸縮的web應用程式。它對可重用元件的關注使它在架構上類似於JavaServer Faces和Wicket框架。與Struts一樣,Tapestry也是Apache軟體基金會的一個專案。

可以將Tapestry頁面和元件編寫為普通的舊Java物件(pojo)。因此,您可以從框架訪問整個Java生態系統。除了Java, Tapestry還支援Groovy和Scala,並與其他Java框架(如Hibernate和Spring)整合。Tapestry已經在設計中考慮到了效能。因此,它為您提供了動態類過載、異常報告、Ajax支援以及內建元件和模板等特性。

Tapestry也是一個開發人員友好的框架。它內建了促進測試驅動開發(TDD)的實用工具,並支援Selenium測試框架。Tapestry在單個伺服器和伺服器叢集上可以很好地伸縮。使用Tapestry構建的應用程式在瀏覽器中執行得很快,因為它遵循了許多最佳實踐,比如客戶端快取、對併發執行緒的支援、JavaScript聚合和壓縮、整合GZip內容壓縮等等。

Vaadin: Web Application Framework With a Focus on UX, Accessibility, and Mobile

Vaadin為您提供了一個簡化Java開發的平臺。它允許您構建以效能、使用者體驗和可訪問性為重點的可定製元件的web應用程式。

關於Vaadin最有趣的事情是它的最新版本(就在幾天前,也就是2018年6月)是如此的重要以至於連主要的媒體都報道了它。Vaadin 10以一種全新的方式接近web應用程式開發:它使開發人員能夠直接從Java虛擬機器訪問DOM。在新版本中,Vaadin團隊將之前的單片框架分為兩部分。它有一個名為Vaadin Flow的輕量級Java框架,用於處理路由和伺服器-客戶端通訊,以及一組在使用者瀏覽器中執行的UI元件。

這些元件是移動優先的,遵循最新的web和可訪問性標準;它們是基於Web元件標準構建的。您可以將Vaadin元件與任何前端框架(如React、angle或Vue)一起使用。建立者們還推薦它們作為漸進式Web應用的構建模組。您可以基於Vaadin元件構建您自己的主題,或者使用Vaadin的兩個預定義主題:Lumo(預設)和材料。

Vaadin流為您提供了一個高階Java API來管理應用程式的所有技術方面,從通過WebSockets進行的伺服器-客戶端自動通訊到資料繫結。隨著流在JVM上執行,您可以訪問整個Java生態系統。例如,您可以使用Spring Boot執行應用程式。Flow還允許您在Kotlin或Scala中編寫應用程式。

Vert.x: Polyglot Event-driven Application Framework for the Java Virtual Machine

Vert.x是在Java虛擬機器上執行的一個多語言框架。它允許您用程式語言編寫應用程式,如Java、JavaScript、Groovy、Ruby、Scala和Kotlin。它的事件驅動的體系結構導致應用程式能夠很好地伸縮,即使使用最少的硬體資源。

Vert.x是由Eclipse Foundation開發和維護的,Eclipse Foundation最著名的專案是用於Java開發的Eclipse IDE。而且,誰會比Eclipse的建立者更瞭解Java呢?綠色的“x”。x是它的多語言性質,意思是您可以用幾種不同的語言編寫有效的程式碼。它為每一種受支援的程式語言提供慣用api。

Vert.x是一個事件驅動的、非阻塞的框架,它可以使用最少的執行緒來處理大量的concurrency。綠色。x也是相當輕量級的,核心框架僅重約650 kb。它有一個模組化的架構,允許你只使用你需要的模組,這樣你的應用程式就可以儘可能的靈活。綠色。如果您想構建輕量級、高度可伸縮的微服務,那麼x是一個理想的選擇。

Wicket: Component-based Web Application Framework for Purists

Wicket是一個基於元件的web應用程式框架,類似於JavaServer Faces和Tapestry。它允許您使用純Java和HTML程式碼編寫優雅、使用者友好的應用程式。該框架由Apache Software Foundation維護,就像Struts和Tapestry一樣。

由於Wicket是一個基於元件的框架,所以Wicket應用程式由可重用的頁面和元件(如影象、按鈕、連結、表單等)組成。Wicket應用程式的程式設計以pojo為中心,因此元件也是具有封裝和繼承等物件導向特性的普通Java物件。元件被打包成可重用的包,因此您可以向它們新增自定義的CSS和JavaScript。

Wicket通過為超過25種語言提供開箱即用的支援,使應用程式、頁面和元件國際化。它內建的Ajax功能允許您實時更新頁面的某些部分,而不需要編寫任何JavaScript程式碼。Wicket也注意安全的URL處理。元件路徑是會話相關的,url不會顯示任何敏感資訊。給大家推薦一下q u n  六七八,二四一,五六三,如果大家對於學習Java有任何問題,學習方法,學習路線,如何學習有效率的問題,可以隨時來諮詢我,或者缺少系統學習資料的,我做這行年頭比較久,自認為還是比較有經驗的,可以幫助大家提出建設性建議