Java有三種類加載器,分別是啟動類加載器(Bootstrap ClassLoader)、擴展類加載器(Extension ClassLoader)和應用程序類加載器(Application ClassLoader)。
啟動類加載器(Bootstrap ClassLoader):負責加載Java的核心類庫,例如Java API中的rt.jar和resources.jar等。它是JVM內置的類加載器,通常由JVM的實現提供。
擴展類加載器(Extension ClassLoader):負責加載Java擴展類庫,例如Java API中的ext目錄中的jar包。它是由JVM的實現提供的類加載器,通常是在啟動類加載器之后加載的。
應用程序類加載器(Application ClassLoader):負責加載應用程序中的類,例如Java應用程序中的jar包。它是由Java開發者自己提供的類加載器,通常是在擴展類加載器之后加載的。
類加載器的工作原理如下:
類加載器首先從文件系統、網絡等地方獲取類文件的字節碼。
類加載器將獲取到的字節碼加載到JVM的內存中,并將其轉換成運行時數據結構(例如Java類)。
類加載器為加載的類分配一個唯一的標識符,并將其保存在運行時數據結構中,以便后續的訪問。
類加載器將加載的類的依賴類遞歸加載,并通過Java虛擬機的鏈接階段來解析它們之間的關系。
最后,類加載器將運行時數據結構中的類提交給Java虛擬機執行。
總的來說,類加載器的工作是將類文件加載到JVM內存中,并將其轉換為可執行的Java類。通過使用不同的類加載器,Java程序可以實現動態加載類、版本控制、代碼隔離等功能。