Java作為一門很受歡迎的開發(fā)語言,一直以它簡單、運用廣泛被IT行業(yè)所重視著。那么JAVA語言的工作原理是什么呢?對于很多想要學習Java語言的學員來說說,在學習的時候弄清楚Java語言的工作原理是非常的重要的。只有整理清楚了才可以快速的進入到學習Java語言的狀態(tài),下面就跟著小編來學習下Java語言的工作原理吧。
1、Java類加載器的分類
Java中的類加載器主要分為以下四類:
(1)根類加載器(BootStrapClassLoader),主要負責加載jre/lib/rt.jar相關的字節(jié)碼文件的。
(2)擴展類加載器(ExtensionClassLoader),主要負載加載jre/lib/ext/*.jar這些jar包的。該類加載器在JDK1。9的時候更名為:Platform Class Loader,其父類加載器為:null。
(3)應用程序類加載器(ApplicationClassLoader),主要負責加載用戶自定義的類以及classpath環(huán)境變量所配置的jar包的。該類加載器在JDK1.9的時候更名為:System ClassLoader,其父類加載器為:ExtensionClassLoader。
(4)自定義類加載器(UserClassLoader),負責加載程序員指定的特殊目錄下的字節(jié)碼文件的。大多數(shù)情況下,自定義類加載器只需要繼承ClassLoader這個抽象類,重寫findClass()和loadClass()兩個方法即可。
2、Java類加載器的類加載機制
最后,我們再來聊一聊”類加載機制”,在JVM中類加載機制主要有3種:
(1)全盤加載。顧名思義,就是當某一個類加載器加載某個.class文件時,默認也會連同該文件所依賴的.class一起加載(除非顯示聲明通過某個指定的類加載器加載)。
(2)緩存機制。即所有類加載器已經(jīng)加載過的.class文件都會被保存到緩存中,下次使用該.class文件時,JVM會優(yōu)先從緩存中查找,如果沒有,才會去加載指定的字節(jié)碼文件,這也是為什么當字節(jié)碼文件變化后,需要重啟JVM后才能看到修改效果的原因。
(3)雙親委派。大白話解釋,兒子(App)要星星,他自己實現(xiàn)不了,就找他老爹(Ext)要,他老爹能實現(xiàn)的話就給他了,實現(xiàn)不了,就找他爺爺(BootStrap)要,說:你孫子要天上的星星。他爺爺如果能實現(xiàn)就給了,如果也實現(xiàn)不了,就會告訴他爹(Ext),讓你兒子(App)自己實現(xiàn)吧。這種情況有點極端,屬于誰都沒有加載,則程序報錯,會拋出異常。
(4)總結:類加載器自上而下檢查(App-->Ext-->BootStrap),自下而上加載(BootStrap-->Ext-->App)。
3、Java類加載器的概述
類加載器(ClassLoader)是負責加載類的對象的,也就是將.class字節(jié)碼文件加載到JVM內(nèi)存中的。那它什么時候才會去加載.class字節(jié)碼文件呢?答案是:當Java程序第一次使用某個類中的內(nèi)容,而該類的字節(jié)碼文件在內(nèi)存中不存在時,類加載器就會去加載該類的字節(jié)碼文件。
俗話說”渡人先渡己”,要想成為別人的榜樣,幫助別人。首先要做好自己。生活中如此,類加載器也一樣。要想加載我們自定義的類,類加載器必須先完成”自加載”的過程。聊到這,不得不提的就是”類加載器的分類”了。
以上就是小編給大家整理的關于“Java編程零基礎入門之Java語言的工作原理”內(nèi)容,希望大家在開始學習java技術的時候可以有用。