java中的重量級與輕量級概念

來源:互聯網
上載者:User

首先輕量級與重量級是一個相對的概念,主要是對應用程式框架使用方便性和所提供服務特性等方面做比較的。
比方說EJB就是一個重量級的架構,因為它對所編寫的代碼有限制,同時它也提供分布式等複雜的功能。
相比之下,Spring就是輕量級架構,因為它需要的只是普通的Java對象,它所提供的也只是足夠中小應用使用的功能。
但是,隨著Spring的發展,它也所具有的功能也越來越強大,而EJB的使用也在變得簡單,所以這隨著技術的發展,這個機率也需要更新。畢竟它的出現是為了和使用複雜的架構做區別,那麼當各家都在不斷吸收對方長處的時候這個界線就沒有那麼明顯了。

 

其實:劃分一個應用是否屬於輕量級還是重量級,主要看它使用了多少服務.使用的服務越多,

容器要為普通java對象做的工作就越多,必然會影響到應用的發布時間或者是運行效能.

對於spring容器,它提供了很多服務,但這些服務並不是預設為應用開啟的,應用需要某種服務,還需要指明使用該服務,如果

應用使用的服務很少,如:只使用了spring核心服務,那麼我們可以認為此時應用屬於輕量級的,如果應用使用了spring提供的

大部分服務,這時應用就屬於重量級。目前EJB容器就因為它預設為應用提供了EJB規範中所有的功能,所以它屬於重量級。

 

另外:輕量級組件是用JAVA代碼畫出來的,這樣具有平台移植性
而重量級組件是叫用作業系統的函數畫出來的組件,比如主表單
一般來說盡量用輕量級的組件,這樣對程式的移植性很好
一般javax.swing包裡的組件大部分是輕量級的
java.awt裡面的是重量級的

Swing是由100%純Java實現的,Swing組件是用Java實現的輕量級( light-weight)組件,沒有本地代碼,不依賴作業系統的支援,這是它與AWT組件的最大區別。由於AWT組件通過與具體平台相關的對等類(Peer)實現,因此Swing比AWT組件具有更強的實用性。Swing在不同的平台上表現一致,並且有能力提供本地視窗系統不支援的其它特性。

 

總的說來:

重量級組件:運行平台必須存在一個對應的組件.
輕量級組件:在一個虛擬畫布上畫出來的組件(所以swing較慢),所有輕量級組件"最終"要放到重量級組件(jframe,jdialog)中.由於是畫出來所以能做到各種平台上一致的表現.同樣,如果混合重量級組件和輕量級組件容易引起重疊上的衝突.

JDK 1.2 之後,Java 有了另一組 GUI 的 API,叫做 Swing。因為 Swing 是 lightweight 的 API,所以無所不能,不但有各式各樣先進的組件,而且連組件風格都可抽換。Swing 出現之後,大家很快地就不太使用 AWT 了。
不要以為 Swing 是用來取代 AWT 的,其實 Swing 是架構在 AWT 之上做出來的(Swing 有四個 heavyweight 組件),沒有 AWT,也就不會有 Swing。Swing 的出現只是減少程式員直接使用 AWT 的機會,而不會讓 AWT 消失。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.