原文链接: http://jnotnull.iteye.com/blog/262384
package com.lch.js;
import java.io.File;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class HelloWorld {
/**
* @param args
* @throws ScriptException
* @throws NoSuchMethodException
*/
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("javascript");
//engine.eval("print('hello')");
//testScriptVariables(engine);//演示如何暴露JAVA对象为脚本语言的全局对象
//testInvokeScriptMethod(engine);//演示JAVA中如何调用脚本语言
//testScriptInterface(engine);//演示脚本语言如何实现JAVA接口
testUsingJDKClasses(engine);//演示脚本如何使用JDK平台下的类
}
public static void testScriptVariables(ScriptEngine engine) throws ScriptException{
File file = new File("test.txt");
engine.put("f", file);
engine.eval("println('otal space: ' + f.getTotalSpace())");
}
public static void testInvokeScriptMethod(ScriptEngine engine) throws ScriptException, NoSuchMethodException{
String script = "function hello(name) {return 'hello ' + name;}";
engine.eval(script);
Invocable inv = (Invocable)engine;
String res = (String)inv.invokeFunction("hello", "Scripting");
System.out.println("res : " + res);
}
public static void testScriptInterface(ScriptEngine engine) throws ScriptException{
String script = "var obj = new Object(); obj.run = function(){ println('run method called');}";
engine.eval(script);
Object obj = engine.get("obj");
Invocable inv = (Invocable)engine;
Runnable r = inv.getInterface(obj, Runnable.class);
Thread th = new Thread(r);
th.start();
}
public static void testUsingJDKClasses(ScriptEngine engine) throws ScriptException, NoSuchMethodException{
String js = "function doSwing(t){var f = new Packages.javax.swing.JFrame(t); f.setSize(400, 300); f.setVisible(true);}";
engine.eval(js);
Invocable inv = (Invocable)engine;
inv.invokeFunction("doSwing", "Scripting Swing");
}
}
分享到:
相关推荐
5. **脚本语言支持**:JDK6通过JSR 223引入了对JavaScript和其他脚本语言的支持,使得Java平台可以嵌入和执行脚本代码。 接下来,我们来看看压缩包中包含的文件及其作用: 1. **COPYRIGHT**:包含了Oracle公司的...
10. **脚本语言支持**:通过`ScriptEngine`接口,JDK 6支持JavaScript和其他脚本语言,使得Java应用可以嵌入和执行脚本代码。 以上只是JDK 6中一部分重要改进和新特性,这些知识点对于理解和使用JDK 6进行开发至关...
9. **JavaScript支持**:通过Rhino JavaScript引擎,可以在Java代码中直接执行JavaScript。 10. **改进的内存管理**:包括更高效的垃圾回收器和内存分配策略,提高了整体性能。 配置JDK6免安装版的步骤如下: 1. ...
另外,还新增了 Stream API,用于处理集合数据,支持并行流,提高了数据处理的性能。另外,Date/Time API也得到了显著改进,引入了`java.time`包,提供更加易用且功能丰富的日期和时间处理类。 JDK 1.9 中,模块化...
JDK JavaScript 独立运行时 Nashorn,Java 7 可用。比 Rhino 更快,更好用
对于开发者来说,JDK 6提供了许多新特性,如增强的Swing组件、改进的JDBC API、新的脚本引擎支持(如JavaScript引擎Nashorn)以及对XML处理的优化等。 描述中提到的"jdk-6u39-windows-x32.exe"是JDK 6更新39...
- **JavaScript 交互**:通过 JAXP 和 Rhino 引擎,JDK 6 支持与 JavaScript 代码的交互。 3. **开发工具**: - **Javac**:Java 编译器,将源代码编译成字节码。 - **Java**:执行已编译的 Java 类文件。 - **...
- **Nashorn JavaScript引擎**:虽然在JDK 6中未完全实现,但JDK 7开始引入了Nashorn JavaScript引擎,为Java与JavaScript的交互提供了更高效的方式。 - **改进的Swing和JavaFX**:UI组件得到了增强,包括更好的...
JDK6对于Java开发者来说是一个重要的版本,它引入的许多特性对后续版本产生了深远影响,并且至今仍有一些项目依赖于JDK6的特性。然而,由于安全性、性能和兼容性等方面的原因,现在推荐使用更新的JDK版本,如JDK 8、...
3. **改进的Swing UI**:JDK 6对Swing组件进行了升级,提供了更好的外观和感觉,同时增加了新的组件和功能,如JTabbedPane的改进,以及JTable的性能提升。 4. **NIO.2**:Java.nio包的扩展,引入了JSR 203(New I/O...
1. **增强的Swing组件**:JDK 6对Swing组件进行了更新,提供了更好的用户体验和更丰富的图形用户界面(GUI)设计。例如,`JTable`和`JTree`组件得到了改进,增加了表格模型的性能,以及对行和列选择的支持。 2. **...
1. **泛型的增强**:JDK6对泛型的支持更加完善,允许类型推断,使得代码更简洁,减少类型转换的错误。 2. **改进的Swing组件**:Swing库得到了大量更新,提供了更好的GUI设计和用户体验。 3. **脚本语言支持**:通过...
10. **改进的垃圾回收 (GC)**:JDK6对垃圾回收算法进行了优化,提升了整体性能。 ### 安装 JDK6 64位 下载的 `jdk-6-windows-x64.exe` 文件是适用于 Windows 操作系统的 64 位 JDK6 安装程序。安装过程中,通常会...
8. **脚本语言支持**:JDK6引入了JSR 223,允许Java平台集成其他脚本语言,如JavaScript、Groovy等。 **解压和配置步骤** 1. **下载与解压**:首先从可靠的源下载JDK6的免安装解压包,然后选择一个合适的本地目录...
3. **增强的Swing**:JDK 6对Swing组件进行了大量优化,包括更好的UI外观、性能提升和新的组件如JTabbedPane等。 4. **NIO.2**:引入了新的文件系统API,增强了非阻塞I/O操作的能力,如文件通道和异步文件操作。 5...
1. **泛型改进**:JDK 6对泛型进行了增强,支持类型推断,使得开发者在编写代码时可以更少地显式指定类型参数,提高代码的可读性。此外,通配符的使用也更加灵活,增强了泛型在多态场景下的应用。 2. **枚举与注解*...
这个版本引入了对JSR 223(脚本引擎)的支持,允许Java应用程序利用JavaScript和其他脚本语言。此外,JDBC 4.0的引入改进了数据库连接的处理,增强了XML处理,并添加了Swing组件的新功能,如JTable的改进和...
JDK 6包含了一些重要的新特性,例如改进的Swing UI组件、内置的XML处理库(如StAX)、新的脚本引擎支持(如JavaScript via Rhino)以及增强的调试工具。此外,JDK 6还引入了新的编程语言特性,如枚举类型的foreach...
6. **NIO.2(New I/O API)**:增加了对异步I/O的支持,提高了文件操作性能。 7. **Scripting API**:允许在Java应用中使用脚本语言,如JavaScript。 8. **改进的XML支持**:增强了DOM、SAX和StAX解析器,提升了处理...
1. **增强的性能**:JDK 6对虚拟机(JVM)进行了优化,提高了运行效率,使得应用程序的执行速度更快,内存管理更加高效。 2. **改进的开发工具**:Java编译器(javac)得到了升级,支持更多的语法糖,如枚举类型、...