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



首先輕量級與重量級是一個相對的概念,主要是對應用框架使用方便性和所提供服務特性等方面做比較的。
比方說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 消失。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM