• <ul id="k6mek"><pre id="k6mek"></pre></ul>
      <ul id="k6mek"></ul>
      <ul id="k6mek"></ul>
    • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
    • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
      <th id="k6mek"></th>
    • <samp id="k6mek"></samp>
    • 開(kāi)發(fā)大型項(xiàng)目必備 98%公司都在用的十佳 Java Web 應(yī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)用程序的開(kāi)發(fā)和配置提供了有用的工具箱。擴(kuò)展性方面, Spring MVC 也以插件多而出名,大量?jī)?yōu)秀插件可供選擇,如SOAP 服務(wù)、REST API 和安全認(rèn)證。


      優(yōu)點(diǎn):

      1. 強(qiáng)大的模塊化功能,代碼可讀性高;

      2. 可以通過(guò) POJO (Plain Ordinary Java Object,簡(jiǎn)單的Java對(duì)象)對(duì)測(cè)試數(shù)據(jù)進(jìn)行簡(jiǎn)單的注入;

      3. 可以靈活使用DI(DependencyInjection,依賴注入,或者叫控制反轉(zhuǎn));

      4. 不同模塊間是低耦合的(上面四點(diǎn)優(yōu)點(diǎn)歸根結(jié)底還是耦合度低)。


      缺點(diǎn):

      1. 對(duì)于新手來(lái)說(shuō),實(shí)現(xiàn)的難度比較大;

      2. 學(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):

      1. 由于 JSF 集成在 JavaEE 中,對(duì)于使用 IDE 的開(kāi)發(fā)人員來(lái)說(shuō)非常方便。


      缺點(diǎn):

      1. 入門門檻比較高,如果沒(méi)有 Java Web 的開(kāi)發(fā)經(jīng)歷很難完整理解 JSF。


      第三,Struts。Struts 是 Apache 軟件基金會(huì)(ASF)贊助的一個(gè)開(kāi)源項(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è)開(kāi)源社區(qū)的共同努力下,Struts 才有了今天的影響。當(dāng)然,Struts 常常被詬病為“萬(wàn)年漏洞王”,去年國(guó)內(nèi)還因?yàn)樾侣┒呆[的沸沸揚(yáng)揚(yáng),但仍然不能否定其是一個(gè)強(qiáng)大易用的框架。


      優(yōu)點(diǎn):

      1. 原生支持I-18-N(即國(guó)際化,其來(lái)源是英文單詞 internationalization 的首末字符i和n,18為中間的字符數(shù));

      2. 便捷的數(shù)據(jù)有效性驗(yàn)證和身份驗(yàn)證;

      3. 支持模塊化開(kāi)發(fā)和集成插件。


      缺點(diǎn):

      1. 靈活性不足;

      2. 安全性有待提高。

        第四,Hibernate ORM?也是一個(gè)不能被忽略的優(yōu)秀框架, 屬于使用 GNU 通用公共許可證發(fā)行的自由開(kāi)源軟件。Hibernate 是一套對(duì)象關(guān)系映射解決方案,能夠建立面向?qū)ο竽P团c關(guān)系數(shù)據(jù)模型的映射。Hibernate 對(duì) JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使 Java 開(kāi)發(fā)人員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。


        優(yōu)點(diǎn):

        1. 移植性好,只需要修改極少量的代碼修改實(shí)現(xiàn)與其他數(shù)據(jù)庫(kù)通信;

        2. 數(shù)據(jù)庫(kù)不敏感,通吃MySQL, DB2 和 Oracle等主流數(shù)據(jù)庫(kù);

        3. 優(yōu)秀的緩存機(jī)制(session緩存,二級(jí)緩存,查詢緩存),對(duì)于那些改動(dòng)不大且經(jīng)常使用的數(shù)據(jù),可以將它們放到緩存中,不必在每次使用時(shí)都去查詢數(shù)據(jù)庫(kù),緩存機(jī)制對(duì)提升性能大有裨益;

        4. 延遲加載(只有等系統(tǒng)需要使用集合屬性時(shí)才從數(shù)據(jù)庫(kù)裝載關(guān)聯(lián)的數(shù)據(jù))。


        缺點(diǎn):

        1. 一旦斷電,所有未存儲(chǔ)就會(huì)丟失;

        2. 重啟非常慢。


      3. 第五,GWT(Google Web Toolki)?是一個(gè)前端使用 JavaScript,后端使用 Java 的 AJAX 框架,以 Apache 許可證2.0版本開(kāi)放源碼。GWT 通過(guò)編譯器將 Java 代碼編譯成JavaScript,可以讓開(kāi)發(fā)人員只使用 Java 就可以快速開(kāi)發(fā)維護(hù)復(fù)雜但高性能的 JavaScript ,借此減輕開(kāi)發(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):

        1. 入門容易;

        2. 特別適合應(yīng)用;在想要通過(guò)增加客戶端負(fù)載從而減少服務(wù)器端負(fù)載,進(jìn)而提升響應(yīng)速度的web應(yīng)用程序;

        3. 借助各種各樣的JavaScript庫(kù),開(kāi)發(fā)人員可以充分利用GWT的能力;

        4. 內(nèi)置IDE能夠直接重構(gòu)Java密文/代碼;

        5. 由Google負(fù)責(zé)開(kāi)發(fā),前景光明。


        缺點(diǎn):

        1. GWT是一個(gè)快速迭代的項(xiàng)目,版本太多,可能沒(méi)法知道所有接口和方法;

        2. 編譯器執(zhí)行效率比較慢;

        3. 定義結(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比較友好,開(kāi)發(fā)人員可以通過(guò)文本編輯器和瀏覽器直接進(jìn)行修改。此外,盡管它是無(wú)狀態(tài)的,但它的規(guī)模是可以預(yù)見(jiàn)的??梢哉f(shuō),Play 是為了因應(yīng)現(xiàn)代移動(dòng)和網(wǎng)絡(luò)應(yīng)用的需要而誕生的。


        優(yōu)點(diǎn):

        1. 極大地提高了開(kāi)發(fā)人員的生產(chǎn)率;

        2. 配置、模板和java代碼的更改可以快速完成重載;

        3. Play是在Netty基礎(chǔ)上設(shè)計(jì)的,支持異步I/O;

        4. 它是開(kāi)源的;

        5. 由Zenexity公司和Lightbend公司提供商業(yè)支持;

        6. Play可以在運(yùn)行時(shí)處理錯(cuò)誤。


        缺點(diǎn):

        1. Play 2基本上是對(duì)Play 1的重寫,比Python3.X和Python2.X的差距大多了,想想Python就知道了;

        2. 它是圍繞異步I/O構(gòu)建的,你可能會(huì)得到一個(gè)不知名的內(nèi)部類;

        3. 無(wú)論是Play框架還是Akka的中文資料少之又少。

        第七,Vaadin?是一個(gè) Apache 許可的開(kāi)源 Java web 應(yīng)用程序項(xiàng)目,并擁有一個(gè)活躍的社區(qū)(https://vaadin.com/forum)。用 Vaadin 開(kāi)發(fā)的瀏覽器應(yīng)用界面可以達(dá)到和桌面應(yīng)用類似的效果,但和 Flash 、Silverlight 不同的是,Vaddin 應(yīng)用無(wú)需在瀏覽器上安裝任何插件。它支持純Java開(kāi)發(fā)環(huán)境,開(kāi)發(fā)人員無(wú)需深入了解 HTML,XML 或是JavaScipt。如果你曾經(jīng)使用 Java 開(kāi)發(fā)過(guò) Swing,SWT 等應(yīng)用,可以非常容易開(kāi)始使用 Vaddin 開(kāi)發(fā) Web 應(yīng)用。


        優(yōu)點(diǎn):

        1. 只需要在服務(wù)器端編程;

        2. 支持布局、偵聽(tīng)器和組件類型;

        3. 支持各類插件;

        4. 可以很方便地和Spring框架集成。


        缺點(diǎn):

        1. 不支持多窗口;

        2. 自動(dòng)創(chuàng)建的JS代碼的不夠精簡(jiǎn)。

        第八,Grails基于 Groovy 編程語(yǔ)言,是一個(gè)堅(jiān)持己見(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):

        1. 處理中小型項(xiàng)目的理想工具;

        2. 提供一個(gè)快速的開(kāi)發(fā)周期;

        3. 提供豐富的插件;

        4. 文檔簡(jiǎn)單易懂的;

        5. 安裝過(guò)程很簡(jiǎn)單,新手也可以在短時(shí)間內(nèi)構(gòu)建應(yīng)用程序;

        6. GORM(Grails ObjectRelational Mapping,Grails對(duì)象關(guān)系映射)的配置簡(jiǎn)單;

        7. 管理CSS簡(jiǎn)單;

        8. 動(dòng)態(tài)配置特性,無(wú)需重新啟動(dòng)服務(wù)器即可更改配置。


        缺點(diǎn):

        1. 依賴JVM運(yùn)行環(huán)境;

        2. 多線程時(shí)候有時(shí)可能會(huì)有問(wèn)題。

        第九,Wicket?又稱 Apache Wicket,一看這個(gè)名字,又是一個(gè) Apache 基金會(huì)旗下的開(kāi)源框架了。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):

        1. 代碼是用Java編寫的;

        2. 沒(méi)有XML配置文件;

        3. 沒(méi)有返回鍵的問(wèn)題;

        4. 是一種簡(jiǎn)單Java對(duì)象為中心的編程;

        5. 測(cè)試比較容易。


        缺點(diǎn):

        1. 發(fā)展前景比較不明確;

        2. 基于事件的設(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):

        1. 設(shè)置容易;

        2. Vert.x容器里強(qiáng)大的內(nèi)核線程;

        3. 為異步提供簡(jiǎn)單的方法和對(duì)象。


        缺點(diǎn):

        1. ?一些硬件可能無(wú)法執(zhí)行;

        2. 支持語(yǔ)言太多,選擇一門恰當(dāng)?shù)恼Z(yǔ)言會(huì)讓人頭疼會(huì)。



      返回觀點(diǎn)列表
      本文標(biāo)簽:

      相關(guān)專題

      體驗(yàn)從溝通開(kāi)始,讓我們聆聽(tīng)您的需求!

      開(kāi)始您的數(shù)字化品牌體驗(yàn)! 0571-85815193 期待您的來(lái)電!

      [ 網(wǎng)站建設(shè)×品牌官網(wǎng)設(shè)計(jì)×大策略營(yíng)銷門戶×微信小程序開(kāi)發(fā)×微信公眾號(hào)開(kāi)發(fā)]

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      免費(fèi)獲取項(xiàng)目策劃

      項(xiàng)目開(kāi)發(fā)部產(chǎn)品經(jīng)理

      項(xiàng)目開(kāi)發(fā)部產(chǎn)品經(jīng)理

      免費(fèi)獲取項(xiàng)目策劃

      我們正使用 cookies 來(lái)改善您的訪問(wèn)體驗(yàn)

      派迪科技非常重視您的個(gè)人隱私,當(dāng)您訪問(wèn)我們的網(wǎng)站www.bmwdream.cn時(shí),請(qǐng)同意使用所有cookies 。

      如果您想詳細(xì)了解我們?nèi)绾问褂胏ookies請(qǐng)?jiān)L問(wèn)我們的 《隱私政策》

      Cookie 偏好

      如果您想詳細(xì)了解我們?nèi)绾问褂胏ookie請(qǐng)?jiān)L問(wèn)我們的 《隱私政策》

      管理cookie偏好

      基本 cookies

      始終允許

      這些 cookies 是網(wǎng)站運(yùn)行所必需的,不能在我們的系統(tǒng)中關(guān)閉。它們通常僅針對(duì)您所做的相當(dāng)于服務(wù)請(qǐng)求的操作而設(shè)置,例如設(shè)置您的隱私首選項(xiàng)、登錄或填寫表格。您可以將瀏覽器設(shè)置為阻止或提醒您有關(guān)這些 cookies 的信息,但網(wǎng)站的某些部分將無(wú)法運(yùn)行。這些 cookies 不存儲(chǔ)任何個(gè)人身份信息。

      性能 cookies

      始終允許
      這些 cookies 使我們能夠計(jì)算訪問(wèn)量和流量來(lái)源,以便我們可以衡量和改進(jìn)我們網(wǎng)站的性能。它們幫助我們了解哪些頁(yè)面受歡迎和不受歡迎,并了解訪問(wèn)者如何在網(wǎng)站上移動(dòng)。這些 cookies 收集的所有信息都是匯總的,而且是匿名的。如果您不允許這些 cookies,我們將不知道您何時(shí)訪問(wèn)了我們的網(wǎng)站,也無(wú)法監(jiān)控其性能。

      功能性 cookies

      這些 cookies 收集信息用于分析和個(gè)性化您的定向廣告體驗(yàn)。您可以使用此撥動(dòng)開(kāi)關(guān)來(lái)行使選擇不獲取個(gè)人信息的權(quán)利。如果您選擇關(guān)閉,我們將無(wú)法向您提供個(gè)性化廣告,也不會(huì)將您的個(gè)人信息交給任何第三方。

      定位 Cookies

      這些 cookies 可能由我們的廣告合作伙伴通過(guò)我們的網(wǎng)站設(shè)置。這些公司可能會(huì)使用它們來(lái)建立您的興趣檔案,并在其他網(wǎng)站上向您展示相關(guān)廣告。它們不直接存儲(chǔ)個(gè)人信息,而是基于唯一標(biāo)識(shí)您的瀏覽器和互聯(lián)網(wǎng)設(shè)備。如果您不允許使用這些 cookie,您將體驗(yàn)到較少針對(duì)性的廣告。
      • <ul id="k6mek"><pre id="k6mek"></pre></ul>
        <ul id="k6mek"></ul>
        <ul id="k6mek"></ul>
      • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
      • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
        <th id="k6mek"></th>
      • <samp id="k6mek"></samp>