利用javax.tools动态编译执行java代码
来源:互联网 发布:安卓分屏软件 编辑:程序博客网 时间:2024/05/16 01:50
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish)。
参考:使用 javax.tools 创建动态应用程序
javax.tools 包是一种添加到 Java SE 6 的标准 API,可以实现 Java 源代码编译,使您能够添加动态功能来扩展静态应用程序。本文将探查javax.tools包中提供的主要类,以Java表达式表示计算一个数值函数y=x*x+x。更多详情请参考《使用 javax.tools 创建动态应用程序》和javax.tools API docs。
complier.CharSequenceCompiler源码:
complier.CharSequenceCompilerException源码:
complier.ClassLoaderImpl源码:
complier.FileManagerImpl源码:
complier.JavaFileObjectImpl源码:
complier.Utils源码:
以上代码为complier包中所有类,它对外暴露的主要方法是:CharSequenceCompiler<T>.compile(String qualifiedClassName, CharSequence javaSource, Class<?>... types) throws CharSequenceCompilerException, ClassCastException,通过它来动态编译字符串形式表示的java源代码。除此之外,包中其他方类和方法尽量使用默认访问权限,以避免他人误用以及隐藏实现细节。
下面是测试package中的内容:
complier.test.Function源码:定义了一个接口,动态编译的所有类实现这个接口。
complier.test.Function实现类的模板,方便类的生成。
complier.test.ExpressionCal源码:里面含有一个静态测试类ExpressionCal$Tester。
ExpressionCal$Tester测试表达式x*x+x的运行,具体测试直接计算、java编译并计算、javascript编译并计算的效率,共测试三遍以观察其效率的变化,每一遍中每种方法又用for循环运行10万次计算,忽略打印输出的耗时。测试时间使用微秒为单位,精确度取决于System.nanoTime(),详见其java docs中的说明。测试结果如下:
整理得到:
10万次计算(单位:毫秒)直接计算java编译并计算JS编译并计算编译计算编译计算第一遍6.46604.575.4123.358671.08第二遍0.6744.711.42.388493.12第三遍0.5739.491.381.878624.12
可以看出,java直接计算速度超快,java编译并计算速度还是比直接计算慢1倍(不计编译时间),而JS的计算速度比直接计算慢4个数量级,简直惨不忍睹。第一次运行除JS计算外,均比较耗时,其中java第一次编译需要从磁盘上读取template文件,以后则均为内存操作。
从测试结果看,如果需要运行一个固定的表达式,可以写死在Java程序中(废话),如果需要计算一个动态变化的表达式,如果计算次数较少(500次以下),JS较为划算,如果计算次数十分巨大,则需要考虑java编译并计算。
- 利用javax.tools动态编译执行java代码
- 动态编译执行代码
- Java动态编译执行
- 动态编译执行c#代码
- 动态编译执行C#代码
- 动态编译执行C#代码
- C#动态编译、执行代码
- C#动态编译、执行代码
- java 动态编译与用Rhino引擎执行javascript代码
- java内存动态编译执行
- java内存动态编译执行
- Java动态编译和动态执行
- Java学习之动态编译-动态脚本引擎-脚本引擎执行javascript代码
- 使用 javax.tools 创建动态应用程序
- 使用 javax.tools 创建动态应用程序
- Java代码的编译、执行
- Java代码编译和执行
- java代码编译、执行过程
- JSP运行在tomcat下时,页面java代码的变量命名的一个注意事项
- 水印破解总结
- flex弹出窗口位置
- Word to PDF Converter v3.0 算法分析及注册机
- XMLHttpRequest进行ajax通讯时中文乱码问题解决
- 利用javax.tools动态编译执行java代码
- 浏览器分类
- NTP简易客户端程序
- 润乾报表中行式填报表如何实现批量删除
- 淘宝!我凭什么相信你颁发的支付宝数字证书?【技术贴】【安全专家,叫兽请进】
- 彻底整顿高等教育十意见书
- ISO 7816-3 Smart Card Standard
- 刘备比诸葛亮都强在什么地方
- The Good Life