999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

芻議Java動態類加載機制研究與應用

2016-07-10 05:38:09朱丹丹
電子技術與軟件工程 2016年7期

目前計算機的運行可以說已經離不開Java編程體系,Java是指一種能夠撰寫跨平臺的應用軟件的面向其對象的程序設計語言。JVM(虛擬機)是Java編程體系的核心,而Java的動態類加載則是JVM的重要特征之一。本文就Java的動態類加載機制的研究與應用,淺要分析了Java的動態類加載器的原理與層次體系結構,以作參考。

【關鍵詞】Java虛擬機 動態類加載機制 體系結構 研究應用

1 Java類加載的層次體系結構

Java中的所有類都是經由裝載到jvm中的類加載器加載完成的,類加載器就是把類文件從硬盤讀取到內存中。Java中的類可分為Java系統核心類。擴展類以及由程序員自定義的類;jvm的加載器也分為Bootstrap,classLoader,ExtClassLoader以及AppClassLoader,其分別對應的是加載Java的系統核心、擴展以及程序員自定義的應用類。另外,除了jvm默認的三個加載器,第三方如果有特殊的需求,也可以自己編寫類加載器。就比如,如果需要加密指定目錄的類,就只能用我們自己類的加載器才能解密加載。

2 Java動態類加載機制的原理

JVM解釋字節碼,就得經過加載、連接以及初始化三個過程,通過這三個過程創建了一個類型,且被Java程序所使用。

2.1 加載

就是要通過尋找類或者是接口字節碼文件,從而來進行解析并且構造出JVM內部對象所表示的組件。

2.2 連接

即是將加載過的二進制數據進行合并,進入到JVM中,其中包括有檢查、準備以及解析三個階段。

2.3 初始化

也就是對靜態的變量、靜態代碼塊進行初始化工作。

也就是說,JVM在運行時會產生幾個類加載器,而當類加載器要運行時,Java對類加載器進行了分工以及分級,以方便多個類加載器的協調工作。而且同一級別的類加載器負責相應級別的類。JVM采用的是“全盤負責雙親委托模型”的類加載器機制,“全盤負責”指的是一個加載器裝載一個雷=類,該類依靠和引用的類也是從這個加載器載入。“委托模型”則是說加載器加載某個類時,會先在加載器中檢測需要加載的類有沒有加載,加載了便直接返回到先前加載過的類對象,反之,這個類沒有被加載過,就把其類名上交給父類加載器,讓父類加載器去加載,如果父類加載器可以加載,就返回對應的class對象,不然就還是得繼續向上提交到根引導類加載器,這就是一個遞歸的過程。從安全性方面考慮,只有在根引導器都無法加載了,才從自己的類路徑里查詢裝載目標類,這樣的話,就算是有人寫了惡性的基礎類,并將其加載到了JVM中,但是一旦有了委托模型,就永遠是根加載轉載基礎類,也就能夠抵制惡劣后果的出現了。

3 Java動態類加載的實現

JVM加載類的方式主要分為隱形加載和顯式加載。隱式加載是指程序在運行時用new等的方式生成對象然后加載到對應的JVM里,顯式裝載是程序員把需要的類加載器加載到內存當中。有兩種方法,分別是Class.forName以及java.lang.ClassLoader,其顯式加載很大程度上提高了程序的靈活性。任何類的加載都是經由抽象類、ClassLoader類和其子類實現,是屬于Java核心API的一部分,所有的自定義類加,載器必須得繼承以及實例化該類,其主要途徑有:

3.1 Class loadClass

用委托機制來加載該類,檢查此類加載器中要加載的項目是不是已經加載過,是的話就返回到先搶加載過該類的對象,若是沒有被加載,就讓父類加載器加載,最后調用finaClass的方法查找該類。

3.2 Class findClass

可通過制定的二進制查找該類,用父類加載器檢查好所有請求的類以后,這個方法會被loadClass所調回,loadClass的缺省實現調用此方法,且能夠對其覆蓋定制。

3.3 Class defineClass

此種方法主要是把字節數組轉化成類的字節碼。

3.4 Class findSystem

用系統類的加載器加載該類文件,若有,為將該文件裝換成類,可以把其原始的字節轉換為Class對象。

3.5 Class findLoadedClass

若是Java虛擬機已經把這個加載器記錄成二進制名稱的某個類加載器,就返回此二進制名稱的類。

4 Java動態類加載的運用

Java的動態類加載器能夠對已經完整的程序進行改造,其加載功能相當強大,能夠通過控制類的加載過程,從而豐富程序功能,比如常用到的網絡頁面,建立了一個手機網站,后臺的分工十分細化。首先分配控制欄目以及公共功能,然后建立差異化和可拔插模塊,將靜態頁面動起來,以動態化的方式滿足不同人的需求。靈活性調整模塊的功能,讓系統更加靈活且最大化的擴展系統。同時這種動態的加載既在一定程度上降低了網頁受到惡性攻擊的風險,也提升了系統的穩定性與流暢性,讓用戶得到更好更深層次的體驗。

綜上所述,Java動態類加載毫無疑問是Java程序中具有動態性的關鍵機制,同時也是JVM的一項核心技術,在程序設計領域中動態加載機制占據著重要的位置,它可以自定義的加載策略以及實現動態名字的空間,具有非常大的靈活性。深入學習Java動態類加載機制可以有效提高Java程序的質量以及效率,本文主要對Java動態類加載機制做了一個簡要分析和探討,但是Java動態類加載的重點和運用絕對不僅限于這些,還有很多我們發現或者沒發現的作用和機理,這些都還有待日后的進一步探討。

參考文獻

[1]王萬森,龔文.Java動態類加載機制研究及應用[J].計算機工程與設計,2011,06:2154-2158.

[2]崔行臣,趙佟.Java動態類加載機制分析及其應用[J].計算機系統應用,2013,07:187-191.

[3]肖銀瑩,陳瑛,陳超.Java動態類加載機制研究及應用[J].電子技術與軟件工程,2015,21:252.

作者簡介

朱丹丹(1969-),女,湖北省荊州市人。大學本科學歷。現為仙桃職業學院講師。研究方向為Java、Android應用開發。

作者單位

仙桃職業學院 湖北省仙桃市 433000

主站蜘蛛池模板: 国产精品亚洲а∨天堂免下载| 福利小视频在线播放| 国产精品美女免费视频大全| 亚洲VA中文字幕| 亚洲狠狠婷婷综合久久久久| 国产嫖妓91东北老熟女久久一| 日韩午夜福利在线观看| 久久精品嫩草研究院| 99手机在线视频| 日本伊人色综合网| 97狠狠操| 岛国精品一区免费视频在线观看 | 久久无码av三级| 国产欧美日韩18| 精品一區二區久久久久久久網站| 一级高清毛片免费a级高清毛片| AV网站中文| 欧美天天干| 在线国产毛片手机小视频| 成人在线综合| 久久青草精品一区二区三区| 在线观看免费人成视频色快速| 欧美亚洲国产日韩电影在线| 91精品国产自产91精品资源| 国产理论精品| 好吊日免费视频| 亚洲第七页| 一级一毛片a级毛片| 久久综合结合久久狠狠狠97色| 4虎影视国产在线观看精品| 一级爱做片免费观看久久| 成色7777精品在线| 伊人色综合久久天天| www欧美在线观看| 色哟哟国产成人精品| 国产经典三级在线| 91在线免费公开视频| 亚洲av综合网| 亚洲成人精品久久| 91久久偷偷做嫩草影院免费看 | 精品欧美一区二区三区久久久| 亚洲天堂日韩在线| 国产极品美女在线播放| 91蝌蚪视频在线观看| 亚洲A∨无码精品午夜在线观看| 色网站在线视频| 亚洲国产精品VA在线看黑人| 伊人久久久久久久久久| 久久性妇女精品免费| 久久国产精品电影| 91色爱欧美精品www| 欧美在线精品一区二区三区| 久久无码av三级| 国产亚洲精| 98精品全国免费观看视频| 亚洲天堂视频在线观看免费| 青青青视频蜜桃一区二区| 久久这里只有精品免费| 成人日韩精品| 精品剧情v国产在线观看| 免费国产好深啊好涨好硬视频| 国产精品久久久久久久久久98| 精品国产亚洲人成在线| 这里只有精品国产| 91精品国产自产91精品资源| h视频在线观看网站| 国产美女无遮挡免费视频| 欧美成人综合在线| 三级国产在线观看| 亚洲精品国产首次亮相| 欧美成人综合在线| a色毛片免费视频| 日本高清视频在线www色| 蜜桃视频一区| 激情無極限的亚洲一区免费| 青青草国产精品久久久久| 一级片免费网站| 午夜毛片免费观看视频 | 国产亚洲现在一区二区中文| 国产精品一区二区在线播放| 一个色综合久久| 激情亚洲天堂|