[发明专利]表达式的JAVA编译方法和装置有效
申请号: | 202011043605.0 | 申请日: | 2020-09-28 |
公开(公告)号: | CN112114818B | 公开(公告)日: | 2023-06-20 |
发明(设计)人: | 刘家卿;范新生;倪嘉 | 申请(专利权)人: | 建信人寿保险股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 贾磊;刘飞 |
地址: | 200120 上海市浦东新区自*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 表达式 java 编译 方法 装置 | ||
本发明提供一种表达式的JAVA编译方法和装置,该方法包括:根据待编译表达式生成groovy代码;将该groovy代码输入groovy脚本引擎得到二进制的JAVA类;利用JVM装载JAVA类以在缓存中建立待编译表达式和该JAVA类的对应关系,可以用普通的算数表达式形式书写高精度类型的计算公式,使得JAVA代码支持高精度数学类型的运算符重载,能够使用中缀表达式进行高精度计算,而且编写的计算公式实时生效(热更新或动态加载),无需重启服务器,降低复杂度,可靠性高,扩展性好。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种表达式的JAVA编译方法和装置。
背景技术
目前业内大部分脚本语言不支持高精度数字的计算,无法用于金融业的金额计算。为了解决这个问题,部分系统采用Oracle的PL/SQL进行计算,支持高精度,但无法支持复杂的数据结构,且数据库通常独立部署,计算时存在一次网络调用,延迟较高,基于此,目前还有部分厂商采用模板直接生成JAVA class的方法,性能高。JAVA是一种面向对象的编程语言,由于其严格的面向对象风格,很适合实际业务逻辑的抽象,在web应用中使用非常广泛。但是,目前JAVA代码不支持高精度数学类型的运算符重载,无法使用中缀表达式进行高精度计算,而且编写的计算公式无法实时生效(热更新),需要重启服务器。
发明内容
针对现有技术中的问题,本发明提供一种表达式的JAVA编译方法和装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种表达式的JAVA编译方法,包括:
根据待编译表达式生成groovy代码;
将该groovy代码输入groovy脚本引擎得到二进制的JAVA类;
利用JVM装载JAVA类以在缓存中建立待编译表达式和该JAVA类的对应关系。
进一步地,该根据待编译表达式生成groovy代码,包括:
对该待编译表达式进行分词得到由元素组成的链状结构;
遍历该链状结构以对各元素按照元素类型进行对应的预处理进而得到该groovy代码。
进一步地,表达式的JAVA编译方法还包括:
获取该缓存中该JAVA类的调用频率;
判断该调用频率是否满足预设条件;
若是,触发JIT以将该JAVA类直接编译为机器码。
进一步地,该根据待编译表达式生成groovy代码之前,还包括:
对该待编译表达式进行预处理。
进一步地,该对该待编译表达式进行预处理,包括:
屏蔽该待编译表达式中全部的面向对象的特性;和/或
将该待编译表达式中的等号替换为双等号;和/或
将该待编译表达式中的外部输入变量转换为预设格式。
第二方面,提供一种表达式的JAVA编译装置,包括:
groovy代码生成模块,根据待编译表达式生成groovy代码;
二进制转换模块,将该groovy代码输入groovy脚本引擎得到二进制的JAVA类;
JVM装载模块,利用JVM装载JAVA类以在缓存中建立待编译表达式和该JAVA类的对应关系。
进一步地,该groovy代码生成模块包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于建信人寿保险股份有限公司,未经建信人寿保险股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011043605.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:规则配置方法及装置
- 下一篇:基于引擎的电证报文自动处理方法及装置