当前位置: 首页 > news >正文

上海做网站那家公司好手机端关键词排名免费软件

上海做网站那家公司好,手机端关键词排名免费软件,微信小程序开发制作多少钱,商业网站建设的方法Nashorn 和 javax.script 包 Nashorn 并不是第一个在 Java 平台上运行的脚本语言。在Java 6 就提供了 javax.script java 包,它为脚本语言引擎提供了一个通用的与Java交互的接口。 这个通用接口包含了脚本语言的基本概念,如脚本代码的执行和编译。此外&a…

Nashorn 和 javax.script 包

Nashorn 并不是第一个在 Java 平台上运行的脚本语言。在Java 6 就提供了 javax.script java 包,它为脚本语言引擎提供了一个通用的与Java交互的接口。
这个通用接口包含了脚本语言的基本概念,如脚本代码的执行和编译。此外,引入了Java 和脚本实体之间的注解绑定。最后,javax.script 包为调用提供了可选支持(这不同于执行,因为它允许从一个脚本语言的运行时导出中间代码,供 JVM 运行时使用)。
Rhino 作为一个实例语言,在 Java 8 中已经被移除,现在 Java 平台提供的默认的脚本提供为 Nashorn。

介绍 javax.script 和 Nashorn 的使用

让我们看一个很简单的例子,如何使用 Nashorn 从 Java 中运行 JavaScript:

import javax.script.*;ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");try {e.eval("print('Hello World!');");
} catch (final ScriptException se) {// ...
}

这里的关键概念是ScriptEngine接口,是从ScriptEngineManager中获取的。 这提供了一个空的脚本环境,我们可以通过eval() 方法添加JavaScript 代码。
Nashorn 引擎提供了一个单一的全局 JavaScript 对象,因此所有对eval() 的调用都将在同一个环境中执行。 这意味着我们可以在脚本引擎中进行一系列eval() 调用和构建 JavaScrip 的状态。 例如:

e.eval("i = 27;"); 
e.put("j", 15); 
e.eval("var z = i + j;"); 
System.out.println(((Number) e.get("z")).intValue()); // prints 42

注这里需要注意的一个问题是,直接从 Java 与脚本引擎交互,我们通常不会取得任何关于值的类型的信息。
Nashorn 对大多数 Java 类型保持相当紧密的绑定,所以我们需要小心。 当处理 JavaScript 的基本类型时,在 Java 中通常会转换成对应的包装类。 例如,如果我们将以下行代码添加到上一个示例中:

System.out.println(e.get("z").getClass());

我们很容易地发现返回值是java.lang.Integer类型,我们稍作一下修改:

e.eval("i = 27.1;"); 
e.put("j", 15); 
e.eval("var z = i + j;"); 
System.out.println(e.get("z").getClass()); 

那么这时e.get(“z”)的返回值的类型 java.lang.Double,这标记了两种类型系统之间的区别。 在 JavaScript 的其他实现中,这些都将被视为数字类型(因为 JavaScript 不定义整数类型)。 然而,Nashorn 更加意识到数据的实际类型。

注意:
当处理 JavaScript 时,Java 程序员必须有意识地知道 Java 的静态类型和 JavaScript 类型的动态之间本质的区别。 如果没有意识到这一点,bug 就很有可能产生。

在我们的例子中,我们在 ScriptEngine 上使用 了get() 和 put() 方法。 这些方法允许我们在 Nashorn 引擎执行的脚本的全局范围内直接获取和设置对象,而不必直接编写或评估 JavaScript 代码。

javax.script API

让我们在这一部分中简要描述 javax.script API 中的一些关键的类和接口。 这些只是其中相当小的API(六个接口,五个类和一个异常类),自从 Java 6 中引入以来没有改变。

  • ScriptEngineManager
    脚本支持的入口点。 它在此过程中维护可用脚本实现的列表。这是通过 Java 的服务提供程序机制实现的,这是一种非常通用的方式来管理具有不同的实现的平台扩展。 默认情况下,唯一可用的脚本扩展是Nashorn,尽管其他脚本环境(如Groovy 或JRuby)也可以使用。
  • ScriptEngine
    这个类代表我们负责维护解释执行脚本环境的引擎。
  • Bindings
    此接口扩展Map接口,并提供字符串(变量或其他符号的名称)和脚本对象之间的映射。 Nashorn 使用它来实现 ScriptObjectMirror 机制的互操作性。

在实践中,大多数应用程序处理由 ScriptEngine上 的方法(如eval(),get() 和put())提供的相对不透明的接口,但是了解这个接口如何插入到整个脚本 API 的机理还是很有必要。

转载于:https://www.cnblogs.com/IcanFixIt/p/6403110.html

http://www.lbrq.cn/news/2532799.html

相关文章:

  • 建设网站需要备案萧山seo
  • 网站开发工程师待遇网站seo优化免费
  • 成都网站建设名录互联网营销策略有哪些
  • 网站建设和维护采购协议书指定关键词排名优化
  • 大学生做家教靠谱网站网络广告推广平台
  • 商业网站设计方案商品推广软文范例100字
  • 滨州网站建设哪家好徐州seo企业
  • 怎样免费建企业网站电商网站大全
  • java网站开发设计百度竞价推广专员
  • 网站建设核心技术创新点百度引流推广怎么做
  • 团购网站建设案例资源优化网站排名
  • 响水做网站的价格百度导航最新版本免费下载
  • 海口网站建设优化案例微信软文模板
  • 秦皇岛网站建设费用惠州seo计费
  • 接网站开发的公司电话seo视频
  • 门户网站开发步骤新手怎么学网络运营
  • wordpress 模板制作教程青岛快速排名优化
  • 如何制作动态网站管理人员课程培训
  • 网站顶部小图标怎么做站长工具app
  • 中国建设银行网站主要功能在线培训平台
  • 做网站哪里有seo推广外包
  • 精美图片做网站上哪儿去找图链接买卖平台
  • 做网站asp网站策划书模板
  • 动态网站的工作流程360开户
  • 网站快速优化网站内部seo优化包括
  • 威海哪家网站做的好sem是什么
  • 内容营销的重要性内蒙古seo优化
  • 中煤矿山建设集团网站推广赚钱app哪个靠谱
  • 保定网站排名国内企业网站模板
  • 媒体门户网站建设方案如何设计网站步骤
  • 02 基于sklearn的机械学习-KNN算法、模型选择与调优(交叉验证、朴素贝叶斯算法、拉普拉斯平滑)、决策树(信息增益、基尼指数)、随机森林
  • nav2--安装/教程
  • 【LeetCode】链表反转实现与测试
  • 功率场效应晶体管MOSFET关键指标
  • nodejs 实现Excel数据导入数据库,以及数据库数据导出excel接口(核心使用了multer和node-xlsx库)
  • buuctf_crypto26-30