Java智能计算

昨天有位刚入行的java工程师问我有没有什么方法直接执行通过远程调用获取到的公式,我当时脑子里面第一冒出来是js的eval函数,我就告诉他js的eval()可以实现他的需求,当时由于他没怎么接触js,听得一脸懵逼,我这才反应过来他是写java的。由于我的工作中很少遇到这种应用场景,当时我也没想起java里面怎么实现,当时的想法是把那个公式当作一段java代码,然后实时编译、执行;转念又一想,java这么古老强大的语言,这种应用场景肯定早就有很好的原生解决方案了。搜索了一下,找到2种实现方案。1、JDK1.6里面的ScriptEngine;2、JEXL。

下面分别说明一下2种方案的具体使用。

ScriptEngine

JDK1.6引入ScriptEngine,用于执行JavaScript这样的脚本语言,所以js的eval函数当然也可以通过它来执行。

 public static void test1(){
    String ddd = "10+20";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
    Object result = null;
    try {
      result = engine.eval(ddd);
    } catch (ScriptException e) {
      e.printStackTrace();
    }
    System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
  }

JEXL

Java Expression Language (JEXL) 是一个表达式语言引擎,可以用来在应用或者框架中使用。JEXL 受Velocity 和 JSP 标签库 1.1 (JSTL) 的影响而产生的。需要注意的是, JEXL 并不是 JSTL 中的表达式语言的实现。

使用JEXL需要引入对应的jar包。

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-jexl3</artifactId>
  <version>3.1</version>
</dependency>

具体使用如下:

  public static void test2(){
    JexlEngine jexl = new JexlBuilder().create();

    String jexlExp = "10+20";
    JexlExpression e = jexl.createExpression( jexlExp );

    // Create a context and add data
    JexlContext jc = new MapContext();
    //jc.set("foo", new Foo() );

    Object result= e.evaluate(jc);
    System.out.println("结果类型:" + result.getClass().getName() + ",计算结果:" + result);
  }

原文:http://www.itclj.com/blog/5a011c0281c06e4103ef5126

可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将所有文件的分析结果进行汇总,便于方便直观的对软件项目的代码量进行全面的评估。本软件是绿色软件,不需要安装,展开到任意目录,直接运行即可。 1、 支持VC++、VC.Net项目文件的统计方式。 2、 支持C++ Builder项目文件的统计方式。 3、 支持C/C++文件 .cpp 和 .h 的文件统计。 4、 支持同时多个文件的统计方式。 5、 支持同时多种文件类型的统计方式。 6、 支持VB项目文件和 .frm 和 .bas 文件的统计。 7、 支持汇编文件 .asm 和 .inc 的统计。 8、 支持Delphi项目文件 .dpr 和 .pas、.dfm 文件的统计。 9、 支持C#项目文件 .csproj 的直接统计及 .cs 文件的统计。 10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持自定义一次选择多个目录的统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持htm,excel,csv,txt等多种存盘文件类型。 16、支持统计结果的直接打印输出。 17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值