发表于: 2022-06-06 19:25:06
1 653
Java脚本化API为谁准备?
脚本语言的一些有用的特性是:
方便:大多数脚本语言都是动态类型的。您通常可以创建新的变量,而不声明变量类型,并且您可以重用变量来存储不同类型的对象。此外,脚本语言往往会自动执行许多类型的转换,例如, 必要时 将数字10转换为“10”。
开发快速原型:您可以避免编辑编译运行周期,只使用“编辑运行”!
应用扩展/定制:你可以“具体化”的部分应用程序,例如一些配置脚本,业务逻辑/规则和财务应用中的数学表达式 。为应用添加命令行模式,用于调试、运行时配置/部署时间。现在大多数应用程序都有一个基于Web的GUI配置工具。但是系统管理员/部署人员常常喜欢命令行工具。一个“标准”的脚本语言可以用来实现这个目的,而不是发明特设的脚本语言。
Java 脚本 API 是一种独立于框架的脚本语言,使用来自于Java代码的脚本引擎 。通过java脚本API,可以使用Java语言编写定制/可扩展的应用程序并将自定义脚本语言选择留给最终用户 。Java 应用程序开发者不需要在开发过程中选择扩展语言。如果你使用JSR-223 API来编写应用,那么你的用户可以使用任何JSR-223兼容的脚本语言。
脚本包
Java
脚本功能是在javax.script
包中。这是一个比较小的,简单的API
。脚本的出发点是 ScriptEngineManager
类。一个ScriptEngineManager
对象可以通过jar
文件的服务发现机制发现脚本引擎。它也可以实例化脚本引擎来解释使用特定的脚本语言编写的脚本。使用脚本编程接口的最简单的方法如下:
创建一个ScriptEngineManager
对象
从ScriptEngineManager
获取 ScriptEngine
对象
使用ScriptEngine
的eval
方法执行脚本
ScriptEngineManager:
ScriptEngineManager是JDK6提出的相关方法,这方式的主要目的就是用来对脚本语言的处理。
在一些复杂、可动态扩展项目中,常需要我们编写自定义脚本实现扩展功能,常见的脚本语言基于java、js、python。
而ScriptEngineManager作为java脚本引擎,可编译、执行python、js等多种语言脚本,让脚本开发人员不再受限于某一种语言。
ScriptEngine
可以在 String
和java.io.Reader中执行脚本。
通过使用Reader,我们可以在网络或文件中执行脚本。
ScriptEngine接口的eval()方法具有以下重载版本。
Object eval(String script) Object eval(Reader reader) Object eval(String script, Bindings bindings) Object eval(Reader reader, Bindings bindings) Object eval(String script, ScriptContext context) Object eval(Reader reader, ScriptContext context)
一个简单的HelloWorld实例
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestAPI {
public static void main(String[] args) throws ScriptException {
//获取脚本引擎管理器
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
//根据引擎名获取JavaScript引擎
ScriptEngine engine = scriptEngineManager.getEngineByName("JavaScript");
//执行JavaScript方法
engine.eval("print('hello world')");
}
}
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的 编程语言
JavaScript 方法是能够在对象上执行的动作。
Nashorn 一个 javascript 引擎。
从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。
Nashorn完全支持ECMAScript 5.1规范以及一些扩展。它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的 invokedynamic,
将JavaScript编译成Java字节码。与先前的Rhino实现相比,这带来了2到10倍的性能提升。
jjs
jjs是个基于Nashorn引擎的命令行工具。它接受一些JavaScript源代码为参数,并且执行这些源代码。
例如,我们创建一个具有如下内容的sample.js文件:
print('Hello World!');
打开控制台,输入以下命令:
$ jjs sample.js
以上程序输出结果为:
Hello World!
开发环境是指搭建后端数据库环境以及服务器脚本语言支持环境.没有这个环境就无法运行服务器脚本语言,操作数据库里的数据.
ava脚本范围
范围与绑定一起使用。
绑定的范围决定了其键值对的可见性。
一个绑定仅发生在一个作用域中。
脚本引擎首先在具有较高优先级的绑定中搜索变量名称,然后搜索具有较低优先级的绑定。
Java Scripting API定义了两个范围。
ScriptContext.ENGINE_SCOPE
ScriptContext.GLOBAL_SCOPE
引擎范围的优先级高于全局范围。
问题:jetty的日志问题,脚步部署到开发环境还是不太理解
明天计划:完成接下来的任务
评论