新聞動(dòng)態(tài)
用文字傳播思想
用行動(dòng)感動(dòng)自己


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