
新聞動態
用文字傳播思想
用行動感動自己

第一,大名鼎鼎的Spring MVC框架。Spring MVC 框架堪稱是一個教科書式的 MVC (模型Model、視圖View和控制器Controller)框架,嚴格組照 MVC 模式要求進行分層設計。經過多年的發展,Spring MVC 已經發展成了一個 Web 應用程序的全能架構。 易用性方面, Spring MVC 為 Web 應用程序的開發和配置提供了有用的工具箱。擴展性方面, Spring MVC 也以插件多而出名,大量優秀插件可供選擇,如SOAP 服務、REST API 和安全認證。 優點: 強大的模塊化功能,代碼可讀性高; 可以通過 POJO (Plain Ordinary Java Object,簡單的Java對象)對測試數據進行簡單的注入; 可以靈活使用DI(DependencyInjection,依賴注入,或者叫控制反轉); 不同模塊間是低耦合的(上面四點優點歸根結底還是耦合度低)。 缺點: 對于新手來說,實現的難度比較大; 學習曲線比較陡峭,即入門比較難。 第二,JSF。它可以說是所有 Java 框架中的與 Java 關系最近的,因為它和Java 都是 Oracle 的嫡系部隊。JSF 也許并算不上最好的 Java 框架,但是由于 Oracle 的加持,JSF 的文檔是最全也最容易找到的。 此外,由于 JSF 已通過 JCP 格式化為 JavaEE 的一部分,所以你只要安裝了 J2EE,就可以無障礙使用 JSF 了。復雜的功能也能用JSF 提供的大量工具和庫來實現。借助 JSP(Java Server Pages),JSF 還可以支持不同的 Facelets 和 XUL 技術。 優點: 由于 JSF 集成在 JavaEE 中,對于使用 IDE 的開發人員來說非常方便。 缺點: 入門門檻比較高,如果沒有 Java Web 的開發經歷很難完整理解 JSF。 第三,Struts。Struts 是 Apache 軟件基金會(ASF)贊助的一個開源項目,也是基于 MVC 模式進行設計的,但是不像 Spring MVC 那么嚴格遵守 MVC 模式,經常被視作一種變種。 Struts是通過一系列接口和類來實現某些特定的功能,為 Java 應用提供了網絡框架。與傳統的互聯網功能不同,它可以創建動態響應。眾人拾柴火焰高,在各個開源社區的共同努力下,Struts 才有了今天的影響。當然,Struts 常常被詬病為“萬年漏洞王”,去年國內還因為新漏洞鬧的沸沸揚揚,但仍然不能否定其是一個強大易用的框架。 優點: 原生支持I-18-N(即國際化,其來源是英文單詞 internationalization 的首末字符i和n,18為中間的字符數); 便捷的數據有效性驗證和身份驗證; 支持模塊化開發和集成插件。 缺點: 靈活性不足; 安全性有待提高。 第四,Hibernate ORM 也是一個不能被忽略的優秀框架, 屬于使用 GNU 通用公共許可證發行的自由開源軟件。Hibernate 是一套對象關系映射解決方案,能夠建立面向對象模型與關系數據模型的映射。Hibernate 對 JDBC 進行了非常輕量級的對象封裝,使 Java 開發人員可以隨心所欲的使用對象編程思維來操縱數據庫。 優點: 移植性好,只需要修改極少量的代碼修改實現與其他數據庫通信; 數據庫不敏感,通吃MySQL, DB2 和 Oracle等主流數據庫; 優秀的緩存機制(session緩存,二級緩存,查詢緩存),對于那些改動不大且經常使用的數據,可以將它們放到緩存中,不必在每次使用時都去查詢數據庫,緩存機制對提升性能大有裨益; 延遲加載(只有等系統需要使用集合屬性時才從數據庫裝載關聯的數據)。 缺點: 一旦斷電,所有未存儲就會丟失; 重啟非常慢。 第五,GWT(Google Web Toolki) 是一個前端使用 JavaScript,后端使用 Java 的 AJAX 框架,以 Apache 許可證2.0版本開放源碼。GWT 通過編譯器將 Java 代碼編譯成JavaScript,可以讓開發人員只使用 Java 就可以快速開發維護復雜但高性能的 JavaScript ,借此減輕開發人員負擔。 除了一些本地庫之外,都可以用集成的 GWT Ant 將 Java 源碼構建成 JavaScript。 GWT已經實現了大量代碼跨平臺復用,包括跨瀏覽器移植性、國際化、UI抽象化、書簽、歷史管理、遠程程序調用和異步的代碼。 優點: 入門容易; 特別適合應用;在想要通過增加客戶端負載從而減少服務器端負載,進而提升響應速度的web應用程序; 借助各種各樣的JavaScript庫,開發人員可以充分利用GWT的能力; 內置IDE能夠直接重構Java密文/代碼; 由Google負責開發,前景光明。 缺點: GWT是一個快速迭代的項目,版本太多,可能沒法知道所有接口和方法; 編譯器執行效率比較慢; 定義結構的時候必須使用專用的方法來執行。 第六,Play 框架是一種基于無狀態(stateless)、Web 友好和輕量級的架構,支持 Scala 和Java兩種語言。它構建在 Akka (一個用 Scala 編寫的分布式應用框架)上并利用了 Akka 頂部設計的完全異步模型,為可高度伸縮的應用程序分配最小和可預測的資源(比如線程數、內存和CPU)。 Play比較友好,開發人員可以通過文本編輯器和瀏覽器直接進行修改。此外,盡管它是無狀態的,但它的規模是可以預見的。可以說,Play 是為了因應現代移動和網絡應用的需要而誕生的。 優點: 極大地提高了開發人員的生產率; 配置、模板和java代碼的更改可以快速完成重載; Play是在Netty基礎上設計的,支持異步I/O; 它是開源的; 由Zenexity公司和Lightbend公司提供商業支持; Play可以在運行時處理錯誤。 缺點: Play 2基本上是對Play 1的重寫,比Python3.X和Python2.X的差距大多了,想想Python就知道了; 它是圍繞異步I/O構建的,你可能會得到一個不知名的內部類; 無論是Play框架還是Akka的中文資料少之又少。 第七,Vaadin 是一個 Apache 許可的開源 Java web 應用程序項目,并擁有一個活躍的社區(https://vaadin.com/forum)。用 Vaadin 開發的瀏覽器應用界面可以達到和桌面應用類似的效果,但和 Flash 、Silverlight 不同的是,Vaddin 應用無需在瀏覽器上安裝任何插件。它支持純Java開發環境,開發人員無需深入了解 HTML,XML 或是JavaScipt。如果你曾經使用 Java 開發過 Swing,SWT 等應用,可以非常容易開始使用 Vaddin 開發 Web 應用。 優點: 只需要在服務器端編程; 支持布局、偵聽器和組件類型; 支持各類插件; 可以很方便地和Spring框架集成。 缺點: 不支持多窗口; 自動創建的JS代碼的不夠精簡。 第八,Grails基于 Groovy 編程語言,是一個堅持己見、提倡用約定的默認設置代替復雜配置的框架。它與 JVM 很好地融合,能夠在提供強大功能的同時保持高效,包括異步編程、編譯時元編程、運行時和領域專用語言(DSL,專注于某個應用程序領域的計算機語言)。Grails可以透明地、無縫地與 Java、Java EE 容器和 JVM 進行互操作和集成。 優點: 處理中小型項目的理想工具; 提供一個快速的開發周期; 提供豐富的插件; 文檔簡單易懂的; 安裝過程很簡單,新手也可以在短時間內構建應用程序; GORM(Grails ObjectRelational Mapping,Grails對象關系映射)的配置簡單; 管理CSS簡單; 動態配置特性,無需重新啟動服務器即可更改配置。 缺點: 依賴JVM運行環境; 多線程時候有時可能會有問題。 第九,Wicket 又稱 Apache Wicket,一看這個名字,又是一個 Apache 基金會旗下的開源框架了。Wicket 是一個基于組件的輕量級的 Java 應用程序框架。Wicket 使用遵循 XHTML 標準的命名空間來支持 HTML 模板。其特點在于對 Html 和 Java代碼進行了有效的分離(有利于程序員和美工的合作),基于規則的配置(減少了 XML 等配置文件的使用)。 優點: 代碼是用Java編寫的; 沒有XML配置文件; 沒有返回鍵的問題; 是一種簡單Java對象為中心的編程; 測試比較容易。 缺點: 發展前景比較不明確; 基于事件的設計可能增加代碼混亂的幾率。 第十,Vert.x框架是一個基于 JVM、輕量級、高性能的應用框架,基于事件驅動和異步,使用極少的核心線程里占用最小限度的硬件資源處理大量的高并發。Vert.x支持多種語言,例如Ceylon、Ruby、Groovy、JavaScript和Java,因此可以根據項目特性和團隊技能靈活選擇語言。 優點: 設置容易; Vert.x容器里強大的內核線程; 為異步提供簡單的方法和對象。 缺點: 一些硬件可能無法執行; 支持語言太多,選擇一門恰當的語言會讓人頭疼會。
