- 浏览: 925294 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
好久没去IBM的developerworks了,今天去看了下,发现这么个新鲜的东东: Java6.0中支持JavaScript. 呵呵, 有意思, 试试,于是在eclipse里照着IBM里的教程小跑了下那个程序,出结果了. 其中Java程序如下:
public class ScriptDemo { public static void main(String args[]) throws Exception { // Get the JavaScript engine ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); // Set JavaScript variables Bindings vars = new SimpleBindings(); vars.put("demoVar", "value set in ScriptDemo.java"); vars.put("strBuf", new StringBuffer("string buffer")); // Run DemoScript.js Reader scriptReader = new InputStreamReader( ScriptDemo .class.getResourceAsStream("DemoScript.js")); try { engine.eval(scriptReader, vars); } finally { scriptReader.close(); } // Get JavaScript variables Object demoVar = vars.get("demoVar"); System.out.println("[Java] demoVar: " + demoVar); System.out.println(" Java object: " + demoVar.getClass().getName()); System.out.println(); Object strBuf = vars.get("strBuf"); System.out.println("[Java] strBuf: " + strBuf); System.out.println(" Java object: " + strBuf.getClass().getName()); System.out.println(); Object newVar = vars.get("newVar"); System.out.println("[Java] newVar: " + newVar); System.out.println(" Java object: " + newVar.getClass().getName()); System.out.println(); } }
要执行的javaScript如下:
println("Start script \r\n"); // Output the type of an object function printType(obj) { if (obj.getClass) println(" Java object: " + obj.getClass().name); else println(" JS object: " + obj.toSource()); println(""); } // Print variable println("[JS] demoVar: " + demoVar); printType(demoVar); // Call method of Java object strBuf.append(" used in DemoScript.js"); println("[JS] strBuf: " + strBuf); printType(strBuf); // Modify variable demoVar = "value set in DemoScript.js"; println("[JS] demoVar: " + demoVar); printType(demoVar); // Set a new variable var newVar = { x: 1, y: { u: 2, v: 3 } } println("[JS] newVar: " + newVar); printType(newVar); println("End script \r\n");
运行后是出结果了, 但发现一些问题,想了想也没解决,写在这里希望能有更多的人一起来讨论:
1, javaScript里的println是谁的方法? Java的? 还是JavaScript里的? 好像是Java的, 是像在jsp里可能直接访问application 等这些对象那样可以直接调用System.out的println方法? 都还有什么Java方法可以在JavaScript里直接调用? 这些方法在javaScript文件中怎么就不能再在浏览器直接运行javaScript方法那样了吧? 毕竟浏览器是不认识方法println的.另外看来也是完全像在Java里那样调用StringBuffer里append方法: strBuf.append(" used in DemoScript.js"); 那能不能这样: 在一个辍名为js的文件里写的全是java语句,再在别的真正Java程序里eval这个貌为js的Java文件,这样岂不是达到了动态编译的目地?像在JavaScript里的eval那样.
2, printType方法的obj.getClass看起来既熟悉又陌生: 熟悉的是在Java里我们可以调用一个对象的getClass()来获得它的类信息,陌生的是这个调用没有一个方法应有的明显特征括号.又是在javaScript里可以按javascript的语法特性来调用Java里的方法: 也就是把Object类的getClass方法当成JavaScript里的一个属性.接下来又有obj.getClass(),是不是说即可以以Java的语法来调用也可以模仿JavaScript里的语法特性来调用?
3, 是不是在背后Java与JavaScript的过滤上有个类似于jsp里的pageContent这样的一个对象来作为一些临时变量的中转站?
4, 这样的feature能有什么具体的用处?会像Java与groovy的结合那样来做到不启动服务器就可以直接来更改需求?IBM的教程里有这样一句话"If
your script implements all the methods of a Java interface, you can also use
getInterface()
to obtain a Java object whose methods are coded in
the scripting language. "是否就意味着可以用javaScript来实现Java里的一个接口? 那么这个接口的实现具体又有什么语法新特性?
不会在javaScript里出现关键字implements吧? getInterface
()调用返回的接口怎么指定? 也就是说JVM怎么知道能有什么接口可以get?
5, 是不是会有人根据这个特性写一个更加灵活的web开发框架?
6, JDK6.0中有了这个对JavaScript的支持,是否会像当初Ajax那样掀起JavaScript学习使用热潮?
发表评论
-
博客搬家了
2012-10-25 09:52 1331现在新博客地址是:http://www.libi ... -
818 ubuntu的不方便
2010-12-25 04:49 3678家里电脑装了个Ubuntu系统,相比于Windows系统来说, ... -
又见排序 ---顺便八一八对现在面试内容的感想
2010-11-07 17:52 1323在准备一个面试,而对排序算法的再熟悉又是面试准备的一小部 ... -
学习(或研究或借鉴)开源框架的一个好入口
2010-03-23 16:11 1411下狠劲研究开源框架有段日子了, 回过头来想想其中的滋味真是百味 ... -
Maven+Ant ? or Ant + Maven?
2010-01-10 12:56 2075项目现在用的是Maven来控制管理项目开发。 现在问 ... -
JSP中关于set标签的一个实验
2009-12-31 16:32 2091实验目的,看jsp中set标签能不能设置一个boo ... -
由“我的StopWatch”博客的一篇回复想到的
2009-12-23 10:26 1364今天看到网友对我的StopWatch回复了一句话“建议看 ... -
日期format时,“MM”与“mm”为何不同?
2009-12-21 16:50 1648项目中,默认的日期格式为“2009-12-08”,某个页 ... -
我的StopWatch
2009-12-17 16:42 1843项目中一个功能很耗时,头儿让我看看是什么原因造成的,看能 ... -
获得指定月的和第一秒和最后一秒
2009-11-16 18:59 1987一个工具, 用来获得指定月的和第一秒和最后一秒。 ... -
云计算对21世纪IT人才的挑战
2009-10-13 09:01 1170原文地址:http://www. ... -
十大软件质量因素在CMMI评估时如何蒙混过关?
2009-08-19 11:12 1622这段时间在准备CMMI评估,实际情况跟CMMI3里的要求相去甚 ... -
Scala在国内的作用情况怎样?
2009-08-03 14:23 2143听说这种语言也有很长一段时间了, 前些天看的一篇对Groovy ... -
银行卡没了之后
2009-07-24 13:29 17007月18号(周六)晚上用 ... -
发现在个查找并安装显卡驱动的好方法
2009-07-22 15:29 2236公司里的办公电脑崩溃了,修好好重装了OS,在装显止驱动时有了个 ... -
回家吃饭?
2009-07-20 15:17 1169以此转载记今“回家吃饭”事件 ---------------- ... -
像QQ这样的软件是用什么语言写的?好像不是Java,那么为什么不用Java写?具体有哪些考虑?
2009-07-16 09:46 9333Java最大的好处(我能体会到的)是平台无关性,而这正是像QQ ... -
Dispatcher的forward有return功能?
2009-07-14 10:47 2713这个问题以前一直没有注意,也没有想到会有人这么来想,直到前两天 ... -
关于健康的民间53个不传之密
2009-07-10 08:43 1083发到一篇健康方面的文 ... -
兔子吃肉
2009-07-09 08:42 1808兔子吃肉了,大家相信么? 我一直以为兔子是素食主义者, 今 ...
相关推荐
要在Java中运行JavaScript,首先需要引入支持JavaScript的引擎,如Nashorn(在Java 8中默认提供,但在Java 11后被废弃)或Rhino。如果使用Nashorn,通常不需要额外的库,因为它已经包含在Java标准版中。若选择Rhino...
例如,你可以在Java服务端定义一个接口,该接口允许在运行时加载和执行JavaScript脚本来完成特定任务,这样就能轻松地切换或更新业务逻辑,而无需重新编译和部署Java代码。 在实际项目中,这种方法可以应用于许多...
标题和描述中提到的“Java执行JavaScript代码”指向了一个特定的技术范畴,即在Java环境中执行JavaScript代码。这通常涉及到使用Java中的脚本引擎API,特别是那些支持JavaScript的实现。从提供的部分内容中可以提炼...
### JavaApplet与JavaScript #### 6.1 JavaApplet ##### 6.1.1 JavaApplet概述 ...尽管如此,了解 JavaApplet 和 JavaScript 的工作原理仍然是很有价值的,特别是在维护旧的 Web 应用程序或学习 Web 开发历史方面。
在执行环境上,JavaScript主要运行在浏览器中,通过Web API与DOM进行交互,实现网页动态化。随着Node.js的出现,JavaScript也能在服务器端运行,提供了全栈开发的可能性。而Java的应用场景更为广泛,除了浏览器插件...
在Java编程环境中,有时我们需要与JavaScript交互,例如执行一些动态脚本或者利用JavaScript库的功能。Java提供了这样的能力,让我们可以直接在Java程序中运行JS代码。这主要得益于Oracle公司在Java 6版本引入的一个...
Rhino是由Mozilla开发的一个开源的JavaScript引擎,它完全用Java编写,能够将JavaScript代码编译为Java字节码,从而使得JavaScript能够在Java平台上高效运行。这个“效率非常快的java读取javascript”很可能就是基于...
使用JAVA来运行已有的JavaScript方法,可以只运行一小段js代码,也可以运行一个js的方法,而你可以不用关心js内部的方法是怎么实现的,只是js是可以运行的,拿到java上也可以运行。 注意不能运行页面元素的相关属性...
在IT领域,有时候我们需要在Java或JavaScript代码中执行操作系统级别的命令,例如运行系统脚本、管理文件、控制进程等。这种需求通常通过调用命令行(CMD)来实现。本文将详细探讨如何在Java和JavaScript中调用...
Java则在后端处理,可以执行更复杂的操作,包括解密前端传递过来的加密数据。 这篇博客“javascript加密java解密”(链接已给出)可能探讨了如何在JavaScript中实现加密,然后在Java后端进行解密的流程。这种做法常...
在IT领域中,JavaScript与Java是两种极为重要的编程语言,尽管它们的名字相似,但实际上有着本质的区别。本文将深入探讨这两种语言的关键特性,包括它们的设计哲学、执行环境、语法差异等方面,帮助读者更清晰地理解...
Rhino是JavaScript的开源实现,可以在Java环境中运行,提供了一种在Java中执行JavaScript代码的方式。 7. **Node.js和Java Bridge**:Node.js是基于V8 JavaScript引擎的服务器端运行环境,可以通过一些库(如J2V8或...
这两种语言在不同的环境运行,Java主要在服务器端,而JavaScript则在客户端。在数据传输过程中,为了保证数据的安全,加密技术扮演了关键角色。本篇将深入探讨如何使用DES(Data Encryption Standard)算法在Java和...
Java提供了ScriptEngine接口,允许Java应用程序执行JavaScript代码,就如同在浏览器中运行的那样。脚本引擎通常由第三方库提供,如Mozilla Rhino或Nashorn。 4. Java Platform, Standard Edition(Java SE):Java ...
在“RSA通过javascript加密java解密”的场景中,我们有两个主要的技术点:JavaScript端的加密和Java端的解密。以下是对这两个环节的详细说明: 1. JavaScript端的RSA加密: - 使用库:JavaScript中常见的RSA加密库...
这些文件可以直接运行,用于演示如何在Java和JavaScript之间进行DES加密解密。通过查看和理解这些代码,你可以更好地了解如何在实际项目中应用这一技术。 6. **安全注意事项**: 虽然DES在某些场景下仍可用,但它...
在Android开发中,JavaScript与本地Java代码的交互是常见的需求,尤其在开发混合式应用时。这个主题,"Android javascript 调用本地Java函数",涉及到如何在Android的Web视图(WebView)中实现JavaScript与Java之间...
【标题】"zjj.rar_javascript_java网页_网页" 提供了一个关于JavaScript和Java在网页开发中的应用主题。这个压缩包文件很可能包含了多个与JavaScript和Java编程相关的网页示例或教程资源,帮助学习者理解这两种语言...
这一功能主要是在 Netscape Navigator 浏览器中实现的,通过在 JavaScript 脚本中使用 `java.lang.` 前缀来访问 Java 的内置类和方法。例如: ```javascript java.lang.System.out.println("Hello!"); ``` 虽然...