免费行情软件app网站大全下载u288,淘客做的网站属于什么类型,wordpress安装双seo插件,动画制作的基本流程今天在书上看的#xff0c;java中可以直接调用js的函数了#xff0c;言外之意就是java已经支持外部的脚本语言了#xff08;在运行期解释执行的#xff09;#xff0c;查了查#xff0c;jdk从1.6之后开始支持的#xff0c;1.6之前不可以。
为什么Java这种编译语言还需要…今天在书上看的java中可以直接调用js的函数了言外之意就是java已经支持外部的脚本语言了在运行期解释执行的查了查jdk从1.6之后开始支持的1.6之前不可以。
为什么Java这种编译语言还需要这些脚本语言呢大概是因为脚本语言有的一些特性java没有吧比如
灵活一般像js这种脚本语言你可以不用声明变量类型而直接使用也可以在运行期改变类型。 方便我们都知道java语言运行之前需要编译成字节码文件然后才能运行。但是脚本语言是一种解释型语言它的执行是靠解释器解释的因此在运行期变更代码也非常方便不用停止应用。
简单只要有其他编程语言开发的经验在入门脚本语言很容易上手。
你看这么些特点java是没有的那如果引到java里面是不是能使得java更加强大答案是肯定的。
下面我们来写一个简单的案例 先创建一个js文件名为index.js放在D:\下面这个js里面我们就只写一个js函数代码如下
function reckon(num1,num2){return num1num2*n;
}
你可能会纳闷这个n怎么来的在这里不报错吗是的不报错这个n是从上下文来的相当于一个运行时变量接下来我们看看java中怎么调用该js文件中的函数下面是代码
//java调用脚本语言public static void testJavaScript(){//获得一个JavaScript引擎ScriptEngine engine new ScriptEngineManager().getEngineByName(js);//建立上下文变量Bindings bind engine.createBindings();bind.put(n, 2);//绑定上下文作用域是当前引擎范围engine.setBindings(bind, ScriptContext.ENGINE_SCOPE);Scanner sc new Scanner(System.in);while(sc.hasNextInt()){int num1 sc.nextInt();int num2 sc.nextInt();//执行js代码try {engine.eval(new FileReader(D://index.js));//是否可调用方法if(engine instanceof Invocable){Invocable in (Invocable)engine;//执行js函数Double result (Double)in.invokeFunction(reckon, num1,num2);System.out.println(运算结果为result);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (ScriptException e) {e.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}其运行结果为 现在我们来简单的改一改js函数注意别让jvm停将后面的乘号改成减号修改之后的代码为
function reckon(num1,num2){return num1num2-n;
}
然后我们在控制台中继续输入数字其运行结果为 通过分析我们可以看到jvm并没有停止代码while循环可以证明只要不输入非int类型的数字那么程序就一直执行。参数我们两次也都输入的一样num1 10和num2 20,n2,只是我们将js的函数稍微改变了一下结果就不同了这就是脚本语言对编译最有利的地方可以随时发布而不用重新部署。
你学会了吗有疑问可以留言评论哦~