java js引擎,Java8 Nashorn JavaScript引擎

使用Java8,Nashorn大大提高了JavaScript 引擎引入,以取代现有的Nashorn Java脚本引擎。Nashorn提供2至10倍更好的性能,因为它直接编译代码在存储器,并传递到字节码JVM.Nashorn使用invokedynamics函数,在Java7引入以提高性能。

jjs

对于Nashorn引擎,JAVA8引入了一个新的命令行工具,JJS到控制台执行Java脚本代码。

解读js文件

创建并保存sample.js在 C:> JAVA文件夹。

sample.js

print('Hello World!');

打开控制台并使用下面的命令。

C:\JAVA>jjs sample.js

看到结果

Hello World!

JJS在交互模式

打开控制台并使用下面的命令

C:\JAVA>jjs

jjs> print("Hello, World!")

Hello, World!

jjs> quit()

>>

传递参数

打开控制台并使用下面的命令。

C:\JAVA> jjs -- a b c

jjs> print('letters: ' +arguments.join(", "))

letters: a, b, c

jjs>

在JAVA调用JavaScript

使用ScriptEngineManager,JavaScript代码用Java编写可以被调用。

示例

选择使用任何编辑器创建以下java程序在 C:/> JAVA

Java8Tester.java

importjavax.script.ScriptEngineManager;importjavax.script.ScriptEngine;importjavax.script.ScriptException;publicclassJava8Tester{publicstaticvoidmain(Stringargs[]){ScriptEngineManagerscriptEngineManager=newScriptEngineManager();ScriptEnginenashorn=scriptEngineManager.getEngineByName("nashorn");Stringname="Mahesh";Integerresult=null;try{nashorn.eval("print('"+name+"')");result=(Integer)nashorn.eval("10 + 2");}catch(ScriptExceptione){System.out.println("Error executing script: "+e.getMessage());}System.out.println(result.toString());}}

验证结果

使用javac编译器编译如下类

C:\JAVA>javac Java8Tester.java

现在运行Java8Tester看到的结果

C:\JAVA>java Java8Tester

看到结果

Mahesh

12

从JavaScript调用Java

下面的例子将展示如何导入和使用Java类的Java脚本。

创建并保存sample.js在 c: > JAVA文件夹.

sample.js

varBigDecimal=Java.type('java.math.BigDecimal');functioncalculate(amount,percentage){varresult=newBigDecimal(amount).multiply(newBigDecimal(percentage)).divide(newBigDecimal("100"),2,BigDecimal.ROUND_HALF_EVEN);returnresult.toPlainString();}varresult=calculate(568000000000000000023,13.9);print(result);

打开控制台并使用下面的命令。

C:\JAVA>jjs sample.js

看到结果

78952000000000000003.20

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pr渲染程序选哪个_PR的bug你遇到过几个?

哈喽 大家好呀 我是K同学!对于Pr的用户来讲,Pr有很多BUG让人很奔溃,不仅Pr奔溃了,人都奔溃了作为Pr的老用户,今天我就来盘点下,我遇到过Pr的变态BUG第一个Pr不支持微软输出法这是我使用Pr遇到的第一个BUG&a…

java model 中文乱码,java传值乱码解决方法

在做JavaWeb时,总是时不时的会遇到中文传值乱码问题,在你把所有”ISO-8859-1”改成“UTF-8”发现还是没什么用。于是我就找到了一个百试百灵的方法(至少目前我是),就是强行转换成“UTF-8”编码。看代码:RequestMapping("/suc…

检查一列数据的重复项 vba_提取重复值,但字典不是重点。

本例的问题描述:1:源数据与提取的结果在同一个工作表里面;2:提取K、M、O、Q列里面不重复的数据(注意,数据列里面有空白的行);3:把提取出来的结果放在A2单元格的下方,不能有空白行&am…

swiper怎么让不会回弹,为什么我的滚动条拉上拉下都会回弹呢?

其它都是正常的,就是拉上去拉下来自己又回弹回去了,拉不到最底部也拉不到最顶部,拉来拉去都会是这样的category/index.vueimport CategoryHeader from "./header";import CategoryTab from "./tab";import CategoryConte…

异构服务器 微服务_Spring Cloud Alibaba Sidecar 多语言微服务异构

Spring Cloud Alibaba Sidecar 介绍自 Spring Cloud Alibaba 2.1.1 版本后增加了 spring-cloud-alibaba-sidecar 模块作为作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba等相关组件。通过与网关的来进行路由的映射,从而可以做到服务的获取&am…

采用的php cms分校站点 打开特别慢,phpcms v9 打开网站特别慢 增加数据库缓存方法...

SET GLOBAL QUERY_CACHE_SIZE80000000;设置好查询缓存的大小就行了。比如设置个20MB.SET GLOBAL QUERY_CACHE_SIZE20000000;mysql会将查询SQL和结果集存到缓存中,等下次遇到相同的SQL语句时,结果集从缓存中读取。1.设置缓存大小时,至少给它40…

python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-1Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""import tkinter as tk# 面向对象…

matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )

逐次超松弛方法(SOR方法)求解方程组日期:2014-09-26 21:03:34点击:370好评:0#includeiostream.h//逐次超松弛方法(SOR方法)求解方程组 #includemath.h #includeiomanip.h #define n 3 void main() { double A[n][n]{{5,2,1},{-1,4,2},{2,-3,1…

python中timedelta_Python – 使用时间戳,timedelta的日期和时间比较

我花了过去一小时挖掘Python文档和许多SO问题;请原谅我是另一个Python新手被Python时代的谜团所困扰.我的目标是确定当前时间和某个日期/时间之间的差异,而不管过去/将来,并返回可执行的格式,如秒.例如,如果输入是下午2:00和下午4:00(现在),我想要说“-7200”,表示事件发生在两…

php hex2bin nodejs,Nodejs Serialport文档翻译

版本号:Serialport5.0.0-beta3本文链接想象一个世界,你可以在那写javascript来控制搅拌机,灯,安全系统或者甚至是机器人。是的,我说的是机器人。那个世界就是这儿,现在使用node serialport。它提供一个非常简单的接口所…

sql 以a开头的所有记录_SQL开发与数据库管理笔记

简介: SQL开发与数据库管理笔记,看过的都说好!原创: 丶平凡世界文章链接:https://mp.weixin.qq.com/s/Y9TmoHOyh7To7jUrMulvEw一、开发管理篇1.按姓氏笔画排序Select * From TableNameOrder By CustomerNameCollate Ch…

python apscheduler执行_Python下定时任务框架APScheduler的使用

今天准备实现一个功能需要用到定时执行任务,所以就看到了Python的一个定时任务框架APScheduler,试了一下感觉还不错。1.APScheduler简介:APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需…

oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析

设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进程,会造成比较严重的性能问题,生产环境一定要慎设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进…

python画二次函数图像的顶点_画二次函数图像的步骤

画二次函数图像的步骤2019-11-14 09:26:25文/叶丹画二次函数图像的步骤:五点法是选五个极其重要的点,分别为顶点、与x轴的交点、与y轴的交点及其关于对称轴的对称点,然后根据这五点作图。二次函数的画法五点法五点草图法又被叫做五点作图法是…

php rss xml,php 一个完全面向对象的RSS/XML类的简单示例

这篇文章主要为大家详细介绍了php 一个完全面向对象的RSS/XML类的简单示例,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。经测试代码如下:/*** RSS/XML类** param* arrange (512.…

zynq中mgtx应用_基于ZYNQ的UCOS移植(TCP通讯)

周五在某小徐处借到了一块Zedboard开发板,平时在公司没有机会做SDK开发的笔记,今天就趁着这块开发板简要记录一些SDK的基本操作。一、功能简介通过第三方库创建SDK工程在ZYNQ-UCOS中实现TCP echo通讯二、配置需求操作系统Windows 10(64位)开发环境SDK 20…

oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle

一个开启Oracle服务和更改主机名的脚本真不知道该起一个什么题目,这是昨天数据库老师提出的问题。由于实验室的机器都装了还原卡,每次开机或重启都会回到初始状态,所以数库的listener.ora、tnsnames.ora文件里的host不是本机的计算机名&#…

python中的字体英文名_对python opencv 添加文字 cv2.putText 的各参数介绍

如下所示:cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细其中字体可以选择FONT_HERSHEY_SIMP…

oracle备份 ram,Oracle备份时出现AIX系统的3D32B80D错误

环境:数据库: AIX5.3下的64位Oracle 10.2.0.1.0TSM5.4:Windows2003带库:IBM3100问题描述:1、aix系统出现3D32B80D错误。如下:JTXXDBS01:> errpt |moreIDENTIFIER TIMESTAMPT C RESOURCE_NAMEDESCRIPTION3D32B80D020…

python僵尸进程和孤儿进程_python学习笔记——孤儿进程和僵尸进程

1 基本概述1.1 孤儿进程和僵尸进程父进程创建子进程后,较为理想状态是子进程结束,父进程回收子进程并释放子进程占有的资源;而实际上,父子进程是异步过程,两者谁先结束是无顺的,一般可以通过父进程调用wait…