java中的重量级与轻量级概念
首先輕量級(jí)與重量級(jí)是一個(gè)相對(duì)的概念,主要是對(duì)應(yīng)用框架使用方便性和所提供服務(wù)特性等方面做比較的。
比方說(shuō)EJB就是一個(gè)重量級(jí)的框架,因?yàn)樗鼘?duì)所編寫的代碼有限制,同時(shí)它也提供分布式等復(fù)雜的功能。
相比之下,Spring就是輕量級(jí)框架,因?yàn)樗枰闹皇瞧胀ǖ腏ava對(duì)象,它所提供的也只是足夠中小應(yīng)用使用的功能。
但是,隨著Spring的發(fā)展,它也所具有的功能也越來(lái)越強(qiáng)大,而EJB的使用也在變得簡(jiǎn)單,所以這隨著技術(shù)的發(fā)展,這個(gè)概率也需要更新。畢竟它的出現(xiàn)是為了和使用復(fù)雜的框架做區(qū)別,那么當(dāng)各家都在不斷吸收對(duì)方長(zhǎng)處的時(shí)候這個(gè)界線就沒(méi)有那么明顯了。
其實(shí):劃分一個(gè)應(yīng)用是否屬于輕量級(jí)還是重量級(jí),主要看它使用了多少服務(wù).使用的服務(wù)越多,
容器要為普通java對(duì)象做的工作就越多,必然會(huì)影響到應(yīng)用的發(fā)布時(shí)間或者是運(yùn)行性能.
對(duì)于spring容器,它提供了很多服務(wù),但這些服務(wù)并不是默認(rèn)為應(yīng)用打開(kāi)的,應(yīng)用需要某種服務(wù),還需要指明使用該服務(wù),如果
應(yīng)用使用的服務(wù)很少,如:只使用了spring核心服務(wù),那么我們可以認(rèn)為此時(shí)應(yīng)用屬于輕量級(jí)的,如果應(yīng)用使用了spring提供的大部分服務(wù),這時(shí)應(yīng)用就屬于重量級(jí)。目前EJB容器就因?yàn)樗J(rèn)為應(yīng)用提供了EJB規(guī)范中所有的功能,所以它屬于重量級(jí)。
另外:輕量級(jí)組件是用JAVA代碼畫(huà)出來(lái)的,這樣具有平臺(tái)移植性
而重量級(jí)組件是調(diào)用操作系統(tǒng)的函數(shù)畫(huà)出來(lái)的組件,比如主窗體
一般來(lái)說(shuō)盡量用輕量級(jí)的組件,這樣對(duì)程序的移植性很好
一般javax.swing包里的組件大部分是輕量級(jí)的
java.awt里面的是重量級(jí)的
Swing是由100%純Java實(shí)現(xiàn)的,Swing組件是用Java實(shí)現(xiàn)的輕量級(jí)( light-weight)組件,沒(méi)有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的最大區(qū)別。由于AWT組件通過(guò)與具體平臺(tái)相關(guān)的對(duì)等類(Peer)實(shí)現(xiàn),因此Swing比AWT組件具有更強(qiáng)的實(shí)用性。Swing在不同的平臺(tái)上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其它特性。
總的說(shuō)來(lái):
重量級(jí)組件:運(yùn)行平臺(tái)必須存在一個(gè)對(duì)應(yīng)的組件.
輕量級(jí)組件:在一個(gè)虛擬的畫(huà)布上畫(huà)出來(lái)的組件(所以swing較慢),所有輕量級(jí)組件"最終"要放到重量級(jí)組件(jframe,jdialog)中.由于是畫(huà)出來(lái)所以能做到各種平臺(tái)上一致的表現(xiàn).同樣,如果混合重量級(jí)組件和輕量級(jí)組件容易引起重疊上的沖突.
JDK 1.2 之后,Java 有了另一組 GUI 的 API,叫做 Swing。因?yàn)?Swing 是 lightweight 的 API,所以無(wú)所不能,不但有各式各樣先進(jìn)的組件,而且連組件風(fēng)格都可抽換。Swing 出現(xiàn)之后,大家很快地就不太使用 AWT 了。
不要以為 Swing 是用來(lái)取代 AWT 的,其實(shí) Swing 是架構(gòu)在 AWT 之上做出來(lái)的(Swing 有四個(gè) heavyweight 組件),沒(méi)有 AWT,也就不會(huì)有 Swing。Swing 的出現(xiàn)只是減少程序員直接使用 AWT 的機(jī)會(huì),而不會(huì)讓 AWT 消失。
總結(jié)
以上是生活随笔為你收集整理的java中的重量级与轻量级概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql sshd_制作Docker镜
- 下一篇: docker 查看已安装容器_WIN7下