開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

眾所周知,工欲善其事,必先利其器。選擇一個好的 Web 應用框架就像一把稱手的兵器,可以助大家披荊斬棘。

今天就為大家整理了十佳 Java Web 應用框架,並簡單討論一下它們的優缺點。

開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第一,大名鼎鼎的Spring MVC框架。Spring MVC 框架堪稱是一個教科書式的 MVC (模型Model、視圖View和控制器Controller)框架,嚴格組照 MVC 模式要求進行分層設計。經過多年的發展,Spring MVC 已經發展成了一個 Web 應用程序的全能架構。

易用性方面, Spring MVC 為 Web 應用程序的開發和配置提供了有用的工具箱。擴展性方面, Spring MVC 也以插件多而出名,大量優秀插件可供選擇,如SOAP 服務、REST API 和安全認證。

優點:

  1. 強大的模塊化功能,代碼可讀性高;
  2. 可以通過 POJO (Plain Ordinary Java Object,簡單的Java對象)對測試數據進行簡單的注入;
  3. 可以靈活使用DI(DependencyInjection,依賴注入,或者叫控制反轉);
  4. 不同模塊間是低耦合的(上面四點優點歸根結底還是耦合度低)。

缺點:

  1. 對於新手來說,實現的難度比較大;
  2. 學習曲線比較陡峭,即入門比較難。

第二,JSF。它可以說是所有 Java 框架中的與 Java 關係最近的,因為它和Java 都是 Oracle 的嫡系部隊。JSF 也許並算不上最好的 Java 框架,但是由於 Oracle 的加持,JSF 的文檔是最全也最容易找到的。

此外,由於 JSF 已通過 JCP 格式化為 JavaEE 的一部分,所以你只要安裝了 J2EE,就可以無障礙使用 JSF 了。複雜的功能也能用JSF 提供的大量工具和庫來實現。藉助 JSP(Java Server Pages),JSF 還可以支持不同的 Facelets 和 XUL 技術。

優點:

  1. 由於 JSF 集成在 JavaEE 中,對於使用 IDE 的開發人員來說非常方便。

缺點:

  1. 入門門檻比較高,如果沒有 Java Web 的開發經歷很難完整理解 JSF。

第三,Struts。Struts 是 Apache 軟件基金會(ASF)贊助的一個開源項目,也是基於 MVC 模式進行設計的,但是不像 Spring MVC 那麼嚴格遵守 MVC 模式,經常被視作一種變種。

Struts是通過一系列接口和類來實現某些特定的功能,為 Java 應用提供了網絡框架。與傳統的互聯網功能不同,它可以創建動態響應。眾人拾柴火焰高,在各個開源社區的共同努力下,Struts 才有了今天的影響。當然,Struts 常常被詬病為“萬年漏洞王”,去年國內還因為新漏洞鬧的沸沸揚揚,但仍然不能否定其是一個強大易用的框架。

優點:

  1. 原生支持I-18-N(即國際化,其來源是英文單詞 internationalization 的首末字符i和n,18為中間的字符數);
  2. 便捷的數據有效性驗證和身份驗證;
  3. 支持模塊化開發和集成插件。

缺點:

  1. 靈活性不足;
  2. 安全性有待提高。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第四,Hibernate ORM 也是一個不能被忽略的優秀框架, 屬於使用 GNU 通用公共許可證發行的自由開源軟件。Hibernate 是一套對象關係映射解決方案,能夠建立面向對象模型與關係數據模型的映射。Hibernate 對 JDBC 進行了非常輕量級的對象封裝,使 Java 開發人員可以隨心所欲的使用對象編程思維來操縱數據庫。

優點:

  1. 移植性好,只需要修改極少量的代碼修改實現與其他數據庫通信;
  2. 數據庫不敏感,通吃MySQL, DB2 和 Oracle等主流數據庫;
  3. 優秀的緩存機制(session緩存,二級緩存,查詢緩存),對於那些改動不大且經常使用的數據,可以將它們放到緩存中,不必在每次使用時都去查詢數據庫,緩存機制對提升性能大有裨益;
  4. 延遲加載(只有等系統需要使用集合屬性時才從數據庫裝載關聯的數據)。

缺點:

  1. 一旦斷電,所有未存儲就會丟失;
  2. 重啟非常慢。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第五,GWT(Google Web Toolki) 是一個前端使用 JavaScript,後端使用 Java 的 AJAX 框架,以 Apache 許可證2.0版本開放源碼。GWT 通過編譯器將 Java 代碼編譯成JavaScript,可以讓開發人員只使用 Java 就可以快速開發維護複雜但高性能的 JavaScript ,藉此減輕開發人員負擔。

除了一些本地庫之外,都可以用集成的 GWT Ant 將 Java 源碼構建成 JavaScript。 GWT已經實現了大量代碼跨平臺複用,包括跨瀏覽器移植性、國際化、UI抽象化、書籤、歷史管理、遠程程序調用和異步的代碼。

優點:

  1. 入門容易;
  2. 特別適合應用;在想要通過增加客戶端負載從而減少服務器端負載,進而提升響應速度的web應用程序;
  3. 藉助各種各樣的JavaScript庫,開發人員可以充分利用GWT的能力;
  4. 內置IDE能夠直接重構Java密文/代碼;
  5. 由Google負責開發,前景光明。

缺點:

  1. GWT是一個快速迭代的項目,版本太多,可能沒法知道所有接口和方法;
  2. 編譯器執行效率比較慢;
  3. 定義結構的時候必須使用專用的方法來執行。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第六,Play 框架是一種基於無狀態(stateless)、Web 友好和輕量級的架構,支持 Scala 和Java兩種語言。它構建在 Akka (一個用 Scala 編寫的分佈式應用框架)上並利用了 Akka 頂部設計的完全異步模型,為可高度伸縮的應用程序分配最小和可預測的資源(比如線程數、內存和CPU)。

Play比較友好,開發人員可以通過文本編輯器和瀏覽器直接進行修改。此外,儘管它是無狀態的,但它的規模是可以預見的。可以說,Play 是為了因應現代移動和網絡應用的需要而誕生的。

優點:

  1. 極大地提高了開發人員的生產率;
  2. 配置、模板和java代碼的更改可以快速完成重載;
  3. Play是在Netty基礎上設計的,支持異步I/O;
  4. 它是開源的;
  5. 由Zenexity公司和Lightbend公司提供商業支持;
  6. Play可以在運行時處理錯誤。

缺點:

  1. Play 2基本上是對Play 1的重寫,比Python3.X和Python2.X的差距大多了,想想Python就知道了;
  2. 它是圍繞異步I/O構建的,你可能會得到一個不知名的內部類;
  3. 無論是Play框架還是Akka的中文資料少之又少。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第七,Vaadin 是一個 Apache 許可的開源 Java web 應用程序項目,並擁有一個活躍的社區(https://vaadin.com/forum)。用 Vaadin 開發的瀏覽器應用界面可以達到和桌面應用類似的效果,但和 Flash 、Silverlight 不同的是,Vaddin 應用無需在瀏覽器上安裝任何插件。它支持純Java開發環境,開發人員無需深入瞭解 HTML,XML 或是JavaScipt。如果你曾經使用 Java 開發過 Swing,SWT 等應用,可以非常容易開始使用 Vaddin 開發 Web 應用。

優點:

  1. 只需要在服務器端編程;
  2. 支持佈局、偵聽器和組件類型;
  3. 支持各類插件;
  4. 可以很方便地和Spring框架集成。

缺點:

  1. 不支持多窗口;
  2. 自動創建的JS代碼的不夠精簡。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第八,Grails基於 Groovy 編程語言,是一個堅持己見、提倡用約定的默認設置代替複雜配置的框架。它與 JVM 很好地融合,能夠在提供強大功能的同時保持高效,包括異步編程、編譯時元編程、運行時和領域專用語言(DSL,專注於某個應用程序領域的計算機語言)。Grails可以透明地、無縫地與 Java、Java EE 容器和 JVM 進行互操作和集成。

優點:

  1. 處理中小型項目的理想工具;
  2. 提供一個快速的開發週期;
  3. 提供豐富的插件;
  4. 文檔簡單易懂的;
  5. 安裝過程很簡單,新手也可以在短時間內構建應用程序;
  6. GORM(Grails ObjectRelational Mapping,Grails對象關係映射)的配置簡單;
  7. 管理CSS簡單;
  8. 動態配置特性,無需重新啟動服務器即可更改配置。

缺點:

  1. 依賴JVM運行環境;
  2. 多線程時候有時可能會有問題。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第九,Wicket 又稱 Apache Wicket,一看這個名字,又是一個 Apache 基金會旗下的開源框架了。Wicket 是一個基於組件的輕量級的 Java 應用程序框架。Wicket 使用遵循 XHTML 標準的命名空間來支持 HTML 模板。其特點在於對 Html 和 Java代碼進行了有效的分離(有利於程序員和美工的合作),基於規則的配置(減少了 XML 等配置文件的使用)。

優點:

  1. 代碼是用Java編寫的;
  2. 沒有XML配置文件;
  3. 沒有返回鍵的問題;
  4. 是一種簡單Java對象為中心的編程;
  5. 測試比較容易。

缺點:

  1. 發展前景比較不明確;
  2. 基於事件的設計可能增加代碼混亂的幾率。
開發大型項目必備 98%公司都在用的十佳 Java Web 應用框架

第十,Vert.x框架是一個基於 JVM、輕量級、高性能的應用框架,基於事件驅動和異步,使用極少的核心線程裡佔用最小限度的硬件資源處理大量的高併發。Vert.x支持多種語言,例如Ceylon、Ruby、Groovy、JavaScript和Java,因此可以根據項目特性和團隊技能靈活選擇語言。

優點:

  1. 設置容易;
  2. Vert.x容器裡強大的內核線程;
  3. 為異步提供簡單的方法和對象。

缺點:

  1. 一些硬件可能無法執行;
  2. 支持語言太多,選擇一門恰當的語言會讓人頭疼會。

本文簡要介紹了當前 10 個最主流的 Java Web 框架的各自特性和優缺點。希望能對大家未來的學習和工作有所幫助。

今日福利:JavaEE 框架學習資源大禮包 讓你走上巔峰

  • avaEE開發之Struts2框架
  • hibernate框架開發
  • Spring框架
  • SSH框架之綜合項目開發全
  • javaScript 高級框架設計
  • ……

完整資源獲取方式

關注“黑馬程序員”,回覆“框架“即可獲取


分享到:


相關文章: