亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java動態(tài)類加載機制應用研究

        2018-09-13 10:47:16孫彬
        科技創(chuàng)新與應用 2018年23期
        關(guān)鍵詞:結(jié)構(gòu)體系

        孫彬

        摘 要:在Java應用程序運行時,Java虛擬機中的類加載機制能在不影響其他功能模塊運行的情況下動態(tài)加載類文件。文章簡述了Java類加載器的層次體系結(jié)構(gòu)以及動態(tài)加載機制原理,并結(jié)合具體的例子,將Java動態(tài)加載機制應用在高校網(wǎng)站管理平臺的文件發(fā)布模塊,實現(xiàn)了系統(tǒng)和靜態(tài)網(wǎng)頁的關(guān)聯(lián),可快速搭建二級網(wǎng)站,還能通過自定義加載器能對加密的字節(jié)碼進行解密,得出了Java語言具有強大的靈活性和安全度,能很好的保護代碼安全。

        關(guān)鍵詞:Java;動態(tài)類加載機制;結(jié)構(gòu)體系

        中圖分類號:TP312 文獻標志碼:A 文章編號:2095-2945(2018)23-0180-02

        Abstract: The class-loading mechanism in the Java Virtual Machine can dynamically load class files without affecting the running of other functional modules while the Java application is running. In this paper, the hierarchical structure of Java classloader and the principle of dynamic loading mechanism are briefly described. Based on specific examples, Java dynamic loading mechanism is applied to file publishing module of university website management platform. The association between the system and the static web page is realized, the secondary web site can be built quickly, and the encrypted bytecode can be decrypted by the custom loader. It is concluded that the Java language has strong flexibility and security, and can protect the code security very well.

        Keywords: Java; dynamic classloading mechanism; architecture system

        動態(tài)加載能在運行時安裝程序組件,Microsoft Windows等系統(tǒng)中都有用到動態(tài)加載技術(shù)。動態(tài)連接比靜態(tài)連接更有靈活性,并且能節(jié)約一定的內(nèi)存空間。Java動態(tài)類加載是調(diào)用所用的類,這些類并未在源代碼中提到,單個程序是由多個類組成的。一個程序啟動時總是先加載一些基礎類到JVM,剩余的類是在需要時再另行加載的。這種加載方式能在很大程度上實現(xiàn)對內(nèi)存的節(jié)約,體現(xiàn)Java語言加載的動態(tài)性。Java體系結(jié)構(gòu)語言包括了Java語言、Java虛擬機4大部分、Java class文件和Java API,其中JVM是Java體系結(jié)構(gòu)的核心部分[1]。Java動態(tài)類加載先將程序運行的基礎類加載到JVM中,等JVM用到時再加載其他類。

        1 Java類加載器的結(jié)構(gòu)體系

        Java中的類需被裝載到JVM中實現(xiàn)運行,JVM中的有類加載器,負責完成對Java類的裝載。類加載器從硬盤中讀取類文件到內(nèi)存里。Java中的類的形式多種多樣,根據(jù)功能和加載方式的不同,基本上可分為核心類、擴展類還要許多用戶根據(jù)自身需求自定義的類。對應不同Java中的類。JVM里面的類加載器也分為三種,它們分別是Bootstrap ClassLoader,負責對Java中核心類的加載;ExtClassLoader,負責對拓展類的加載;AppClassLoader,負責對用戶自定義類的加載。JVM程序內(nèi)存在較為靈活的類裝載器組件,在單個應用程序中能允許多個類加載器同時允許,進行對類加載方式的自定義操作。Bootstrap ClassLoader加載器是用編寫虛擬機的語言編寫的,在系統(tǒng)中是唯一的。如若JVM使用C語言或C++語言在操作環(huán)境下完成運行目標,那么Bootstrap ClassLoader看做這兩種語言體系下實現(xiàn)部分,也是用C語言或者C++語言進行表示。Bootstrap ClassLoader加載Java運行環(huán)境提供程序運行的核心類,這些類有著重要的作用,要實現(xiàn)實現(xiàn)加載。Bootstrap ClassLoader在運行中,不僅要完成對核心類的加載,而且還要完成對Ext ClassLoader以及App ClassLoader的加載,它們是兩個用戶類加載器,作用是加載核心類之外的類。這兩個類加載器的本質(zhì)其實也屬于類,也需要被加載,Bootstrap ClassLoade本身不屬于Java類。在分工方面,Ext ClassLoader負責加載jre/lib/ext中的所有類;App ClassLoader負責加載classpath指定路徑中程序所需的類[2]。JVM中的類加載器間的結(jié)構(gòu)采用樹形結(jié)構(gòu),具有父子關(guān)系。App ClassLoader的父加載器是Ext ClassLoader,而Ext ClassLoader的父加載器是Bootstrap ClassLoade。JVM中的加載器不只三個,實際應用中,一些類不能被以上三個加載器加載,用戶這時候要根據(jù)自身的實際需求進行加載器的編寫,以達到相應的加載目的。

        2 Java動態(tài)類加載機制原理

        JVM在運行過程中,產(chǎn)生的類加載器數(shù)量最少是三個,通常是Ext ClassLoader、Bootstrap ClassLoader以及APP ClassLoader,為了將多個類加載器能互相配合工作,就需要根據(jù)它們的功能分類并劃分級別,級別不同,加載的類也不一樣,此時引入了一個Parent概念,就是我們通常所說的“雙親”。JVM根據(jù)這種層次關(guān)系完成一系列加載工作,實現(xiàn)按需加載。在對類進行加載時,首先會對父類加載器發(fā)出請示,如果父類加載器搜索路徑加載不到,自己類加載器才進行搜索,呈現(xiàn)遞歸性。這種遞歸作用大大的增強了加載的安全性,防止一些惡意類帶來的破壞。同一個類能在不同加載器間實現(xiàn)多次加載,同一加載器的加載次數(shù)只有一次。加載器在完成對類的加載前會對類進行檢測,判定是否被加載過。每個類由名字和類加載器兩個參數(shù)組成。抽象類ClassLoader是由Java核心類庫提供的,在相關(guān)的制約下,所有的自定義類加載器必須對獲取的類對象實施繼承性和實例化轉(zhuǎn)型操作,自定義類加載器須對類對象進行繼承性操作,自定義加載器對其他加載器有一定的依賴度,會對JVM技術(shù)體系中Bootstrap ClassLoader發(fā)出請求。一個類加載器請求另一個類加載器的過程若能實現(xiàn)形式化建制,也就意味著實現(xiàn)了對“雙親委托”模型的構(gòu)建。除了啟動類加載器,技術(shù)運行體系中,其他所有的類加載器只有一個“雙親”。若“雙親”沒實現(xiàn)清晰制定,可根據(jù)運行狀況分配默認狀態(tài)下的技術(shù)區(qū)位[3]。

        3 Java動態(tài)類加載的實現(xiàn)

        JVM要通過加載、連接和初始化三步解釋字節(jié)碼,加載是.class格式文件進行讀入,創(chuàng)建class對象;連接是把已加載數(shù)據(jù)合并到虛擬機運行中;初始化是將類變量賦以初始值[4]。Java中是動態(tài)加載,通過“雙親”機制完成。Java動態(tài)類加載分為顯式加載和隱式加載,顯式加載方式分為Class.forName()方法,第二種是LoadClass()提供,顯式加載相比于隱式加載,靈活度得到了提升。自定義的加載器從Java.Lang.ClassLoader的任何子類創(chuàng)建,需指定一個父加載器。任何類加載通過ClassLoader類或者子類實現(xiàn),是Java核心API中的一部分,自定義類加載器須繼承并實例化該類,采取Class LoadClass、Class findClass、Class defineClass、Class findSystemClass和Class findLoadedClass等重要方法[5]。動態(tài)類加載使用Java.Lang.Class的forName()方法,有兩種重載形式:

        Public static Class forName(Sting className)throws ClassNotFoundException

        Public static Class forName(string name,boolean initialize,ClassLoader Loader)

        使用第三參數(shù)指定類加載器,與類關(guān)連的Class對象,第二個參數(shù)指定表示是否被初始化。

        Class.forName(“FOO”,true,this.getClass).getClassLoader

        根據(jù)用戶的需要,在實現(xiàn)動態(tài)類加載時,使用forName()方法或是自定義類加載器。forName()方法使用頻率較高,最為直接,使用forName()方法實現(xiàn)請求類型在加載時初始化。自定義類加載功能是實現(xiàn)從數(shù)據(jù)庫中獲取或者進行動態(tài)創(chuàng)建,用定制方式轉(zhuǎn)換類型的全限定名轉(zhuǎn)為Java class文件格式字節(jié)數(shù)組,從而進行安全防護。

        4 應用例子

        Java類加載器有著非常強大的功能,通過將類進行重載的方式達到程序加載功能實現(xiàn)。Java類加載器在生活中有著廣泛的應用,這里將Java動態(tài)類加載機制應用在二級網(wǎng)站管理系統(tǒng)的文件發(fā)布模塊,加載被加密的Java類文件。在系統(tǒng)需求方面,需搭建網(wǎng)站通用平臺實現(xiàn)對二級網(wǎng)站的統(tǒng)一管理。通過管理平臺搭建完畢后,若想建設二級網(wǎng)站,只需做好靜態(tài)網(wǎng)頁,在平臺中分配欄目,個性化功能需文件發(fā)布模塊,發(fā)布到通用平臺中。文件發(fā)布模塊能實現(xiàn)對二級網(wǎng)站靜態(tài)頁面的動態(tài)化,使得靜態(tài)網(wǎng)頁和系統(tǒng)關(guān)聯(lián),增加系統(tǒng)拓展性,降低模塊間的耦合性,對文件代碼作出加密處理,保障了系統(tǒng)的安全。

        綜上所述,Java動態(tài)類加載是Java程序中的重要機制,文章闡述了Java類加載器的技術(shù)結(jié)構(gòu)體系,闡明了動態(tài)加載機制的原理,看出了Java動態(tài)加載機制技術(shù)性嚴密,為技術(shù)人員提供了參考。文章最后結(jié)合具體的例子將這樣技術(shù)用在高校網(wǎng)站通用管理平臺的文件發(fā)布模塊,實現(xiàn)了二級網(wǎng)站建設的拓展,為系統(tǒng)增加了拓展性。已經(jīng)加密的代碼只能通過自定義加載器解密,保證了文件的安全性。

        參考文獻:

        [1]黃軍.Java動態(tài)類加載機制研究及應用[J].信息與電腦(理論版),2018(04):3-4.

        [2]朱丹丹.芻議Java動態(tài)類加載機制研究與應用[J].電子技術(shù)與軟件工程,2016(07):245.

        [3]王智恒.基于動態(tài)加載技術(shù)的Android插件化開發(fā)框架研究與實現(xiàn)[D].云南大學,2016.

        [4]鄒煜.Java類文件混合加密算法的研究與分析[D].華中師范大學,2017.

        [5]崔娜.Java動態(tài)類加載機制研究及運用[J].信息與電腦(理論版),2015(24):15-16.

        [6]籍慧文.Web應用開發(fā)中JAVA編程語言的應用探討[J].科技創(chuàng)新與應用,2017(07):90.

        [7]賀蘊彬.Java虛擬機的自適應動態(tài)優(yōu)化[J].科技創(chuàng)新與應用,

        2014(13):70.

        猜你喜歡
        結(jié)構(gòu)體系
        試論物理學的“知識的結(jié)構(gòu)體系”
        科技資訊(2017年1期)2017-03-27 00:13:28
        有關(guān)嵌入式微處理器的自行高炮火控監(jiān)測系統(tǒng)的研究
        卷宗(2016年10期)2017-01-21 15:16:22
        大型混凝土施工模板結(jié)構(gòu)體系控制技術(shù)研究
        價值工程(2016年36期)2017-01-11 20:00:45
        不同結(jié)構(gòu)體系高層建筑的綜合經(jīng)濟效益研究
        商(2016年14期)2016-05-30 10:36:21
        淺議基本權(quán)利之國家義務
        法制博覽(2015年12期)2015-12-22 23:44:37
        建筑結(jié)構(gòu)抗震設計的基本要求及其設計重點探討
        科技視界(2015年27期)2015-10-08 13:09:43
        亚洲精品99久久久久久| 狠狠色噜噜狠狠狠狠97首创麻豆| 久久精品国产免费观看三人同眠 | 男女性杂交内射女bbwxz| 国精产品推荐视频| 欧美午夜精品久久久久久浪潮| 欧美成人高清手机在线视频| 精品人妻一区二区三区av| 亚洲av综合色一区二区| 亚洲av中文无码乱人伦在线视色| 丰满少妇三级全黄| 国产成人av一区二区三区无码| 久久综合一本中文字幕| 亚洲a级视频在线播放| 欧美日韩在线视频| 亚洲码国产精品高潮在线 | 日本大片在线看黄a∨免费| 色系免费一区二区三区| 国产一级一厂片内射视频播放 | 麻美由真中文字幕人妻| 国产丝袜美腿在线播放| 无码熟妇人妻av在线影片最多| 亚洲熟女乱色综合亚洲图片| 久久一区二区三区四区| 一区二区三区人妻在线| 大香焦av一区二区三区| 人妻无码一区二区不卡无码av| 亚洲综合久久成人a片| 亚洲精品综合在线影院| 日韩av一区二区蜜桃| 色偷偷888欧美精品久久久| 男女下面进入的视频| 国产成人永久在线播放| 精品人妻午夜中文字幕av四季| 亚洲精品无码av人在线观看国产| 国产顶级熟妇高潮xxxxx| 久久国产综合精品欧美| 最近中文字幕一区二区三区| 女人av天堂国产在线| 国产精品亚洲αv天堂无码| 国产成人无码一二三区视频|