天天看點

今年7款最佳Java架構

今年7款最佳Java架構

毫無疑問,Java 是目前最為流行的程式設計語言之一,這裡我們挖掘出了一些比較受歡迎的架構的有效資訊,它們可以減輕全球軟體開發人員的日常工作。

RebelLabs的一項調查顯示,通過線上Java使用者論壇(虛拟JUG)媒體聯盟的調查統計,度最佳Java架構陣容如下:

  資料來源:RebelLabs for Zero TurnAround Inc.

我們不會僅僅基于上面圖示的對比迫使你或讓你草率作出結論,但是我們會給你介紹每個概念的概述,供你分析和對比他們之間的差別,然後根據你的項目選擇最完美的比對。

1.Spring MVC

自從10多年前的第一次釋出之後,SpringMVC老當益壯,繼續保持着領頭羊的地位。在其完全擁抱 MVC架構之後,Spring 不斷的發展與變化着,轉變成了一個功能全面的面向網際網路應用程式的Java架構, 它能提供給軟體工程師的是一個用于web應用程式開發的強大工具集,以及針對安全項目的應用程式配置。作為程式員世界最受歡迎的一員,Spring所擁有有發育良好的生态提供了許許多多的附加選擇: REST API 或者是 SOAP web 服務, 安全(認證和授權、加密)等等。這一選擇的另一個優勢就是大公司的開發者同行們也都在使用這個 Java 架構。是以,如果你有困難想要尋求幫助,他們随時都能給予援手。

優缺點

Spring 高居榜首并不是沒由來的。它能成為最好最知名的Java架構是因為:

簡單的POJO測試資料注入方式。

增強過的子產品化,是以擁有更好的代碼可靠性。

不同子產品之間解耦和。

能靈活運用的依賴注入(DI)。

不管文檔有多少,Spring MVC都可能并非是一個Java開發的新手能掌控的,盡管這并不是架構的一個直接缺陷,但學習曲線真的是有點太陡了。是以,在碰到這個 Java 架構中文檔相對比較缺乏的某些部分時,處理起來是會有點困難的。你找的資訊如果版本不同,興許也會有差異。順便提一句,依據我們的工程師的至上經驗,Spring MVC是我們最喜愛的架構之一。

2.Struts 2

為了更詳細的闡述現代軟體工程師廣泛使用的現有Java架構,我們決定參考Apache的Struts 1後繼版本Struts 2。這個Java架構對于使用建構當代Java EE Web應用程式的工程師來說是一個很好的選擇。Apache軟體基金會為開發人員提供了一個廣泛的工具,用于建立企業級的面向Web的應用程式,開發過程的優化從開始貫徹到結束,還提供後期的維護。如果你還在為高負載系統(如廣播門戶)發愁,這個架構将是你的不二之選。

如果使用Struts 2實作Action類(普通POJO對象),那麼測試編寫的代碼所需的工作量會較少。使用架構API,耦合變得更容易,有助于調整攔截器。

當你問自己為什麼要考慮Struts 2時,一定會想到不必重寫或者不用實作Action類所帶來的極大便利——這些功能它已具備!IT工程師為多個操作建立重複設定代碼不再是一個問題,因為攔截器會處理它。

但是,你可能會因為這個Java架構的重量級而放棄這個架構:有一些程式員發現它不夠靈活。

3.Hibernate

盡管也沒有位列 RebelLabs 的名單當中,但是在讨論最好的 Java 架構時, Hibernate 還是值得一提的。這個 Java 映射架構借助于将持續存在的資料庫通路操作替換為高層次的對象處理功能,來解決對象-關系的不比對問題。每一個企業應用程式的情況都不同,而Hibernate則擁有功能強大的工具套件來幫助背景開發人員對其資料通路層進行微調。這是一個進階的 ORM 架構,你可以用它來在 Java 對象(實體)上進行資料庫操作。利用 Hibernate 緩存來将 Java 環境中的資料持久化到資料庫是一個持久化的概念、

隻要對你寫的代碼做點小修改,Hibernate 就可以幫助你同任何資料庫進行通信, 它彌合對象和關系詞之間的鴻溝。最重要的是:

不管是 Oracle, Db2, 或者是 MySQL, Hibernate 是 DB 獨立的。

緩存機制能對類似的查詢操作進行優化。

支援 N+1 或者懶加載。

盡管有其顯著的優勢,但Hibernate并不允許多次插入操作,也不支援一些 JDBC 能支援的查詢操作。此外,如果是隻有幾個表的小規模的項目,采用這個Java架構也許并不是一個好主意。

4.JSF

作為java EE的一部分,JavaServer Faces被Oracle所支援。雖然這不是一個可以進行快速java開發的最好架構,但它很容易使用,因為Oracle提供了大量文檔。此外,除非你離開java EE環境,JSF不需要任何的外部依賴,而功能非常強大。它擁有豐富的庫和工具(包括一個簡單的使用者界面生成工具),使之成為了一個神奇的魔法棒,無論應用程式可能看起來有多麼複雜,它都可以給予你支援與幫助。

如前所述,JSF是java EE的一個組成部分。是以,開發者可以使用IDE的軟體套件,以及來自業界領先的廠商提供的最高水準的支援。

相反,對于那些之前在網絡開發方面所具有的經驗和技能基礎還不夠牢固的人來說,JavaServer Faces還不太容易了解。

5.Vaadin

當現代開發者建立商業應用程式,并使用GWT渲染終端網頁時,Vaadin稱得上是一個超級流行的架構。Vaadin利用一個衆所周知的基于元件的方法,能夠适應浏覽器的變化,進而減輕了開發商的負擔。它擁有一套擴充的使用者界面元件,以及各種不同的部件和控件,可以讓程式員在任何時候都可以建立一個很酷的應用程式。

通過在java或HTML中的開釋出局,Vaadin提供了可以使用MVC或MVP進行資料綁定的方法。而且,拖放支援以及其他突出的特點簡化了對java應用程式單頁UI的建立。

另一方面,由于Vaadin會向伺服器發送回每一個事件,進而導緻移動應用程式使用者界面的反應遲鈍,這是一個需要考慮的問題。

6.Google Web Toolkit

GWT是另一個免費的java架構,它允許程式員建立和優化複雜的網絡應用程式。GWT的軟體開發工具包包括核心的java API和小部件,建構随後可以編譯成JavaScript的應用程式。

使用谷歌網頁工具包,你就可以通過單一的代碼庫(用java在浏覽器和伺服器端程式設計)來簡化開發和調試的過程。通過與其他技術的簡單內建可以使程式員在網頁中嵌入GWT小部件。能夠自定義部件的另一個好處是可以在GWT的幫助下建立。

然而,如果你是一個網頁設計師,GWT可能不是最好的java架構選擇;因為它對于建立普通的HTML以及後期的動态内容布局沒有什麼幫助。

7.Grails

這個獨特的架構被視為是提升工程師生産效率的動态工具,因為其幹脆的API設計,合理的預設值以及約定架構。與java的無縫內建使得這個架構成為世界上衆多架構中的首選。一系列強大的特性,如基于sping的依賴注入和各式各樣的插件,可以提供建立現代基于web的app的所有需要的東西。

可以快速搭建新項目,腳手架項目可以幫助節省大量寶貴時間。有一個龐大的插件庫可以提供900多個容易安裝的不同插件。抛開Grails的美好,對于一個全棧java開發架構,它的ORM涵蓋了大量的功能,使得它成為相對的重量級軟體。

如何選擇?

在各種各樣的,流行的架構中選擇适當的架構,是難以完成的任務。就像每個公司尋找盈利模式,并依據該模式來創造自己在web端和移動端需要堅守理念一樣,都是非常困難的。

無論你使用什麼架構,謹記如下原則,所選架構需要具備,易于安裝,社群活躍,文檔豐富等特點。

依賴項目類型不同,有時,明智的選擇是隻使用一家公司或組織下的一套架構來解決需求,但通常更有意義的是将重量級架構以輕量級架構替代。