[發明專利]基于Java語言的動態擴展方法、裝置、電子設備及存儲介質在審
| 申請號: | 202010513093.3 | 申請日: | 2020-06-08 |
| 公開(公告)號: | CN111736916A | 公開(公告)日: | 2020-10-02 |
| 發明(設計)人: | 劉正陽 | 申請(專利權)人: | 北京達佳互聯信息技術有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F8/41 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司 44224 | 代理人: | 方高明 |
| 地址: | 100085 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 java 語言 動態 擴展 方法 裝置 電子設備 存儲 介質 | ||
本公開涉及一種基于Java語言的動態擴展方法、裝置、電子設備及存儲介質。該方法包括:通過API接口接收目標源代碼,API接口是為接收目標源代碼而預先創建的;對目標源代碼進行編譯,得到對應的字節碼;通過類加載器對字節碼進行加載,得到目標類對象;執行目標類對象對應的目標源代碼。其中,預先創建API接口可以為獲取目標源代碼暴露一個接口,以獲取動態擴展的目標源代碼,實現開發項目的動態擴展;在獲取到目標源代碼后,將目標源代碼編譯成對應的字節碼并加載成目標類對象,通過Java的反射機制執行目標類對象對應的目標源代碼中的程序,可以對目標源代碼中的程序進行開發、測試、驗證和應用,實現開發項目的動態擴展。
技術領域
本公開涉及計算機技術領域,尤其涉及一種基于Java語言的動態擴展方法、裝置、電子設備及存儲介質。
背景技術
隨著計算機技術的不斷發展,Java語言以其獨特的優勢得到了廣泛的應用,Java語言被廣泛應用于各種開發工作中。在開發過程中,經常需要對一些程序進行測試和驗證,然而Java是靜態語言,每一測試或驗證執行前,需要重新對編好的Java程序進行編譯打包,再進行測試和驗證。然而編譯打包上傳重啟等操作,會增加大量的人工成本和時間成本和設備成本,不利于Java的動態擴展。對此,傳統動態擴展方法中,存在通過Java的反射執行指定的類的方法,以解決需要重新編譯打包的問題。
然而,通過Java的反射執行指定的類的方法,只能執行已有的方法,不能編寫并執行新代碼,無法實現開發項目的動態擴展。
發明內容
本公開提供一種基于Java語言的動態擴展方法、裝置、電子設備及存儲介質,以至少解決相關技術中不能編寫并執行新代碼,無法實現開發項目的動態擴展的問題。本公開的技術方案如下:
根據本公開實施例的第一方面,提供一種基于Java語言的動態擴展方法,包括:
通過API接口接收目標源代碼,所述API接口是為接收所述目標源代碼而預先創建的;
對所述目標源代碼進行編譯,得到對應的字節碼;
通過類加載器對所述字節碼進行加載,得到目標類對象;
執行所述目標類對象對應的目標源代碼。
在一示例性實施例中,所述執行所述目標類對象對應的目標源代碼,包括:
通過Java的反射機制,執行所述目標類對象對應的目標源代碼。
在一示例性實施例中,所述目標源代碼為由用戶端輸入的待擴展代碼,所述待擴展代碼為根據新的邏輯需求生成的邏輯代碼。
在一示例性實施例中,所述對所述目標源代碼進行編譯,得到對應的字節碼,包括:
通過Java的內存編譯器,對所述目標源代碼進行動態編譯,得到所述字節碼。
在一示例性實施例中,所述字節碼與所述目標源代碼中的類名對應,所述類名為所述目標源代碼對應的標識;
所述對所述目標源代碼進行編譯,得到對應的字節碼之后,包括:
將所述字節碼與對應的類名存儲至所述類加載器。
在一示例性實施例中,所述通過類加載器對所述字節碼進行加載,得到目標類對象,包括:
獲取目標類名;
從所述類加載器中查找與所述目標類名對應的字節碼;
通過所述類加載器創建與所述字節碼對應的目標類對象。
在一示例性實施例中,所述執行所述目標類對象對應的目標源代碼之后,包括:
將執行所述目標類對象對應的目標源代碼的結果,通過所述API接口返回至用戶端。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京達佳互聯信息技術有限公司,未經北京達佳互聯信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010513093.3/2.html,轉載請聲明來源鉆瓜專利網。





