国产精品成人免费视频_91丝袜美腿美女视频网站_国产一区二区三区在线看_亚洲欧美另类中文字幕_在线电影av不卡网址_国产视频丨精品|在线观看_日韩一区二区三区国产_国产欧美va欧美va香蕉在线_热re91久久精品国99热蜜臀_亚洲第一精品电影_久久九九亚洲综合_国产成人综合精品_97视频在线观看网址_精品视频久久久久久_日韩av片免费在线观看_久久精品国产99国产精品澳门

聚集網(jujiwang.com) - 收錄免費分類目錄信息軟文發布網址提交
免費加入

復雜性:JSF的聲明式方法可能會導致對于大型應用程序的復雜性增加。(復雜性尿路感染)

文章編號:11151時間:2024-09-30人氣:


javaServer Faces (JSF) 是一種基于組件的 Java Web 框架,用于構建用戶界面 (UI)。它使用聲明式語法來定義 UI,這與傳統的面向過程編程方法不同。 復雜性

聲明式方法的優點

JSF 的聲明式方法提供了許多優點,包括: 提高開發效率: 通過消除對繁瑣的管道代碼和事件處理程序的需要,聲明式方法可以減少開發時間。 更好的代碼可維護性: 由于 UI 邏輯與底層實現分離,因此聲明式代碼更容易維護和理解。 更高的測試覆蓋率: JSF 的聲明式特性使得為 UI 測試編寫測試更容易,從而提高了整體測試覆蓋率。

聲明式方法的復雜性

聲明式方法也可能導致大型應用程序的復雜性增加。這是因為: 潛在的難以調試性: 在某些情況下,聲明式代碼可能難以調試,因為錯誤和異常可能難以追溯到其根源。 可擴展性限制: 聲明式方法可能限制了應用程序的可擴展性,尤其是當需要定制或擴展 UI 行為時。 復雜性尿路感染 性能開銷: JSF 聲明式語法可能會引入性能開銷,尤其是在處理大型表單或復雜 UI 布局時。

處理復雜性

為了解決 JSF 聲明式方法引入的復雜性,開發人員可以采取以下策略: 分層架構: 將應用程序組織為不同的層,將 UI 層與業務邏輯和數據訪問層分離。 模塊化設計: 將 UI 組件劃分為可重用模塊,使應用程序更容易維護和擴展。 性能優化: 通過使用適當的緩存機制和避免不必要的組件更新,對應用程序的性能進行優化。 使用 JSF 擴展: 利用 JSF 擴展,例如 PrimeFaces 和 RichFaces,它們提供額外的組件和特性,可以幫助提高應用程序的可擴展性和性能。

結論

JSF 的聲明式方法雖然提供了許多優點,但它也可能導致大型應用程序的復雜性增加。通過采用適當的策略,開發人員可以減輕復雜性并創建可維護、可擴展且高性能的 JSF 應用程序。 JSF的聲明式方法可能會導致對于大型應用程序的復雜性增加

富客戶端框架有哪些

富客戶端框架主要有以下幾種:

1. Spring MVC框架

Spring MVC是一種基于Java的Web應用程序框架,廣泛應用于構建富客戶端應用程序。 它提供了強大的功能,如模型-視圖-控制器(MVC)設計模式支持、視圖模板語言集成和Spring的各種便利功能,包括事務管理和安全性控制。 該框架可以使開發者以更低復雜性來開發高性能和可靠的富客戶端應用。

2. JSF框架(JavaServer Faces)

JSF是Java EE平臺的一個規范,用于構建基于Web的用戶界面層應用。 它提供了豐富的組件庫和標簽庫,可以方便地創建用戶界面。 JSF框架也支持事件驅動模型,這使得開發人員能夠更容易地實現富客戶端交互特性。

3. Angular框架

Angular是一個流行的前端JavaScript框架,適用于構建單頁面應用(SPA)。 它提供了強大的數據綁定和依賴注入功能,以及豐富的內置指令和組件模型。 Angular框架可以幫助開發人員創建復雜且響應迅速的富客戶端應用。 由于其結構清晰,適用于大型和復雜的項目,并且是端到端服務的集成棧的核心組成部分之一。 它的測試功能也使得維護和改進復雜應用的維護更加便利。 由于其流行度高、可跨瀏覽器操作并維護簡易的優勢使得開發者更傾向于使用Angular構建富客戶端應用。 除了以上三種常見的框架外,還有其他一些例如React框架等也是常見的富客戶端框架選擇。 每種框架都有其獨特的優點和適用場景,可以根據具體的需求進行選擇。 希望這些信息能對您有所幫助!如您有其他疑問歡迎進一步提問和交流經驗。 希望我們可以共享信息和共同進步交流新技術的發展方向及應用范圍擴展知識儲備。 主要優勢和特性體現在易于管理客戶端應用程序組件化和聲明式編程風格上。

Swing 或 JavaServer Faces:究竟選擇哪一個?

Swing 能否經受住富互聯網應用程序宣傳熱潮的考驗?2006 年 3 月發布J2EE Web 技術已經從一個靜態的內容提供環境迅速發展為一個在內聯網和互聯網上運行的動態業務應用程序的可靠平臺。 Web 的前景體現在,無論您的業務需求如何,瀏覽器都將是您未來唯一需要的客戶端。 在這種趨勢的推動下,最近掀起了新一輪圍繞高度交互的 Web 界面(基于一組稱作 AJAX 的技術)的宣傳熱潮。 AJAX 與新 J2EE 標準 JavaServer Faces (JSF) 的結合使用在處理 Web 應用程序方面有望提供更好的最終用戶體驗和認可。 AJAX(異步 Javascript+XML 的縮寫)描述了一組現有技術(如 JavaScript、XML 和文檔對象模型 (DOM))的使用模式。 不可否認的是,AJAX 和 JavaServer Faces 來勢迅猛,并將很快擋住 Swing 的去路,而 Swing 自 1998 年以來一直是用 Java 構建豐富用戶界面的標準方法。 瀏覽器將在未來唱主角?Swing 能否經受住富互聯網應用程序宣傳熱潮的考驗?本文針對 Swing 和 JavaServer Faces 進行了介紹、定位和比較,以幫助開發人員決定對某種作業使用哪種技術。 此外,本文還介紹了 Oracle 應用程序開發框架 (ADF) 如何有助于簡化使用這兩種技術進行的應用程序開發。 從Java 到 Swing 再到 JavaServer Faces應用程序開發史中曾出現過許多編程語言。 早在 1991 年,James Gosling 發明了“Oak”,即 Java 的前身。 由于 Oak 無法出售,因此 Sun 于 1995 年推出了 Web 編程語言 - Java,此后不久 Java Applet 即成為 Web 應用程序開發的這個“石器時代”的主導技術。 1998 年發布了用于開發輕型 Java Web GUI 和客戶端桌面應用程序的 Java Swing 平臺。 一年以后,Sun 推出了 Java 2 企業版 (J2EE) 平臺,該平臺在 6 年后引入了 JavaServer Faces。 Swing 本身是一個基于抽象窗口工具包 (AWT) 和 Java 基礎類 (JFC) 構建的輕型組件集。 從推出到現在的七年多時間里,Swing 程序包已經成為 J2SE 中一個非常成熟的 Java 庫,并廣泛用在企業級業務應用程序的構建中。 Swing 以靈活而強大的開發環境著稱,它為應用程序開發人員提供了大量的控制權。 毫不夸張地說,只要是可以用 Java 構思的應用程序,就可以用 Swing 構建它。 但 Swing 的靈活增加了復雜度和學習難度。 類似 Oracle JDeveloper、NetBeans 和 IntelliJ 這樣的 Java IDE 為 Swing 提供了可視的 4GL 編輯環境,有助于開發人員快速入門并執行更深層次的操作,而不必深入學習 Swing。 2004 年 3 月推出的 JavaServer Faces(也稱作 JSF,或簡稱為“Faces”)是一個用于構建 Web 應用程序的基于組件的框架,該框架并入了 JavaBean 事件模型,用于將信息發送到其他組件。 作為 J2EE Web 技術的發展,JavaServer Faces 將基于模板的編程式 Web 開發與 4GL 類型的開發選項結合在一起。 J2SE Swing 體系結構盡管Swing 是 Java 標準版 (Java SE) 的正式部分,但它并不是核心 Java 語言的成員,而是被視為一個標準擴展。 以 而非 開頭的 Swing 程序包名稱也反映了這一點。 使用 Swing 開發的應用程序在 Java 運行時環境 (JRE) 中執行,該環境可以安裝在本地桌面客戶端中,也可以集成到 Java Web Start 或 Web 瀏覽器中。 所有Swing UI 組件均為 JavaBean,并采用對象模型控制器體系結構,將數據表示與對數據的操作分離。 該模型不包含任何 UI 特定的代碼,反之亦然。 模型與 UI 之間的所有信息交換均通過 JavaBean 事件和監聽器進行。 這種職責劃分使經驗豐富的 Swing 開發人員能夠自定義組件 UI,而不必更改組件行為。 Swing 中的組件控制器和視圖稱作 UI 代理。 控制器將用戶交互指派給模型,并由模型保存組件的狀態。 圖1:Swing 體系結構 Swing 中的 UI 組件可在運行時通過屬性方法或在設計時通過可視編輯器以編程方式進行控制。 并非 Swing 中的所有組件均綁定到數據,某些組件(如按鈕)只需要處理 GUI 狀態。 UI 組件中的事件通過注冊的 JavaBean 監聽器(如 MouseListener、FocusListener 或 ChangeListener)進行檢測。 ADF 與 SwingSwing 始終存在的難題之一是如何將組件綁定到動態數據。 過去,有許多不同框架已經通過非標準方法多次解決了這一難題。 而作為 JSR-227(用于解決此數據綁定難題的建議標準)早期采用者的 ADF 以及 ADF Swing 采用標準方法將 Swing 應用程序綁定到所有業務服務,如 Enterprise JavaBeans、TopLink、Web 服務、ADF 業務組件以及 URL。 ADF Swing 是一個將 Swing 域模型綁定到 Oracle ADF 綁定的小型 Java 層。 ADF Swing 開發人員采用聲明方式將組件模型設置為 ADF 綁定中的有名引用。 ADF 中的數據控件將一致的客戶端開發 API 公開給不同的業務服務,以便 Swing 開發人員使用。 數據控件采用標準方法來創建、刪除和插入數據,并采用標準控件來導航數據集。 ADF 綁定將一個可以從數據控件訪問的較小的數據子集公開給 Swing 應用程序面板或框架。 Swing 開發人員無需了解應用程序構建所基于的業務服務,這是因為他們不再處理特定的模型 API。 同樣,他們并不負責資源查找或類似任務。 所有這些任務均由 JSR-227 實現處理,該實現提供了一個有效的控制反轉機制。 由于ADF Swing 應用程序開發在很大程度上是一個使用 ADF 執行的聲明任務,因此它縮短了新手和 Java 專家的應用程序開發周期。 例如,UI 第一綁定使項目團隊可以輕松地進行快速原型設計。 可以采用概念驗證的方式創建 UI 的非綁定版本,然后采用回溯方式將其綁定到服務。 圖2:ADF Swing 體系結構 JavaServer FacesJavaServer Faces 是 Web 應用程序開發中的一個里程碑,它將成為 J2EE 5.0(SUN 最近將其重新命名為 JEE 5.0)中核心 Java 企業版平臺的一部分。 JavaServer Faces 可以作為獨立的 Servlet 在 J2EE1.4 應用服務器中使用。 Web 并非為需要事務和狀態處理的業務應用程序而設計。 多年來,開發人員花費了大量時間使用各種技術(如隱藏的 HTML 域、cookie、URL 或會話參數)來跟蹤 Web 應用程序的狀態,而這樣做僅僅為了克服 HTTP 協議無狀態這個問題。 JavaServer Faces 有助于開發人員重新關注應用程序的業務要求,而不再關注基礎的交付技術。 JavaServer Faces 是一個 UI 框架,它對應用程序開發人員隱藏了 HTTP 請求 – 響應循環的細節。 與Swing 中的 JavaBean 體系結構相似,JavaServer Faces 使用通過屬性公開狀態和行為的 UI 組件來構建 Web 界面。 盡管 JavaServer Faces 頁面通常匯集在 JSP 文件中,但這并不是必需的。 JSF 這項技術并非只可用于基于瀏覽器的應用程序,同時也可用于構建移動應用程序。 JavaServer Faces 中的 UI 組件是顯示不可知的。 這意味著應用程序開發人員并不構建針對特定設備的應用程序,而是構建可以在許多設備上運行的應用程序。 JSF 中的 UI 組件呈現器類(打包的呈現器集的一部分)決定 UI 的可視化表示。 如果初始應用程序請求來自 Web 瀏覽器,則該表示采用 HTML 格式,否則應用程序將按照請求客戶端設備所支持的方式呈現(假設該設備類型存在一組呈現器類)。 類似文本域這樣的 UI 組件通過 ExpressionLanguage (EL) 值綁定綁定到 (JSF) 管理的 bean 模型上。 在值綁定中,EL 用于引用輔助 bean 中的 setter 和 getter 方法對。 例如,EL 表達式 #{} 將 JSF 組件綁定到用戶 bean 中的 setFirstname 和 getFirstname 方法上。 EL 綁定另一個可能的形式是方法綁定。 方法綁定引用受管理 bean 中的方法,并在 JSF 中(就像在按鈕中一樣)用于將操作屬性綁定到視圖層邏輯,以便在復雜導航情形下或者在需要導航前和導航后處理的情況下執行。 圖3:JavaServer Faces 體系結構 受管理 bean 的另一個角色是將 UI 組件綁定到域數據,例如訪問 JDBC 查詢的結果集或查找 Enterprise JavaBean (EJB) 會話。 此外,頁面上的 UI 組件可能在輔助 bean 中包含一個用于以編程方式訪問的表示。 Oracle 應用程序開發框架 (ADF) 和 JavaServer FacesOracle JDeveloper 10.1.3 支持通過可視編輯器進行 JavaServer Faces 開發。 此外,Oracle ADF 可用于通過聲明方式將 JavaServer Faces 和 ADF Faces 組件綁定到業務服務數據。 正如在 Swing 的上下文中介紹 Oracle ADF 時所指出的,使用 Oracle ADF 綁定為 JavaServer Faces Web 應用程序開發人員提供了一個統一的開發 API,用于訪問 Web 服務、Enterprise Java Bean、TopLink、POJO、ADF 業務組件以及其他類型的業務服務。 ADF Faces 是一組基于 JavaServer Faces API 構建并可以部署到任何 JSF 實現(如由 Sun 或 Apache MyFaces 提供的參考實現)的 100 多個 JSF UI 組件的總稱。 除了適用于瀏覽器客戶端的 HTML 呈現器工具包以外,ADF Faces 還為在 telnet 客戶端、移動設備和 PDA 上顯示的 Web 應用程序提供了呈現器,并支持作為顯示不可知 Web 應用程序開發環境的 JavaServer Faces 的強大功能。 為將ADF 與 JavaServer Faces 應用程序集成,表達式語言值綁定訪問 ADF 綁定對象,而非輔助 bean 中的數據。 ADF 綁定對象(默認情況下名為“bindings”)由 ADF servlet 在應用程序初始化過程中創建,并使開發人員能夠訪問通過 ADF 數據控件和綁定層公開的所有集合和方法。 要以編程方式引用和使用輔助 bean 中的 ADF 綁定對象,可以通過 faces 配置中的 ExpressionLanguage 表達式 #{bindings} 訪問綁定對象并將其作為受管理屬性的值注入到輔助 bean 中。 圖4:使用 ADF 的 JavaServer Faces 體系結構 履行富互聯網應用程序的諾言:AJAX 和 ADF Faces對于并非熟悉 Javascript、XML 或文檔對象模型 (DOM) 等 Web 技術的開發人員而言,AJAX 易于理解但卻難于實現。 對于業務應用程序而言,僅當在 JavaServer Faces 這樣的 Web 應用程序框架中以“現成方式”在組件中使用時,AJAX 才有意義。 ADF Faces 提供了部分頁面呈現和對話框支持,使開發人員能夠構建更好的 Web 客戶端。 作為一個早期實現的 AJAX,部分頁面呈現縮短了客戶端的響應時間,因為它減小了只需刷新頁面的某些部分的網頁的下載大小。 ADF Faces 的未來發展方向是提供一組利用 AJAX 的富互聯網組件,以便 Web 應用程序開發人員能夠構建響應性和交互性較高的 Web 客戶端,而不必編寫 JavaScript 或 DHTML 代碼。 在 JavaOne 2005 召開期間首次展示了 ADF Faces 富互聯網應用程序客戶端的預覽版本。 在什么場合使用什么技術? 當決定對新應用程序開發使用哪種技術時,應用程序的要求(而非各種技術的功能)是一個不錯的指標。 以下是對兩種技術的簡要分類比較 開發:主要的 Java IDE 支持對 Swing 和 JavaServer Faces 進行可視開發。 開發 JavaServer Faces 應用程序時,開發人員可以獲得很多好處而不必編寫 Java 代碼。 組件:Swing 和 JavaServer Faces 均基于組件,并將 JavaBeans 用于其 UI 組件。 還可以創建在應用程序中使用的自定義組件。 頁面和布局:Swing 中的布局通過嵌套 Swing 面板定義。 Swing 組件的位置及其調整大小的行為通過 LayoutManagers 確定。 同樣,在 JavaServer Faces 中,布局通過容器(如 ADF Faces 中的 PanelPage 和 PanelBox)定義。 每個容器可以有很多個子組件,而其中的每個子組件本身也是容器。 盡管使用 HTML 表格安排 JSF 應用程序的布局可能比較吸引人,但在處理 JSF 應用程序時建議您不要混合使用多技術。 UI 響應性:AJAX 更適合于 Web 應用程序,它可以根據提供的輸入或模型層中引發的事件向用戶立即提供反饋。 Swing 用戶界面具有高響應性,并可以刷新屏幕上的特定區域而不用刷新整個屏幕。 例如,股票應用程序可以向 Swing 應用程序發送有關已更改值的信息,無需重新查詢即可將該信息顯示給用戶。 更新、插入和刪除:Web 模型基于 HTTP 協議,該協議并非為事務應用程序和動態業務應用程序而設計。 JavaServer Faces 自動處理 Web 開發人員以往所面臨的大量問題,但在處理多行更新方面,有時仍需要開發人員親自操作。 而在 Swing 中,多行操作對于應用程序開發人員(如使用 ADF Swing 的開發人員)而言比較簡單。 外觀: Swing 支持動態外觀類,這些類在應用程序啟動時向其應用特定顏色方案。 更改應用程序外觀不需要更改應用程序代碼。 JavaServer Faces 使用樣式表顯示不同的用戶外觀。 此外,Oracle ADF Faces 還提供了一個稱作“換膚”的特性,其作用與 Swing 中的外觀類相似。 國際化:這兩種技術均支持使用資源包進行字符串翻譯。 JavaServer Faces 包含客戶端上的瀏覽器設置中的首選用戶語言,而 Swing 應用程序根據 Java 運行時環境中的區域設置確定語言。 JavaServer Faces 和 Swing 均可以編程方式設置語言,以便應用程序用戶可以從應用程序中選擇一種翻譯。 事件模型:JavaServer Faces 和 Swing 組件均使用 JavaBean 事件模型發布有關模型或組件更改的信息。 相關各方可以使用 JavaBean 監聽器注冊事件,如值更改事件、屬性更改事件或階段事件。 鍵盤快捷方式:盡管這兩種技術均支持鍵盤快捷方式,但由于 Swing 并不依賴于瀏覽器,因此在這方面優勢比較明顯。 所有鍵盤功能均由 Swing 處理并可以由應用程序開發人員控制。 桌面集成:安裝到本地的 Swing 應用程序擁有客戶端桌面的完全訪問權限。 JavaServer Faces 通過上載和下載文件只提供有限的桌面集成。 導航:Swing 只具有編程式導航功能,而不存在為 Swing 標準(定義應根據操作輸出顯示哪個面板)定義的外部控制器。 JavaServer Faces 使用一個控制器組件,可以根據計算輸出使用指定的導航示例對其進行配置。 導航可以定義為操作組件的靜態字符串,而對于更復雜的導航,則可以用 Java 表示。 應用程序控制:與導航相關,相對于在 JavaServer Faces 中而言,應用程序開發人員可以更好地控制客戶端中的 Swing 應用程序。 用戶在 Java 運行時環境中運行 Swing 應用程序,而這并不會因為(例如)工具欄不是應用程序本身的一部分而引起沖突。 在瀏覽器中運行的 JavaServer Faces 應用程序總要求開發人員解決已知的瀏覽器限制。 如今,沒有使應用程序開發人員能夠關閉不需要的瀏覽器行為或功能(如瀏覽器后退按鈕或瀏覽器保留的鍵盤快捷方式)的通用瀏覽器標準和一組通用 API。 性能:對于執行數據密集型操作的應用程序而言,JavaServer Faces 的性能似乎要高于 Swing,這是因為它只顯示對客戶端的更改。 使用 AJAX,所需的下載大小將變得更小,從而性能將得到進一步的提高。 盡管 Swing 可以使用遠程服務器上部署的業務邏輯,但這需要使用遠程方法調用 (RMI),該調用的性能要低于 JavaServer Faces 模型。 但應始終針對單個應用程序來分析網絡性能,并應在可能的用戶界面中考慮應用程序的要求。 安全性:JavaServer Faces 集成了聲明式 J2EE 安全性,從而易于保護 Web 應用程序以及與一次性登錄集成。 Swing 更難于保護,且將基于 J2SE 權限的安全性與需要更多專業技能的 Java 驗證和授權服務 (JAAS) 結合使用。 部署:JavaServer Faces 部署到 J2EE 容器并從 Web 中進行訪問。 該部署的體系結構既可以是兩層的(其中的業務邏輯層與視圖層位于同一服務器上)也可以是三層的。 Swing 通常部署到本地客戶端上,或通過 JavaWeb Start(J2SE 中一個基于服務器的軟件管理選件)進行部署。 對于 JavaServer Faces 而言,使用 Oracle Application Server Control 或相似的管理控制臺可以使部署變得更簡單、更易于管理。 綜上所述,如果應用程序要求對用戶輸入或更改用戶顯示的事件立即做出響應,則 應使用 Swing。 這對在一個屏幕上顯示多個主/從相關性的復雜用戶界面也是如此。 此外,與 Web 相比,Swing 還可以為需要執行即時項目驗證的應用程序(可能基于復雜的邏輯)提供更好的支持。 使用 Swing 的另一個重要原因是需要不僅能文件上載和下載的桌面集成。 此類集成的例子有本地打印機訪問、對電話或掃描儀等外部設備的訪問。 此外,與 Web 技術(其中封閉瀏覽器使用某些鍵盤組合)相比,Swing 可以為需要定義其自身的鍵盤映射的應用程序提供更好的服務。 在構建 Swing 應用程序時,其他瀏覽器功能(如可能妨礙業務控制的應用程序導航的瀏覽器后退按鈕)不會成為問題。 某些業務要求應用程序脫機運行(即與網絡斷開連接),您可以根據此要求來構建 Swing 應用程序。 最后,Swing 應用程序只使用一種語言開發,而 JavaServer Faces 混合使用 Java、XML 和 ExpressionLanguage 等技術。 如果需要可以從任何位置(不要求安裝客戶端)訪問應用程序,則 應使用 JavaServer Faces。 這包括可能為 PDA、移動電話和 telnet 客戶端等顯示設備提供的支持。 與 Swing 不同,JavaServer Faces 可以通過防火墻(使用 HTTP 或 HTTPS 來保護客戶端-服務器通信)進行輕松的運行。 由于邏輯在服務器上執行,因此 JavaServer Faces 更易于部署并需要更少的客戶端資源。 如今,互聯網應用程序已得到普遍使用,因此您可以假設應用程序用戶熟悉 Web 應用程序的外觀和使用。 這降低了用戶在使用新應用程序時的學習難度。 安全性是使用基于 Web 的 JavaServer Faces 應用程序的另一個重要原因。 盡管可以使用 JAAS 構建安全的 Swing 應用程序,但構建與服務器上容器管理的安全性和一次性登錄集成的基于 Web 的應用程序則更為簡單。 此外,與在 Swing 中相比,在 JSF 中更容易實現需要將其中的身份發送到其他組件或應用程序的安全性集成。 但您應該知道的是,將 JSF 與 AJAX 結合使用是基于 Javascript(需要瀏覽器支持)的。 將來,Swing 技術如今具有的優點將逐漸消失。 例如在美國,賓西法尼亞和舊金山兩座城市已經啟動了一些在整個城市提供無線訪問的項目。 一旦世界上的其他國家/地區采用了該模型,那么在斷開連接模式下工作(Swing 當前的優點)將不再必要。 有關 Swing 逐漸失去優勢的另一個例子是 AJAX 有望為 Web 應用程序帶來的即時客戶端顯示響應這一優點。 有選擇的生產效率:是否只須學習一種技術? 成功開發 J2EE 應用程序需要 J2EE 框架和 Java IDE,它們盡量對應用程序開發人員隱藏復雜性,同時還實施了最佳的編碼實踐。 一項互聯網工作招聘快速調查顯示,Web 應用程序開發人員的就業市場遠遠大于 Swing 應用程序開發人員。 因此,在理想情況下您需要學習的一門技術是 Web 應用程序開發,其中包括 JavaServer Faces、AJAX 和 JavaServer Pages。 在需要開發 Swing 應用程序時,如果將 Oracle 應用程序開發框架和 Oracle JDeveloper 與 Swing 結合使用,則 Web 應用程序開發技術就足夠了。 Oracle JDeveloper 是一個支持 J2EE 桌面和 Web 應用程序的集成 Java IDE。 使用 Oracle 應用程序開發框架,應用程序開發人員無須再學習如何使用不同的 API 來訪問各種持久層技術,使用一個一致的 API 就可以了。 使用Oracle ADF,Web 應用程序開發人員可以在設計時和運行時使用與 Swing 應用程序開發人員構建 Java 桌面應用程序所使用的同一組元數據文件。 由于提供了相似的開發環境,因此 Swing 應用程序開發人員將發現開發 Web 應用程序其實比較簡單,反之亦然。 因此,如果您必須只學習一種技術,則建議您最好學習如何使用 Oracle 應用程序開發框架開發 Web 應用程序。 總結JavaServer Faces 與 AJAX 的發展過程就像人類學習走路一樣,是一個漸進的過程。 Web 應用程序最初以靜態界面形式出現,現在已經逐步演變為一個動態應用程序平臺。 AJAX 只不過是需要在其最具有意義的環境 - JSF 中實現的下一個邏輯步驟。 擁有富互聯網客戶端使開發人員可以選擇使用適當的技術解決問題。 富互聯網應用程序 (AJAX)基于組件的 Web 客戶端 (JSF)基于動態標記的 Web 客戶端 (JSP)桌面集成客戶端 (Swing)AJAX 闡述了一種使 J2EE 應用程序開發人員能夠將復雜的業務應用程序發布到 Web 的可能。 作為 Swing 開發人員,您不必在意圍繞 AJAX 展開的宣傳熱潮,但應在意它的動機。 宣傳是為了推廣新機會,而這正體現了 JavaServer Faces 和 AJAX 的本質:為應用程序開發人員構建富 Web 應用程序提供新機會。 Swing 是為客戶端桌面開發 Java 應用程序的標準方法,并且它要解決的開發問題與 JavaServer Faces 和 AJAX 不同。 它通過 Community Process 以及 Sun(它還領導了 Java 桌面網絡組件 (JDNC) 項目)的努力得到不斷發展和改進。 盡管Swing 與 JavaServer Faces/AJAX 在功能上存在重疊,但兩者并不直接競爭。 為某項工作選擇的技術必須解決您要解決的問題,而反之則不然。 使用 Oracle 應用程序開發框架,開發人員可以靈活地選擇相應的技術,以便使用一種基礎技術集開發 Web 應用程序和桌面應用程序。 Frank Nimphius 和Duncan Mills 是Oracle 開發人員工具部門的產品經理,兩人均為 Oracle ACE。

java中Spring是什么?

1.1.1 Spring是什么 Spring是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用于簡化企業級應用程序開發。 應用程序是由一組相互協作的對象組成。 而在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成。 所以開發一個應用除了要開發業務邏輯之外,最多的是關注如何使這些對象協作來完成所需功能,而且要低耦合、高內聚。 業務邏輯開發是不可避免的,那如果有個框架出來幫我們來創建對象及管理這些對象之間的依賴關系。 可能有人說了,比如“抽象工廠、工廠方法設計模式”不也可以幫我們創建對象,“生成器模式”幫我們處理對象間的依賴關系,不也能完成這些功能嗎?可是這些又需要我們創建另一些工廠類、生成器類,我們又要而外管理這些類,增加了我們的負擔,如果能有種通過配置方式來創建對象,管理對象之間依賴關系,我們不需要通過工廠和生成器來創建及管理對象之間的依賴關系,這樣我們是不是減少了許多工作,加速了開發,能節省出很多時間來干其他事。 Spring框架剛出來時主要就是來完成這個功能。 Spring框架除了幫我們管理對象及其依賴關系,還提供像通用日志記錄、性能統計、安全控制、異常處理等面向切面的能力,還能幫我管理最頭疼的數據庫事務,本身提供了一套簡單的JDBC訪問實現,提供與第三方數據訪問框架集成(如Hibernate、JPA),與各種Java EE技術整合(如Java Mail、任務調度等等),提供一套自己的web層框架Spring MVC、而且還能非常簡單的與第三方web框架集成。 從這里我們可以認為Spring是一個超級粘合平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什么技術進行開發。 而且不管是JAVA SE(C/S架構)應用程序還是JAVA EE(B/S架構)應用程序都可以使用這個平臺進行開發。 讓我們來深入看一下Spring到底能幫我們做些什么? 1.1.2 Spring能幫我們做什么 Spring除了不能幫我們寫業務邏輯,其余的幾乎什么都能幫助我們簡化開發: 一、傳統程序開發,創建對象及組裝對象間依賴關系由我們在程序內部進行控制,這樣會加大各個對象間的耦合,如果我們要修改對象間的依賴關系就必須修改源代碼,重新編譯、部署;而如果采用Spring,則由Spring根據配置文件來進行創建及組裝對象間依賴關系,只需要改配置文件即可,無需重新編譯。 所以,Spring能幫我們根據配置文件創建及組裝對象之間的依賴關系。 二、當我們要進行一些日志記錄、權限控制、性能統計等時,在傳統應用程序當中我們可能在需要的對象或方法中進行,而且比如權限控制、性能統計大部分是重復的,這樣代碼中就存在大量重復代碼,即使有人說我把通用部分提取出來,那必然存在調用還是存在重復,像性能統計我們可能只是在必要時才進行,在診斷完畢后要刪除這些代碼;還有日志記錄,比如記錄一些方法訪問日志、數據訪問日志等等,這些都會滲透到各個要訪問方法中;還有權限控制,必須在方法執行開始進行審核,想想這些是多么可怕而且是多么無聊的工作。 如果采用Spring,這些日志記錄、權限控制、性能統計從業務邏輯中分離出來,通過Spring支持的面向切面編程,在需要這些功能的地方動態添加這些功能,無需滲透到各個需要的方法或對象中;有人可能說了,我們可以使用“代理設計模式”或“包裝器設計模式”,你可以使用這些,但還是需要通過編程方式來創建代理對象,還是要耦合這些代理對象,而采用Spring 面向切面編程能提供一種更好的方式來完成上述功能,一般通過配置方式,而且不需要在現有代碼中添加任何額外代碼,現有代碼專注業務邏輯。 所以,Spring 面向切面編程能幫助我們無耦合的實現日志記錄,性能統計,安全控制。 三、在傳統應用程序當中,我們如何來完成數據庫事務管理?需要一系列“獲取連接,執行SQL,提交或回滾事務,關閉連接”,而且還要保證在最后一定要關閉連接,多么可怕的事情,而且也很無聊;如果采用Spring,我們只需獲取連接,執行SQL,其他的都交給Spring來管理了,簡單吧。 所以,Spring能非常簡單的幫我們管理數據庫事務。 四、Spring還提供了與第三方數據訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供了一套JDBC訪問模板,來方便數據庫訪問。 五、Spring還提供與第三方Web(如Struts、JSF)框架無縫集成,而且自己也提供了一套Spring MVC框架,來方便web層搭建。 六、Spring能方便的與Java EE(如Java Mail、任務調度)整合,與更多技術整合(比如緩存框架)。 Spring能幫我們做這么多事情,提供這么多功能和與那么多主流技術整合,而且是幫我們做了開發中比較頭疼和困難的事情,那可能有人會問,難道只有Spring這一個框架,沒有其他選擇?當然有,比如EJB需要依賴應用服務器、開發效率低、在開發中小型項目是宰雞拿牛刀,雖然發展到現在EJB比較好用了,但還是比較笨重還需要依賴應用服務器等。 那為何需要使用Spring,而不是其他框架呢?讓我們接著往下看。 1.1.3 為何需要Spring 一 首先闡述幾個概念 1、應用程序:是能完成我們所需要功能的成品,比如購物網站、OA系統。 2、框架:是能完成一定功能的半成品,比如我們可以使用框架進行購物網站開發;框架做一部分功能,我們自己做一部分功能,這樣應用程序就創建出來了。 而且框架規定了你在開發應用程序時的整體架構,提供了一些基礎功能,還規定了類和對象的如何創建、如何協作等,從而簡化我們開發,讓我們專注于業務邏輯開發。 3、非侵入式設計:從框架角度可以這樣理解,無需繼承框架提供的類,這種設計就可以看作是非侵入式設計,如果繼承了這些框架類,就是侵入設計,如果以后想更換框架之前寫過的代碼幾乎無法重用,如果非侵入式設計則之前寫過的代碼仍然可以繼續使用。 4、輕量級及重量級:輕量級是相對于重量級而言的,輕量級一般就是非入侵性的、所依賴的東西非常少、資源占用非常少、部署簡單等等,其實就是比較容易使用,而重量級正好相反。 5、POJO:POJO(Plain Old Java Objects)簡單的Java對象,它可以包含業務邏輯或持久化邏輯,但不擔當任何特殊角色且不繼承或不實現任何其它Java框架的類或接口。 6、容器:在日常生活中容器就是一種盛放東西的器具,從程序設計角度看就是裝對象的的對象,因為存在放入、拿出等操作,所以容器還要管理對象的生命周期。 7、控制反轉:即Inversion of Control,縮寫為IoC,控制反轉還有一個名字叫做依賴注入(Dependency Injection),就是由容器控制程序之間的關系,而非傳統實現中,由程序代碼直接操控。 8、Bean:一般指容器管理對象,在Spring中指Spring IoC容器管理對象。 二 為什么需要Spring及Spring的優點 ● 非常輕量級的容器:以集中的、自動化的方式進行應用程序對象創建和裝配,負責對象創建和裝配,管理對象生命周期,能組合成復雜的應用程序。 Spring容器是非侵入式的(不需要依賴任何Spring特定類),而且完全采用POJOs進行開發,使應用程序更容易測試、更容易管理。 而且核心JAR包非常小,Spring3.0.5不到1M,而且不需要依賴任何應用服務器,可以部署在任何環境(Java SE或Java EE)。 ● AOP:AOP是Aspect Oriented Programming的縮寫,意思是面向切面編程,提供從另一個角度來考慮程序結構以完善面向對象編程(相對于OOP),即可以通過在編譯期間、裝載期間或運行期間實現在不修改源代碼的情況下給程序動態添加功能的一種技術。 通俗點說就是把可重用的功能提取出來,然后將這些通用功能在合適的時候織入到應用程序中;比如安全,日記記錄,這些都是通用的功能,我們可以把它們提取出來,然后在程序執行的合適地方織入這些代碼并執行它們,從而完成需要的功能并復用了這些功能。 ● 簡單的數據庫事務管理:在使用數據庫的應用程序當中,自己管理數據庫事務是一項很讓人頭疼的事,而且很容易出現錯誤,Spring支持可插入的事務管理支持,而且無需JEE環境支持,通過Spring管理事務可以把我們從事務管理中解放出來來專注業務邏輯。 ● JDBC抽象及ORM框架支持:Spring使JDBC更加容易使用;提供DAO(數據訪問對象)支持,非常方便集成第三方ORM框架,比如Hibernate等;并且完全支持Spring事務和使用Spring提供的一致的異常體系。 ● 靈活的Web層支持:Spring本身提供一套非常強大的MVC框架,而且可以非常容易的與第三方MVC框架集成,比如Struts等。 ● 簡化各種技術集成:提供對Java Mail、任務調度、JMX、JMS、JNDI、EJB、動態語言、遠程訪問、Web Service等的集成。 Spring能幫助我們簡化應用程序開發,幫助我們創建和組裝對象,為我們管理事務,簡單的MVC框架,可以把Spring看作是一個超級粘合平臺,能把很多技術整合在一起,形成一個整體,使系統結構更優良、性能更出眾,從而加速我們程序開發,有如上優點,我們沒有理由不考慮使用它。 1.1.4 如何學好Spring 要學好Spring,首先要明確Spring是個什么東西,能幫我們做些什么事情,知道了這些然后做個簡單的例子,這樣就基本知道怎么使用Spring了。 Spring核心是IoC容器,所以一定要透徹理解什么是IoC容器,以及如何配置及使用容器,其他所有技術都是基于容器實現的;理解好IoC后,接下來是面向切面編程,首先還是明確概念,基本配置,最后是實現原理,接下來就是數據庫事務管理,其實Spring管理事務是通過面向切面編程實現的,所以基礎很重要,IoC容器和面向切面編程搞定后,其余都是基于這倆東西的實現,學起來就更加輕松了。 要學好Spring不能急,一定要把基礎打牢,基礎牢固了,這就是磨刀不誤砍柴工。 1.2 Spring基礎 1.2.1 Spring架構圖 圖 1-1 Spring架構圖 核心容器:包括Core、Beans、Context、EL模塊。 ● Core模塊:封裝了框架依賴的最底層部分,包括資源訪問、類型轉換及一些常用工具類。 ● Beans模塊:提供了框架的基礎部分,包括反轉控制和依賴注入。 其中Bean Factory是容器核心,本質是“工廠設計模式”的實現,而且無需編程實現“單例設計模式”,單例完全由容器控制,而且提倡面向接口編程,而非面向實現編程;所有應用程序對象及對象間關系由框架管理,從而真正把你從程序邏輯中把維護對象之間的依賴關系提取出來,所有這些依賴關系都由BeanFactory來維護。 ● Context模塊:以Core和Beans為基礎,集成Beans模塊功能并添加資源綁定、數據驗證、國際化、Java EE支持、容器生命周期、事件傳播等;核心接口是ApplicationContext。 ● EL模塊:提供強大的表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從Spring 容器獲取Bean,它也支持列表投影、選擇和一般的列表聚合等。 AOP、Aspects模塊: ● AOP模塊:Spring AOP模塊提供了符合 AOP Alliance規范的面向方面的編程(aspect-oriented programming)實現,提供比如日志記錄、權限控制、性能統計等通用功能和業務邏輯分離的技術,并且能動態的把這些功能添加到需要的代碼中;這樣各專其職,降低業務邏輯和通用功能的耦合。 ● Aspects模塊:提供了對AspectJ的集成,AspectJ提供了比Spring ASP更強大的功能。 數據訪問/集成模塊:該模塊包括了JDBC、ORM、OXM、JMS和事務管理。 ● 事務模塊:該模塊用于Spring管理事務,只要是Spring管理對象都能得到Spring管理事務的好處,無需在代碼中進行事務控制了,而且支持編程和聲明性的事物管理。 ● JDBC模塊:提供了一個JBDC的樣例模板,使用這些模板能消除傳統冗長的JDBC編碼還有必須的事務控制,而且能享受到Spring管理事務的好處。 ● ORM模塊:提供與流行的“對象-關系”映射框架的無縫集成,包括Hibernate、JPA、Ibatiss等。 而且可以使用Spring事務管理,無需額外控制事務。 ● OXM模塊:提供了一個對Object/XML映射實現,將java對象映射成XML數據,或者將XML數據映射成java對象,Object/XML映射實現包括JAXB、Castor、XMLBeans和XStream。 ● JMS模塊:用于JMS(Java Messaging Service),提供一套 “消息生產者、消息消費者”模板用于更加簡單的使用JMS,JMS用于用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。 ● Web/Remoting模塊:Web/Remoting模塊包含了Web、Web-Servlet、Web-Struts、Web-Porlet模塊。 ● Web模塊:提供了基礎的web功能。 例如多文件上傳、集成IoC容器、遠程過程訪問(RMI、Hessian、Burlap)以及Web Service支持,并提供一個RestTemplate類來提供方便的Restful services訪問。 ● Web-Servlet模塊:提供了一個Spring MVC Web框架實現。 Spring MVC框架提供了基于注解的請求資源注入、更簡單的數據綁定、數據驗證等及一套非常易用的JSP標簽,完全無縫與Spring其他技術協作。 ● Web-Struts模塊:提供了與Struts無縫集成,Struts1.x 和Struts2.x都支持 Test模塊: Spring支持Junit和TestNG測試框架,而且還額外提供了一些基于Spring的測試功能,比如在測試Web框架時,模擬Http請求的功能。 1.2.2 典型應用場景 Spring可以應用到許多場景,從最簡單的標準Java SE程序到企業級應用程序都能使用Spring來構建。 以下介紹幾個比較流行的應用場景: ● 典型Web應用程序應用場景: 圖1-2 web應用程序應用場景 在Web應用程序應用場景中,典型的三層架構:數據模型層實現域對象;數據訪問層實現數據訪問;邏輯層實現業務邏輯;web層提供頁面展示;所有這些層組件都由Spring進行管理,享受到Spring事務管理、AOP等好處,而且請求唯一入口就是DispachterServlet,它通過把請求映射為相應web層組件來實現相應請求功能。 ● 遠程訪問應用場景: Spring能非常方便的提供暴露RMI服務,遠程訪問服務如Hessian、Burlap等,實現非常簡單只需通過在Spring中配置相應的地址及需要暴露的服務即可輕松實現,后邊會有介紹; ● EJB應用場景: Spring也可以與EJB輕松集成,后邊會詳細介紹。

SSH是不是屬于JAVA的架構技術?除了它們,java還有哪些框架?

是 還有: Spring Framework 【Java開源 J2EE框架】Spring 是一個解決了許多在J2EE開發中常見的問題的強大框架。 Spring提供了管理業務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。 Spring的架構基礎是基于使用JavaBean屬性的 Inversion of Control容器。 然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。 Spring的數據訪問架構還集成了 Hibernate和其他O/R mapping解決方案。 Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。 Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的 aspects。 這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。 Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。 【SpringIDE:Eclipse平臺下一個輔助開發插件】. WebWork 【Java開源 Web框架】 WebWork 是由OpenSymphony組織開發的,致力于組件化和代碼重用的拉出式MVC模式J2EE Web框架。 WebWork目前最新版本是2.1,現在的WebWork2.x前身是Rickard Oberg開發的WebWork,但現在WebWork已經被拆分成了Xwork1和WebWork2兩個項目。 Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,并且完全從web層脫離出來。 Xwork提供了很多核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,處理HTTP的響應和請求。 WebWork2使用ServletDispatcher將HTTP請求的變成 Action(業務層Action類), session(會話)application(應用程序)范圍的映射,request請求參數映射。 WebWork2支持多視圖表示,視圖部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。 在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上.【EclipseWork:用于WebWork輔助開發的一個Eclipse插件】 Struts 【Java開源 Web框架】Struts 是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。 由于Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。 Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。 【StrutsIDE:用于Struts輔助開發的一個Eclipse插件】 Hibernate 【Java開源 持久層框架】Hibernate 是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。 Eclipse平臺下的Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】 Quartz 【Java開源 Job調度】Quartz 是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。 Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。 Jobs可以做成標準的Java組件或 EJBs。 Quartz的最新版本為Quartz 1.5.0。 Velocity 【Java開源 模板引擎】Velocity 是一個基于java的模板引擎(template engine)。 它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用于web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。 Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立工具來產生源代碼和報告,或者作為其他系統的集成組件使用。 Velocity也可以為Turbine web開發架構提供模板服務(template service)。 Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。 【VeloEclipse :Velocity在Eclipse平臺下的一個輔助開發插件】IBATIS 【Java開源 持久層框架】使用ibatis 提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現ORM 而言基本一致,而對于具體的數據操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL 語句。 相對Hibernate等 “全自動”ORM機制而言,ibatis 以SQL開發的工作量和數據庫移植性上的讓步,為系統設計提供了更大的自由空間。 作為“全自動”ORM 實現的一種有益補充,ibatis 的出現顯 得別具意義。

Java開源框架是什么?

Java開源項目 Spring Framework 【Java開源 J2EE框架】Spring 是一個解決了許多在J2EE開發中常見的問題的強大框架。 Spring提供了管理業務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。 Spring的架構基礎是基于使用JavaBean屬性的 Inversion of Control容器。 然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。 Spring的數據訪問架構還集成了 Hibernate和其他O/R mapping解決方案。 Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。 Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業事務--如果你需要--還能實現你自己的 aspects。 這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統EJB相關的關鍵服務。 Spring還提供了可以和IoC容器集成的強大而靈活的MVC Web框架。 【SpringIDE:Eclipse平臺下一個輔助開發插件】. WebWork 【Java開源 Web框架】 WebWork 是由OpenSymphony組織開發的,致力于組件化和代碼重用的拉出式MVC模式J2EE Web框架。 WebWork目前最新版本是2.1,現在的WebWork2.x前身是Rickard Oberg開發的WebWork,但現在WebWork已經被拆分成了Xwork1和WebWork2兩個項目。 Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,并且完全從web層脫離出來。 Xwork提供了很多核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,處理HTTP的響應和請求。 WebWork2使用ServletDispatcher將HTTP請求的變成 Action(業務層Action類), session(會話)application(應用程序)范圍的映射,request請求參數映射。 WebWork2支持多視圖表示,視圖部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。 在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上.【EclipseWork:用于WebWork輔助開發的一個Eclipse插件】 Struts 【Java開源 Web框架】Struts 是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。 由于Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。 Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用框架。 【StrutsIDE:用于Struts輔助開發的一個Eclipse插件】 Hibernate 【Java開源 持久層框架】Hibernate 是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。 Eclipse平臺下的Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】 Quartz 【Java開源 Job調度】Quartz 是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。 Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。 Jobs可以做成標準的Java組件或 EJBs。 Quartz的最新版本為Quartz 1.5.0。 Velocity 【Java開源 模板引擎】Velocity 是一個基于java的模板引擎(template engine)。 它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用于web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。 Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立工具來產生源代碼和報告,或者作為其他系統的集成組件使用。 Velocity也可以為Turbine web開發架構提供模板服務(template service)。 Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。 【VeloEclipse :Velocity在Eclipse平臺下的一個輔助開發插件】IBATIS 【Java開源 持久層框架】使用ibatis 提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實現ORM 而言基本一致,而對于具體的數據操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL 語句。 相對Hibernate等 “全自動”ORM機制而言,ibatis 以SQL開發的工作量和數據庫移植性上的讓步,為系統設計提供了更大的自由空間。 作為“全自動”ORM 實現的一種有益補充,ibatis 的出現顯 得別具意義。 Compiere ERP&CRM 【Java開源ERP與CRM系統】Compiere ERP&CRM為全球范圍內的中小型企業提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的全部領域,支持多組織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。 易于安裝、易于實施、易于使用。 只需要短短幾個小時,您就可以使用申購-采購-發票-付款、報價-訂單-發票-收款、產品與定價、資產管理、客戶關系、供應商關系、員工關系、經營業績分析等強大功能了。 Roller Weblogger 【Java開源 Blog博客】這個weblogging 設計得比較精巧,源代碼是很好的學習資料。 它支持weblogging應有的特性如:評論功能,所見即所得HTML編輯,TrackBack,提供頁面模板,RSS syndication,blogroll管理和提供一個XML-RPC 接口。 Eclipse 【Java開源 開發工具】Eclipse平臺是IBM向開放源碼社區捐贈的開發框架,它之所以出名并不是因為IBM宣稱投入開發的資金總數 —4千萬美元,而是因為如此巨大的投入所帶來的成果:一個成熟的、精心設計的以及可擴展的體系結構。 NetBeans 【Java開源 開發工具】NetBeans IDE 是一個為軟件開發者提供的自由、開源的集成開發環境。 您可以從中獲得您所需要的所有工具,用 Java、C/C++ 甚至是 Ruby 來創建專業的桌面應用程序、企業應用程序、web 和移動應用程序。 此 IDE 可以在多種平臺上運行,包括 Windows、Linux、Mac OS X 以及 Solaris;它易于安裝且非常方便使用。 XPlanner 【Java開源 項目管理】XPlanner 一個基于Web的XP團隊計劃和跟蹤工具。 XP獨特的開發概念如iteration、user stories等,XPlanner都提供了相對應的的管理工具,XPlanner支持XP開發流程,并解決利用XP思想來開發項目所碰到的問題。 XPlanner特點包括:簡單的模型規劃,虛擬筆記卡(Virtual note cards),iterations、user stories與工作記錄的追蹤,未完成stories將自動迭代,工作時間追蹤,生成團隊效率,個人工時報表,SOAP界面支持。 HSQLDB 【Java開源 DBMS數據庫】HSQLDB(Hypersonic SQL)是純Java開發的關系型數據庫,并提供JDBC驅動存取數據。 支持ANSI-92 標準 SQL語法。 而且他占的空間很小。 大約只有160K,擁有快速的數據庫引擎。 Liferay 【Java開源 Portal門戶】代表了完整的J2EE應用,使用了Web、EJB以及JMS等技術,特別是其前臺界面部分使用Struts 框架技術,基于XML的portlet配置文件可以自由地動態擴展,使用了Web Services來支持一些遠程信息的獲取,使用 Apahce Lucene實現全文檢索功能。 JetSpeed 【Java開源 Portal門戶】Jetspeed 是一個開放源代碼的企業信息門戶(EIP)的實現,使用的技術是Java和XML。 用戶可以使用瀏覽器,支持WAP協議的手機或者其它的設備訪問Jetspeed架設的信息門戶獲取信息。 Jetspeed扮演著信息集中器的角色,它能夠把信息集中起來并且很容易地提供給用戶。 JOnAS 【Java開源 J2EE服務器】JOnAS 是一個開放源代碼的J2EE實現,在ObjectWeb協會中開發。 整合了Tomcat或Jetty成為它的Web容器,以確保符合Servlet 2.3和JSP 1.2規范。 JOnAS服務器依賴或實現以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。 JFox3.0 【Java開源 J2EE服務器】 JFox 是 Open Source Java EE Application Server,致力于提供輕量級的Java EE應用服務器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應用的開發! 如果您正在尋找一個簡單、輕量、高效、完善的Java EE開發平臺,那么JFox正是您需要的。



相關標簽: 復雜性復雜性尿路感染、 JSF的聲明式方法可能會導致對于大型應用程序的復雜性增加、

上一篇:學習曲線JSF的學習曲線可能對于初學者來說

下一篇:性能JSF的組件化方法可能會導致性能開銷。

內容聲明:

1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://m.sycxjdsbhs.com/article/91ec5348f3710205f959.html,復制請保留版權鏈接!


溫馨小提示:在您的網站做上本站友情鏈接,訪問一次即可自動收錄并自動排在本站第一位!
隨機文章
雙擊下載的 ZIP 文件。(雙擊下載的文件顯示路徑未DWF文件怎么解決)

雙擊下載的 ZIP 文件。(雙擊下載的文件顯示路徑未DWF文件怎么解決)

當雙擊下載的ZIP文件時,如果顯示錯誤信息路徑未DWF文件,則表明ZIP文件中并不包含DWF文件,或者DWF文件已損壞,原因導致此錯誤的一些可能原因包括,下載的文件不完整或已損壞,ZIP文件未包含DWF文件,DWF文件的擴展名不正確,DWF文件已損壞,解決方案要解決此錯誤,請嘗試以下步驟,檢查文件完整性,重新下載ZIP文件并檢查其是否...。

本站公告 2024-09-28 01:42:01

從頭到尾掌握 input 不可編輯功能:高級教程 (從頭到尾掌握的成語)

從頭到尾掌握 input 不可編輯功能:高級教程 (從頭到尾掌握的成語)

本文將為你提供一個從頭到尾的指南,讓你全面掌握如何使input元素不可編輯,我們將探討各種技術,包括HTML屬性、CSS樣式、JavaScript事件處理程序,以及如何處理不同瀏覽器和設備的兼容性問題,1.HTML屬性,readonly最簡單的方法是使用HTMLreadonly屬性,該屬性指示瀏覽器不得允許用戶編輯字段的內容,<,...。

技術教程 2024-09-16 15:37:44

SuperSlide:滑出你的邊界,解鎖無限的滑梯之旅 (superstar)

SuperSlide:滑出你的邊界,解鎖無限的滑梯之旅 (superstar)

準備好踏上激動人心的滑梯之旅了嗎,SuperSlide是一家革命性的滑梯公司,旨在為您帶來前所未有的滑梯體驗,我們相信滑梯不僅僅是一種娛樂活動,它還是一種自我發現和冒險的途徑,當您滑下我們的滑梯時,您將不僅體驗到速度和刺激,還將探索您的極限,發現新的可能性,我們的滑梯在SuperSlide,我們為各個年齡和技能水平的人提供各種各樣的滑...。

最新資訊 2024-09-15 22:17:55

未定義錯誤的謎題:解決常見錯誤的全面指南 (未定義錯誤的語法)

未定義錯誤的謎題:解決常見錯誤的全面指南 (未定義錯誤的語法)

引言未定義錯誤是計算機編程中一種常見的錯誤類型,它們可能難以診斷和解決,因為它們通常沒有提供太多信息,本文將提供一個全面指南,幫助您理解和解決未定義錯誤,未定義錯誤的類型有幾種不同類型的未定義錯誤,變量未定義,嘗試使用未在程序中聲明的變量,函數未定義,嘗試調用尚未定義的函數,類未定義,嘗試實例化尚未定義的類,屬性未定義,嘗試訪問不存在...。

最新資訊 2024-09-15 01:12:59

React Native 性能 (reactnative)

React Native 性能 (reactnative)

ul>,使用CDN,CDN可以加快靜態資源的加載速度,啟用Gzip壓縮,Gzip可以減少HTTP響應的大小,提高加載速度,優化圖像,使用圖像優化工具減少圖像大小,加快加載速度,使用緩存,緩存API調用和網絡響應,以減少延遲,監控網絡流量,使用性能分析工具監控網絡流量,識別延遲和錯誤,提高設備性能使用輕量級庫,選擇輕量級庫,以減少應...。

互聯網資訊 2024-09-14 11:54:27

爬蟲程序的道德與責任:在互聯網上謹慎航行 (爬蟲程序的道具有哪些)

爬蟲程序的道德與責任:在互聯網上謹慎航行 (爬蟲程序的道具有哪些)

爬蟲程序,又稱網絡爬蟲,是一種自動化程序,用于從互聯網上收集數據,它們可以執行從簡單頁面抓取到復雜數據分析的各種任務,盡管爬蟲程序非常有用,但重要的是要意識到使用它們的道德和責任,爬蟲程序的道具有哪些,爬蟲程序可以擁有各種功能,包括,從網站上抓取HTML、CSS和JavaScript文件分析頁面內容,提取文本、圖像和鏈接遵守網站的ro...。

互聯網資訊 2024-09-12 23:13:05

Linux Socket 編程實踐:動手創建多用戶聊天應用程序 (linux是什么意思)

Linux Socket 編程實踐:動手創建多用戶聊天應用程序 (linux是什么意思)

前言Socket編程是網絡編程的基礎,它允許應用程序通過網絡與其他計算機進行通信,Linux提供了出色的Socket編程支持,本文將通過示例指導您創建多用戶聊天應用程序,展示LinuxSocket編程的實際應用,準備工作確保您的系統已安裝Linux操作系統,例如Ubuntu或CentOS,安裝C編譯器和必要的庫,sudoapt,get...。

最新資訊 2024-09-12 05:17:07

掌控 C 語言的復雜性:二級 C 語言詳解 (c語言控制)

掌控 C 語言的復雜性:二級 C 語言詳解 (c語言控制)

引言C語言是一種強大的、廣泛使用的編程語言,以其高效性和可移植性而聞名,但是,對于初學者來說,C語言的復雜性可能會令人生畏,特別是,二級C語言的概念可能會讓人感到困惑,文章旨在提供二級C語言的全面指南,幫助讀者深入理解其概念并掌握其復雜性,本文將涵蓋指針、函數指針、數組和結構等關鍵主題,二級C語言二級C語言是指C語言中更高級、更復雜的...。

互聯網資訊 2024-09-11 10:41:26

掌握二分法的精髓:用C語言探索經典算法 (二分法思路)

掌握二分法的精髓:用C語言探索經典算法 (二分法思路)

什么是二分法,二分法是一種快速高效的搜索算法,用于在有序數據集中查找目標元素,其基本思想是將數據集合不斷對半分,并根據目標元素與中間元素的大小關系來縮小搜索范圍,二分法的核心思路初始化,將查找范圍設定為集合的第一個和最后一個元素,循環搜索,重復以下步驟,直到找到目標元素或搜索范圍為空,計算集合中間元素的索引,將目標元素與中間元素進行比...。

本站公告 2024-09-11 08:51:28

云計算編程:駕馭 AWS、Azure 和 GCP 的力量 (云計算編程模型)

云計算編程:駕馭 AWS、Azure 和 GCP 的力量 (云計算編程模型)

云計算已成為現代應用程序開發的基石,通過利用云服務,開發人員可以構建可擴展、可靠且高效的應用程序,而無需管理和維護自己的基礎設施,在眾多的云計算提供商中,AWS,亞馬遜網絡服務,、Azure,微軟Azure,和GCP,谷歌云平臺,是市場上的三大領導者,這些平臺提供了廣泛的服務,包括計算、存儲、數據庫、分析和大數據,云計算編程模型云計算...。

最新資訊 2024-09-11 02:22:55

成為電影界的巨擘:打造您自己的電影網站,用源碼擴展創意 (成為電影明星用英語怎么說)

成為電影界的巨擘:打造您自己的電影網站,用源碼擴展創意 (成為電影明星用英語怎么說)

成為電影界的巨擘,打造您獨有的電影網站,用源碼擴展您的創造力在當今數字化的時代,電影制作不再是傳統意義上的,大制作,,而是任何擁有創造力、奉獻精神和正確工具的人都可以實現的夢想,通過創建您自己的電影網站,您可以展示您的才華,與世界分享您的故事,并拓展您作為電影制作者的潛力,步驟1,選擇正確的平臺建立電影網站的首要步驟是選擇一個合適的平...。

互聯網資訊 2024-09-07 10:23:06

編程思維:培養解決問題和批判性思考能力 (編程思維培養與學科融合應用)

編程思維:培養解決問題和批判性思考能力 (編程思維培養與學科融合應用)

前言在當今快速變化的數字時代,編程思維已成為必不可少的技能,它是一套可用于解決復雜問題、分析信息和開發創造性解決方案的認知過程和方法,編程思維不僅對于技術專業人員至關重要,對于所有希望在個人和職業生活取得成功的人來說也很重要,編程思維的組成部分編程思維涉及以下關鍵組成部分,分解問題,將復雜問題分解成更小的、可管理的部分,模式識別,識別...。

本站公告 2024-09-06 21:48:13

Copyright ? 2025 聚集網 All Rights Reserved
此內容系本站根據來路自動抓取的結果,不代表本站贊成被顯示網站的內容或立場。
本頁閱讀量次 | 本站總訪問次 | 本站總訪客人 | 今日總訪問次 | 今日總訪客人 | 昨日總訪問次 | 昨日總訪客人 |
技術支持:聚集網

国产精品成人免费视频_91丝袜美腿美女视频网站_国产一区二区三区在线看_亚洲欧美另类中文字幕_在线电影av不卡网址_国产视频丨精品|在线观看_日韩一区二区三区国产_国产欧美va欧美va香蕉在线_热re91久久精品国99热蜜臀_亚洲第一精品电影_久久九九亚洲综合_国产成人综合精品_97视频在线观看网址_精品视频久久久久久_日韩av片免费在线观看_久久精品国产99国产精品澳门
欧美成人免费全部| 亚洲欧美999| 亚洲乱码一区av黑人高潮| 欧美日韩国产91| 日本久久久久久久久久久| 久久精品亚洲精品| 91国产美女视频| 5252色成人免费视频| 人九九综合九九宗合| 国产不卡一区二区在线播放| 久久精品国产免费观看| 欧美片一区二区三区| 日韩va亚洲va欧洲va国产| 亚洲奶大毛多的老太婆| 亚洲精品免费一区二区三区| 欧美成人激情视频免费观看| 91精品久久久久久久久久久| 亚洲欧美综合区自拍另类| 美女久久久久久久| 在线播放日韩精品| 日韩在线视频免费观看高清中文| 丁香五六月婷婷久久激情| 国产精品高清免费在线观看| 国产精品毛片a∨一区二区三区|国| 成人久久18免费网站图片| 欧美一级淫片播放口| 国产一区二中文字幕在线看| 久久久国产视频91| 亚洲精品乱码久久久久久金桔影视| 欧美日韩国产在线| 亚洲成avwww人| 国产精品九九久久久久久久| 久久深夜福利免费观看| 亚洲日本欧美日韩高观看| 欧美乱大交做爰xxxⅹ性3| 国产成人短视频| 欧美精品在线观看| 九色精品免费永久在线| 高清欧美性猛交| 777国产偷窥盗摄精品视频| 韩国福利视频一区| 久久精品国产清自在天天线| 97香蕉超级碰碰久久免费的优势| 欧美黑人巨大精品一区二区| 欧美在线视频在线播放完整版免费观看| 欧美黑人巨大xxx极品| 日韩欧美亚洲国产一区| 91欧美视频网站| 日韩av在线直播| 中文国产亚洲喷潮| 精品高清一区二区三区| 亚洲视屏在线播放| 日韩欧美在线中文字幕| 成人国产精品久久久| 精品视频在线观看日韩| 欧美黑人巨大xxx极品| 久久成人这里只有精品| 国产视频精品va久久久久久| 亚洲国产精品系列| 亚洲激情视频在线播放| 欧美大片免费观看| 精品一区二区三区四区| 不卡av在线网站| 成人免费在线网址| 中文字幕少妇一区二区三区| 久久精品国产91精品亚洲| 亚洲欧美自拍一区| 欧美性色视频在线| 日韩欧美在线免费观看| 97涩涩爰在线观看亚洲| 欧美午夜片欧美片在线观看| 26uuu国产精品视频| 亚洲欧洲在线观看| 久久久亚洲网站| 欧美乱大交做爰xxxⅹ性3| 国产精品国模在线| 日本精品久久久久影院| 国产日产欧美a一级在线| 亚洲精品一区久久久久久| 色青青草原桃花久久综合| 色婷婷综合成人| 亚洲视频在线观看免费| 国产精品美女视频网站| 欧美激情视频给我| 国产精品丝袜久久久久久不卡| 亚洲美女又黄又爽在线观看| 欲色天天网综合久久| 日韩av免费看| 91精品国产91久久久| 欧美日韩高清在线观看| 欧美激情videos| 成人在线视频福利| 久久久久久91| 青青在线视频一区二区三区| 97在线免费观看| 久久久久www| 色先锋久久影院av| 亚洲欧洲一区二区三区久久| 黑人巨大精品欧美一区二区一视频| 成人黄色av播放免费| 中文字幕视频一区二区在线有码| 成人激情免费在线| 亚洲成人久久久| 成人精品福利视频| 久久国产精品电影| 国产精品成人一区| 精品丝袜一区二区三区| 亚洲一二在线观看| 91精品国产91久久| 国产亚洲美女精品久久久| 国产亚洲视频中文字幕视频| 91爱视频在线| 欧美性开放视频| 日韩欧美成人网| 91久久夜色精品国产网站| 午夜精品三级视频福利| 欲色天天网综合久久| 热草久综合在线| 成人中心免费视频| 68精品久久久久久欧美| 久久久久久久影视| 国产一区二区动漫| 国产在线观看精品一区二区三区| 国产成人亚洲精品| 日韩av电影国产| 国产精品久久久久久久久免费| 亚洲精品色婷婷福利天堂| 亚洲福利视频二区| 精品久久久国产精品999| 国产精品美女免费视频| 欧美日韩午夜视频在线观看| 一区二区三区四区精品| 按摩亚洲人久久| 久久久精品欧美| 久久久免费观看视频| 国产精品极品美女在线观看免费| 在线播放日韩av| 国产午夜精品理论片a级探花| 日韩大片在线观看视频| 亚洲精品有码在线| 国产精品一区久久| 日韩欧美亚洲范冰冰与中字| 国产精品永久免费在线| 国产亚洲一区二区在线| 久久久久久噜噜噜久久久精品| 日韩美女视频免费看| 欧美猛男性生活免费| 第一福利永久视频精品| 日韩人体视频一二区| 精品日韩视频在线观看| 国产精品免费看久久久香蕉| 久久国产加勒比精品无码| 亚洲影影院av| 亚洲精品美女在线| 成人免费黄色网| 国产精品青草久久久久福利99| 中文字幕亚洲色图| 国产精品自产拍在线观看| 久久久久久亚洲精品中文字幕| 91高清在线免费观看| 久久精品国产一区二区三区| 欧美日韩国产123| 精品国产鲁一鲁一区二区张丽| 国产精品444|