java中的用户脚本输入

java中的用户脚本输入,java,function,input,scripting,Java,Function,Input,Scripting,我正在开发一个java应用程序,其中用户通过属性文件输入某些函数。然后在运行时使用应用程序提供的变量值对函数进行评估 这里有一个简单的例子。用户希望计算未来n年特定资本配置的投资回报。他不仅应该能够输入相关参数,还应该能够输入一个逐年计算回报的函数 有谁能建议或推荐一种简单的脚本语言,这样用户的学习曲线就不会太陡,并且有一个标准库可以提供与java代码的集成 一个相关的例子也很受欢迎。我建议使用javascript。它非常简单,Rhino库与java集成。完整的信息可以在这里找到:我建议使用ja

我正在开发一个java应用程序,其中用户通过属性文件输入某些函数。然后在运行时使用应用程序提供的变量值对函数进行评估

这里有一个简单的例子。用户希望计算未来n年特定资本配置的投资回报。他不仅应该能够输入相关参数,还应该能够输入一个逐年计算回报的函数

有谁能建议或推荐一种简单的脚本语言,这样用户的学习曲线就不会太陡,并且有一个标准库可以提供与java代码的集成


一个相关的例子也很受欢迎。

我建议使用javascript。它非常简单,Rhino库与java集成。完整的信息可以在这里找到:

我建议使用javascript。它非常简单,Rhino库与java集成。可以在这里找到完整的信息:

您可以使用JavaScript或Ruby,它们应该足够方便。

您可以使用JavaScript或Ruby,它们应该足够方便。

您可以看看Groovy。它可以嵌入Java应用程序中,并且是在应用程序中编写脚本的有用工具


您可以看看Groovy。它可以嵌入Java应用程序中,并且是在应用程序中编写脚本的有用工具


我的建议是使用
ScriptEngine
并评估
Javascript
函数。简单到:

public class TestScriptEngine {

    private static final String script = "var customFunction = function(parameter) {\n" +
            "\treturn parameter*parameter;\n" +
            "};\n" +
            "\n" +
            "println(customFunction(10));\n";

    public static void main(String[] args) {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code User's input
        try {
            engine.eval(script);
        } catch (ScriptException e) {
            e.printStackTrace(); 
        }
    }

}

我的建议是使用
ScriptEngine
并评估
Javascript
函数。简单到:

public class TestScriptEngine {

    private static final String script = "var customFunction = function(parameter) {\n" +
            "\treturn parameter*parameter;\n" +
            "};\n" +
            "\n" +
            "println(customFunction(10));\n";

    public static void main(String[] args) {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("JavaScript");
        // evaluate JavaScript code User's input
        try {
            engine.eval(script);
        } catch (ScriptException e) {
            e.printStackTrace(); 
        }
    }

}

谢谢你的回答。Stackoverflow永远不会失败。感谢您的每一个回答。Stackoverflow永远不会失败。