- 浏览: 1255471 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- 心情故事 (12)
- java (115)
- linux (55)
- 关系型数据库 (35)
- struts,jsf,spring (11)
- jdbc,hibernate,ibatis (11)
- jsp,jstl,c:tag,标签库 (2)
- ejb,webservice (1)
- tomcat,jboss,jetty,weblogic,websphere (15)
- java网络编程 (6)
- java线程 (0)
- js,jquery,json,xml,dom,html.regex (25)
- 设计模式 (6)
- BUG记录 (2)
- ant (2)
- jsp,servlet (4)
- swing (6)
- lucene+nutch (6)
- log4j (2)
- windows doc (2)
- ruby (1)
- ruby on rails (3)
- 操作系统网络 (18)
- apache 错误 (1)
- tomcat (10)
- jboss (9)
- jetty (9)
- weblogic (9)
- websphere (10)
- apache (2)
- AIX的iostat命令查看系统磁盘的使用情况 (1)
- oracle 统计一个表格有多少列 (1)
- Exception in thread "main" java.security.KeyStoreException: Windows-MY not found (1)
- jsp (1)
- jstl (1)
- c:tag (1)
- 标签库 (1)
- struts (1)
- jsf (1)
- spring (2)
- oracle,sqlplus (2)
- sqlplus (2)
- show errors (1)
- proc (1)
- function (1)
- ORA-06544: PL/SQL: internal error (1)
- arguments: [55916] (1)
- [] (7)
- 终端身份实施文档 (1)
- 重装系统之后飞鸽传书只能看到自己 (1)
- vsftp "上传 553 Could not create file" (1)
- startWebLogic.sh启动失败,提示Error initializing Embedded LDAP Server (1)
- java agent 注册为 windows 服务 (1)
- centos (1)
- svn (1)
- apr (1)
- apr-util (1)
- activemq (2)
- oracle (5)
- mysql (3)
- nosql (3)
- NSIS (1)
- windows wmic (1)
- c 指针 (1)
- c c++ (0)
- jmeter (0)
- 性能测试 (0)
- linux,备份 (2)
- C++ ,Virtual (1)
- windows dos (1)
- android (2)
- 大数据,云计算 (1)
- JVM垃圾收集 (1)
- jdbc (2)
- invoke (1)
- hibernate (1)
- ibatis (1)
- 个人开源项目源码收藏 (1)
- 批处理 (1)
- Mongodb mapreduce (8)
- kettle (1)
- Mongodb capped (1)
- mongodb gridfs (1)
- Mongodb 入门基础知识 (1)
- mongodb (8)
- hadoop2.5.1 (1)
- hadoop (4)
- eclipse (1)
- hdfs fs (1)
- elipse hadoop plugin (1)
- PHP相关知识 (1)
- js (1)
- jquery (1)
- json (1)
- xml (1)
- dom (1)
- html.regex (1)
- 网络知识 (1)
- nginx (1)
- docker (1)
- 测试 (1)
- nodejs (1)
- iptables (1)
- linux gitlab (1)
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
web页面调用window.print()函数实现打印的功能 -
hxdtech:
非常感谢!
我在学习ibatis时的培训ppt -
zmwxiaoming:
what 能连数据库不错
SOLR的学习整理 -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java获取当前操作系统的信息 -
huanzei:
整理的不错,
oracle lpad函数
jdk6增加了对动态语言的支持,我觉得他的原理就是把动态语言也编译成JVM可以理解的JAVA字节码的形式来执行的。主要支持的有javascript ,ruby ,php,python 等
这样就可以利用脚本语言的动态特性。
下面是对javascript支持的几个例子。
第1个:
import java.util.logging.Level; import java.util.logging.Logger; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class HelloScript { public static void main(String[] args){
例子比较简单,就是打印hello word,重要的几个类:
写道
ScriptEngineManager factory=new ScriptEngineManager();
ScriptEngine engine=factory.getEngineByName("JavaScript");
ScriptEngine engine=factory.getEngineByName("JavaScript");
try { engine.eval("print('hello word')"); } catch (ScriptException ex) { Logger.getLogger(HelloScript.class.getName()).log(Level.SEVERE, null, ex); } } }
第二个:
java调用脚本语言的方法
import java.util.logging.Level; import java.util.logging.Logger; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class TestJsFun { public static void main(String[] args){ ScriptEngineManager factory=new ScriptEngineManager(); ScriptEngine engine=factory.getEngineByName("JavaScript"); try { String script="function hello(name){return 'Hello'+name}"; engine.eval(script); javax.script.Invocable inv=(Invocable)engine; try { String res = (String) inv.invokeFunction("hello", "chenhua"); System.out.println(res); } catch (NoSuchMethodException ex) { Logger.getLogger(HelloScript.class.getName()).log(Level.SEVERE, null, ex); } } catch (ScriptException ex) { Logger.getLogger(HelloScript.class.getName()).log(Level.SEVERE, null, ex); } } }
脚本引擎本身并不负责执行在脚本中定义的方法,而是转换为javax.script.Invocable 的对象ivh,有ivh的方法invokeFunction()方法来调用脚本的方法。invokeFunction()方法的第一个参数必须是方法名。后面是参数列表。
第三个例子:脚本语言用java的变量
import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class TestScriptVariables { public static void main(String[] args){ ScriptEngineManager factory=new ScriptEngineManager(); ScriptEngine engine=factory.getEngineByName("JavaScript"); testScript(engine); } public static void testScript(ScriptEngine engine){ File file=new File("F:\\test.txt"); if(!file.exists()){ try { file.createNewFile(); } catch (IOException ex) { Logger.getLogger(TestScriptVariables.class.getName()).log(Level.SEVERE, null, ex); } } engine.put("f", file); try { engine.eval("println('file size:'+f.length())"); } catch (ScriptException ex) { Logger.getLogger(TestScriptVariables.class.getName()).log(Level.SEVERE, null, ex); } } }
通过 写道
engine.put("f", file);
来设置一个全局的变量。这个API比较重要
这样就取到了文件的大小。
第4个例子
脚本语言适用java的类库
import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class TestUsingJdkClass { public static void main(String[] args) throws ScriptException, NoSuchMethodException{ ScriptEngineManager factory=new ScriptEngineManager(); ScriptEngine engine=factory.getEngineByName("JavaScript"); testScript(engine); } public static void testScript(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); javax.script.Invocable inv=(Invocable)engine; inv.invokeFunction("doSwing", "from javascript swing window"); } }
在脚本中使用了Packages这一个全局变量,专门用于访问java的类库,程序运行后,会出现java Swing的一个窗体
看截图
最后一个例子:脚本语言实现java的接口
import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class TestScriptInterface { public static void main(String[] args) throws ScriptException, NoSuchMethodException{ ScriptEngineManager factory=new ScriptEngineManager(); ScriptEngine engine=factory.getEngineByName("JavaScript"); testScript(engine); } public static void testScript(ScriptEngine engine) throws ScriptException, NoSuchMethodException{ String script="var obj= new Object();obj.run=function(){println('run() was called');}"; engine.eval(script); Object obj=engine.get("obj"); javax.script.Invocable inv=(Invocable)engine; Runnable r=inv.getInterface(obj, Runnable.class); Thread t=new Thread(r); t.start(); } }
这里通过这句:
Object obj=engine.get("obj");
来获得脚本中的变量。
然后在通过ivh的getIntegerface()方法转化为java的接口。最后启动一个线程来执行它。
另外:在jdk6中有一个命令行工具:jrunscript
进入bin目录,下面可以运行的,默认为javascript语言,这个可以用来测试我们写的脚本是否正确
发表评论
-
centos6.5 hadoop伪分布式搭建
2017-01-10 10:41 25打算整理下machine learn ,再次安装 ... -
springboot
2016-12-29 11:13 2395微服务,现在是一个越来越热的东西,软件架构发展到 ... -
elk安装记录
2016-12-27 18:04 987在centos6.5上安装elk,记录下安装过程和 ... -
dubbo服务框架
2016-12-23 15:40 487上一篇文章介绍了zookeeper,作为服务 ... -
zookeeper服务注册中心配置
2016-12-22 11:40 1668用zookeeper有一段时间了,把配置做下简 ... -
OS X 安装java开发环境
2016-12-03 23:29 602... -
关于Restful API 的设计
2015-06-12 13:32 2282Restful API的流行,很大程度上被当前的移动 ... -
Jvisualvm远程连接tomcat配置:
2015-05-12 16:16 789JvisualVm 监控远程Tomcat,需要在To ... -
jdbc mybatis hibernate springJDBC的一些理解
2015-01-15 17:10 7071... -
Java 的ExecutorService
2015-01-15 11:45 1233早期在Java5以前,我们做多线程程序,一般都 ... -
spring的IOC和AOP
2015-01-14 16:47 2358关于Spring,大家都是耳熟 ... -
java 的线程安全
2014-12-30 14:43 981现代CPU基本都是多核,支持 ... -
JVM ClassLoader
2014-12-25 16:33 949JVM在加载类的时候,都是通过ClassLoad ... -
minor Gc ,Full Gc
2014-12-24 17:22 2108在发生Minor gc之前,虚拟机会先检查老年带最 ... -
Java的主要垃圾回收器
2014-12-24 16:33 1313对象 ... -
JVM的内存结构的一点理解
2014-12-24 11:30 785... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 1240试想,一个省有100个处理节点需要 ... -
利用生产者消费者模式实现串行的任务并行化
2014-12-22 17:48 0试想,一个省有100个处理节点需要 ... -
关于Linux的Ulimit参数
2014-12-22 12:13 1287JVM 64位平台与32位平台 ... -
一种表格数据比对的方法
2014-12-19 16:59 1060假设有连个库,一个是生产库,一个是备份库,在一个特 ...
相关推荐
在"javasprint脚本语言编程的web案例"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **JavaSprint基础**:JavaSprint的核心在于它的简洁性和可读性。它扩展了Java语言,提供了模板引擎,允许开发者在HTML中...
Java作为一种广泛使用的静态类型编程语言,有时候可能无法满足所有需求,特别是在处理动态代码执行和热部署时。此时,Groovy这种基于JVM的动态语言就发挥了重要作用。本文将详细讲解如何在Java应用程序中调用Groovy...
《Java脚本语言程序员手册》是一本专门为Java脚本编程者设计的指南,旨在帮助开发者深入理解和高效利用Java脚本语言。手册详细介绍了Java Scripting API(JSR 223)以及相关的脚本框架,如Rhino和Nashorn,这些都是...
Java是一种广泛使用的面向对象的编程语言,而脚本语言则以它们的轻量级、解释执行和快速开发特性而闻名。两者在软件开发领域中各有所长,常常被用来解决不同的问题。本压缩包文件“java与脚本语言.rar”可能包含关于...
要深入学习和使用Scorpio-Java,你需要了解Java编程基础,熟悉JavaScript语法,并可能需要阅读项目文档,研究源代码,甚至参与到项目的贡献中去。此外,通过实际编写和运行脚本来实践使用,是掌握任何脚本语言的最好...
Java脚本语言,虽然在名字中包含了"Java",但其实与Java编程语言并不完全相同。它是用于增强网页交互性和动态性的脚本语言,主要在客户端浏览器中运行,以JavaScript最为常见。JavaScript是由Netscape公司的Brendan ...
此外,解释性语言通常对错误更宽容,适合快速原型开发和动态脚本编写。 脚本语言,如JavaScript、PHP、VBScript和Perl,它们介于HTML和传统的编程语言之间,具有比解释性语言更简单的语法结构。脚本语言主要用于...
本文探讨了Java和脚本语言的整合与应用,讨论了脚本语言的开发特点和Java与脚本语言的整合理由、整合方法和注意事项,并对Java与其他语言的互操作性进行了研究,为程序开发者提供了一个合适的选择来平衡利用Java和...
Java运行JavaScript脚本引擎Rhino是一个强大的工具,它允许Java应用程序执行JavaScript代码并利用JavaScript的灵活性和动态性。Rhino是Mozilla基金会开发的一个开源项目,它完全用Java编写,因此可以无缝集成到Java...
在Java编程环境中,有时我们需要与JavaScript交互,例如执行一些动态脚本或者利用JavaScript库的功能。Java提供了这样的能力,让我们可以直接在Java程序中运行JS代码。这主要得益于Oracle公司在Java 6版本引入的一个...
【脚本化Java】是指将JavaScript这种脚本语言与Java编程语言相结合,使得JavaScript能够用于控制和定制Java应用程序。在Java 6版本中,引入了对脚本化语言的支持,特别是通过内置的JavaScript解释器(如Rhino),...
尽管“Java脚本编程”这个表述在日常交流中可能会被提及,但实际上Java和JavaScript是两种完全不同的编程语言。Java是一种面向对象的编程语言,它由Sun Microsystems开发并在1995年发布。Java以其跨平台性著称,即...
标题中的“纯Java实现的一个脚本语言 语法类似javascript.zip”揭示了这是一个使用Java编程语言构建的脚本引擎,其语法设计受到了JavaScript的影响。这意味着它可能提供了一个在Java环境中执行类似JavaScript语法的...
4. **交互式编程**:Java脚本API还支持与脚本环境的交互,例如设置全局变量、调用脚本函数、捕获异常等。 5. **使用脚本文件**:除了直接执行字符串中的脚本,还可以加载并执行外部脚本文件。例如,如果有一个名为`...
在Android开发中,Java语言是主要的编程工具,但有时候我们可能需要在应用程序中执行一些脚本代码,比如JavaScript、Python或Shell等。这通常是为了实现一些特定功能,如自动化处理、数据解析或是利用第三方库的脚本...
JavaFX Script 编程语言基于 Java 平台,因此要求在系统上安装 JDK 5 或 JDK 6(6 更快)。在开始学习 JavaFX Script 编程语言之前,需要在系统上安装 JDK 6 或 JDK 5,然后再继续学习本教程。 knowledge point 1...
Java 8 Nashorn脚本引擎是Java平台上的一个强大工具,它允许开发者在Java应用程序中直接执行JavaScript代码,极大地增强了Java与动态语言的交互能力。Nashorn引擎首次引入于Java 8,作为对之前Rhino JavaScript引擎...
Java脚本语言,通常指的是Java Scripting API (JSAPI) 或者是JavaScript,它是一种轻量级、解释型的编程语言,广泛应用于Web开发中,为网页提供动态交互功能。虽然名字相似,但它与Java语言在语法和用途上有所不同。...