來自java架構,java技術架構有哪些

本文目錄一覽:

Java的有幾種技術架構

Java架構:

軟件架構作為一個概念,體現在技術和業務兩個方面。

從技術角度來說:軟件架構隨着技術的革新不斷地更新其內容,軟件架構建立於當前技術和一些基本原則的基礎之上。

先說一些基本原則:

分層原則:分層是為了降低軟件深度複雜性而使用的關鍵思想,就像社會有了階級一樣,軟件有了層次結構。

模塊化原則:模塊化是化解軟件廣度複雜的必然手段,模塊化的目的就是讓軟件分工。

接口實現分離原則隨着軟件模塊化的不斷深入改進,面向接口編程而不是面向實現編程可以讓複雜度日趨增高的軟件降低模塊之間的耦合度,從而讓各模塊更輕鬆改進。從這個原則出發,軟件也從微觀進行了細緻的規範化。

還有兩個比較小但很重要的原則:

細節隱藏原則很顯然把複雜問題簡化,把難看的細節隱去,能讓軟件結構更清晰。其實這個原則使用很普遍,java/c++語言中的封裝原則以及設計模式中的Facade(外觀)模式就很能體現這個原則的精神。

依賴倒置原則隨着軟件結構的進一步發展,層與層之間、模塊與模塊之間的依賴逐漸加深,而層、模塊的動態可插拔要求不端增大。依賴倒置原則可看視為接口實現分離原則的深化,根據此原則的精神,軟件進入了工具時代。這個原則有點類似於知名的好萊塢法則:Don’t call us, we’ll call you。

以上這些原則奠定了我們的軟件架構的價值指標。但軟件架構畢竟是建立在當前技術之上的。而每一代技術都有架構模式。過去的不再說了,讓我們現在就來看一下當前流行的技術,以及當前我們能採用的架構。

因為面向對象是當前最流行開發技術,且設計模式的大量使用使面向對象的走向成熟,而數據庫是當前最有效的存儲結構、web界面是當前最流行的用戶接口,所以當前最典型的三層次架構就架構在以上幾項技術的基礎之上,用數據庫作存儲層、用面向對象來實現業務層、用web來作為用戶接口層。我們從三層次架構談起:

因為面向對象技術和數據庫技術不適配,所以在標準三層次架構的基礎上,我們增加了數據持久層,來管理O-R雙向映射,但目前一直沒有最理想的實現技術。cmp和entity bean技術因為其實現複雜,功能前景有限,已接近被淘汰的邊緣。JDO及hibernate作為o-r映射的後期之秀,尤其是hibernate,功能相當完備。推薦作為持久層的首選

在業務層,因為當前業務日趨負載,且變動頻繁,所以我們必須有足夠敏捷的技術來保證我們的適應變化的能力,在標準j2ee系統中session bean負責業務處理,且有不錯的性能表現,但採用ejb系統對業務架構模式改變太大,且其複雜而昂貴,業務代碼移植性差。而spring 作為一個bean配置的輕量級架構,漂亮的IOC模式實現,對業務架構影響小,所以推薦作為中間層業務框架。

在用戶結構層,雖然servlet/jsp/jstl/javaBean 能夠實現MVC架構,但終究過於粗糙。struts對MVC架構的實現就比較完美,Taperstry也極好地實現MVC架構,且採用基於事件的方式,非常誘人,惜其不夠成熟,我們仍舊推薦struts作為用戶接口層基礎架構。

因為業務層是三層次架構中最有決定意義的,所以讓我們回到業務層細緻地分析一下,在複雜的業務我們常常需要以下基礎服務的一種或幾種:事務一致性服務acid(tool:jta/jts)、並發加鎖服務concurrentlock、池化管理服務cache、訪問控制服務(tool:jaas)、流程控制服務workflow、動態實現服務IOC,串行化消息服務(tool:jms)、負載平衡服務blance等。如果我們不採用重量級應用服務器(如weblogic,websphere,jboss等)及重量級組件(EJB),我們必須自己實現其中一些服務。雖然我們大多情況下,不需要所有這些服務,但實現起來卻非易事。幸運的是我們有大量的開源實現代碼,但採用開源代碼卻常常是件不輕鬆的事。

隨着xml作為結構化信息傳輸和存儲地位日漸重要,一些xml文檔操作工具(DOM,Digester,SAX等)的使用愈發重要,而隨着xml schema的java binding工具(jaxb,xmlbean等)工具的成熟,採用xml schema來設計xml文檔格式,然後採用java binding來生成java bean 會成為主要編程模式,而這又進一步使數據中心向xml轉移,使在中小數據量上,愈發傾向於以xquery為查詢語言的xml數據庫。最近還有一個趨勢,microsoft,ibm等紛紛大量開發中間軟件如(microsoft office之infopath),可以直接從xml schema 生成 錄入頁面等非常實用的功能。還有web service 的廣泛應用,都將對軟件的架構有非常重大的影響。至於面向服務架構(SOA)前景如何,三層次架構什麼時候走入歷史,現在還很難定論。

aop的發展也會對軟件架構有很深的影響,但在面向對象架構里,無論aspectJ還是jboss-aop抑是aspectWerks、nanning都有其自身的嚴重問題:維護性很差,所以說它將很難走遠。也許作為一個很好的思想,它將在web service里大展身手。

rdf,owl作為w3c語義模型的標誌性的語言,也很難想象能在當前業務架構發揮太大影響。但如果真如它所聲稱那樣,廣泛地改變着信息的結構。那麼對軟件架構也會有深遠影響。

有關架構設計的一些忠告:

盡量建立完整的持久對象層.可獲得高回報

盡量將各功能分層,分塊,每一模塊均依賴假定的其它模塊的外觀

不能依賴靜態數據來實現IOC模式,應該依賴數據特徵接口,靜態數據僅是數據特徵接口實現方式之一

架構設計時xml是支持而不是依賴.但可以提供單一的xml版本的實現

從業務角度說:軟件架構應是深刻體現業務內部規則的業務架構,但因為業務變化頻紝,所以軟件架構很難保持恆定不變,但業務的頻繁變化不應是軟件架構大規模頻繁變化的原因,軟件架構應是基於變化的架構。

一種業務有其在一段時間內穩定存在的理由(暫且不談),業務內部有許多用例,每一種用例都有固定的規則,每一規則都有一些可供判定的項,每一項從某一維度來觀察都是可測量的,我們的架構首先必須保證完美適應每一項每一種測量方式,很多失敗的架構都是因為很多項的測量方式都發生變更這種微觀變化中。

每個用例都有規則,我們在作業務用例分析,常常假定一些規則是先驗的,持久穩定的,然而後來的業務改變常常又證明這種看法是錯誤的,然而常常我們的架構已經為之付出了不可挽回的代價。大量事實證明:規則的變化常常用例變化的根本原因。所以我們的架構要儘可能適應規則的變化,儘可能建立規則模版。

每個用例都關係著不同的角色。每一個用例的產生都必然是因為角色的變更(注意:不是替換,而是增強或減弱),所以注意角色的各種可能情況,對架構的設計有舉足輕重的意義。在我們當前的三層架構里,角色完美地對應接口概念。

在一個系統里很多用例都相互關聯,考慮到每個用例均有可能有不同的特例,所以在架構設計中,盡量採用依賴倒置原則。如架構許可可採用消息通信模式(JMS)。這樣可降低耦合度。

現在我們談一下業務穩定存在理由對業務的影響。存在即是合理,在這裡當然是正確的。業務因人而存在,所以問業務存在的理由即是問不同角色的需要這項業務的理由以及喜歡不喜歡當前業務用例的理由,所有這樣的角色都應該在系統里預留。《待續》

在架構設計中有幾個原則可以考慮:

用例盡量細分

用例盡量抽象

角色盡量獨立

項測量獨立原則

追求簡單性

這裡未提供相關的例子,例子會在以後的更新時提供。

業務和模式之間的關係

業務中的一些用例之間的關係常常和一些常規的模式很相似。但隨着時間的演化,慢慢地和先前的模式有了分歧。這是個正常的現象。但這對系統架構卻要求非常高,要求系統架構能適應一些模式的更替。在這裡我們儘可能早地注意到用例之間的相互角色變化,為架構更新做好準備.

java有哪些框架需要學習呢?

Java有三大框架:Struts,Hibernate和Spring。struts是開源軟件,通過學習struts的流程,架構,model部分,view部分和contorller組件來了解框架;Hibernate是開源代碼的對象關係映射框架,通過學習session接口等來了解框架。

1.三大框架簡介1、Spring Spring 是一個解決了許多在J2EE 開發中常見的問題的強大框架. Spring 提供了管理業務對 象的一致方法並且鼓勵了注入對接口編程而不是對類編程的良好習慣.Spring 的架構基礎是 基於使用JavaBean 屬性的Inversion Control容器.然而,這僅僅是完整圖景中的一部 分:Spri

跟着這個網站學吧:網站內容豐富,既有Java SE的基礎:中級:前端:J2EE:Java框架:還有實踐項目:我自己就是跟着上面的順序一路學過來…

2.Java 語言編寫的 AOP 框架,它給 POJOs 提供了聲明式的事務管理和其他企業事務–如… 開始的學習和應用非常的艱苦,很多東西都不 能一下子就很容易的理解.EJB 要嚴格地…

這是兩種以跨平台為特色的開發方式.Qt更多被認為是一種框架,但是Qt中有新增一些C… 博文 在博主認為,學習java的最佳學習方法莫過於視頻+博客+書籍+總結,前三者博主將…查看全部

2016年8月22日-根據每個人的學習方式、方法不同,可以制定具體的計劃。今天為大家整理了搭建Java知識框架的幾個方法… java框架SSM一. 序言本次培訓分四個階段進行,…

3.2008年1月3日-和如何學習JAVA框架的一點看法吧,希望對“望而生畏”的您,和“蠢蠢欲動… 自己需要的時候去copy過來就行,個人也認為這是很好的一種方式,往往自己從… 這就是第二個問題。 第二個問題,我想分兩方面來回答一下。1、學什麼?想要學好,當…

2016年8月3日- 用配置文件或者是Annonation的方式來代替New創建實例,可以說這是一個… Java框架學習 順序是哪些? Java框架學習 順序是哪些?詳細步驟具體如下:…

[ 圖文 ] 2013年12月9日- 三大框架簡介JAVA三大框架用來做WEB應用。struts主要負責表示層的顯示spring利用Java框架學習方法更多下載資源、學習資料請訪問CSDN文庫頻道….

Java 語言編寫的 AOP框架, 它給 POJOs 提供了聲明式的事務管理和其他企業事務–如… 在 EJB 開始的學習和應用非常的艱苦, 很多東西都不能一下子就很容易的理解.

希望能幫到你,謝謝!

java系統架構有哪些apache

java系統架構有一下幾種:

_ava框架 一、Spring框架。 Spring框架是Java後端框架家族中最強大的,擁有IOC和AOP兩大利器,簡化了開發的複雜性。此外,Spring現在可以與所有主流開發框架集成,這是一個通用框架。Spring使Java開發變得簡單。

?2.SpringMVC框架。 它是MVC的開源框架,用來代替Struts,是Spring項目的重要組成部分,可以與SpringIOC容器結合,具有松耦合、配置方便、代碼分離等特點,使Java程序員更容易開發WEB項目。

_SpringBoot框架。 SpringBoot是Spring開源組織下的一個子項目,也是Spring組件的一站式解決方案,主要是為了簡化使用Spring的框架難度。

?

_摹CloudSpring。

_饈且幌盜鋅蚣艿撓行蚣希悄殼白釗讓諾奈⒎窨蚣艿氖籽 J紫齲_pringBoot開發的便利性,巧妙地簡化了分布式系統基礎的開發,如服務發現註冊、配置中心、消息總線、負載平衡、斷路器、數據監控等。,可以使用SpringBoot的開發風格一鍵啟動和部署。

_濉Netty。 JBOSS提供的開源異步Netty是基於事件驅動的網絡通信框架。能迅速提高開發性能,高可靠性的網絡服務器和客戶端程序,netty簡化了網絡應用的編程開發過程,使用開發網絡編程變得極其簡單。

_Quartz。 Quartz是一個基於Java廣泛使用的開源任務調度框架。做過定時任務的沒用過這個框架嗎?

?7.jQuery。 JQuery是一個快速簡潔的JavaScript框架,它包裝了JavaScript常用的功能代碼,提供了一種簡單的JavaScript設計模式,極大地簡化了JavaScript編程。

?8.4jLog。 Log4j是Apache的開源日誌框架。通過Log4j,我們可以將程序中的日誌信息輸出到控制台和文件中記錄日誌。Log4j2是最古老的日誌框架,其主流版本是Log4j2。Log4j2是一個重新構建的日誌框架,它拋棄了之前Log4j的不足,吸收了Logback的優秀日誌框架設計。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193285.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 15:00
下一篇 2024-12-01 15:00

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字符串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字符串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論