[发明专利]基于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.vipzhuanli.com/pat/books/202010513093.3/2.html,转载请声明来源钻瓜专利网。