当前位置:网站首页 > Java教程 > 正文

rhino教程java



 6、Rhino如何调用js文件

  当然,除了在命令行的方式,我们还可以使用操纵JavaScript文件。下面是一段JavaScript代码,主要目的是判断该数是否为质数。代码如下:

  1. function isPrime (num)
  2. {
  3. if (num <= 1) {
  4. print("Enter an integer no less than 2.")
  5. return false
  6. }
  7. var prime = true
  8. var sqrRoot = Math.round(Math.sqrt(num))
  9. for (var n = 2; prime & n <= sqrRoot; ++n) {
  10. prime = (num % n != 0)
  11. }
  12. return prime
  13. }

  我们保存文件为C:isPrime.js。然后我们需要调用load方法加载该脚本。最后,我们可以调用isPrime方法来判断是否为质数。

  1. js> load("C:/isPrime.js")
  2. js> isPrime(33);
  3. false
  4. js> isPrime(31)
  5. true

  需要注意的是,注意:文件分隔符需要调整,是“/”而不是“”。

  上述部分示例可以参见Rhino官方网站。另外examples目录下很多例子都值得参考与学习。

  刚才使用JavaScript操纵Java对象。接下来我们看看如何使用Java程序访问JavaScript

  Java对象操纵JavaScript

  下面是一段Java代码,用来运行数学表达式。代码如下:

  1. package com.example;
  2. import sun.org.mozilla.javascript.internal.Context;
  3. import sun.org.mozilla.javascript.internal.Scriptable;
  4. publicclass Test {
  5. publicstaticvoid main(String[] args) {
  6. Context cx = Context.enter();
  7. try {
  8. Scriptable scope = cx.initStandardObjects();
  9. String str = "3/(1+2)";
  10. Object result = cx.evaluateString(scope, str, null, 1, null);
  11. System.out.println(str + "=" + Context.toNumber(result));
  12. } finally {
  13. Context.exit();
  14. }
  15. }
  16. }

  运行Java com.example.Test,输出结果如下:

  3/(1+2)=1.0

  之所以是1.0而不是1,是因为Context.toNumber(result)返回的类型为double。另一个值得注意的是,这里import的package属于JDK 6.0。因此,在不需要Rhino提供的js.jar,该程序仍能独立运行。

  虽然Rhino作为JavaScript运行时,功能非常强大,但在性能上却无法与其他的JavaScript运行时(比如Google Chrome的V8 JavaScript Engine)相提并论。值得注意的是,JRuby专家Charles Oliver Nutter也开始参与Rhino项目中,以提升Rhino JavaScript运行时的速度,进而实现与V8的竞争。而Oracle在对JVM上的JavaScript改进与优化,我们有理由期待,在未来,新一代JavaScript运行时Nashorn的速度将会得到极大的提升。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

  • 上一篇: java视频压缩教程
  • 下一篇: java306教程全套
  • 版权声明


    相关文章:

  • java视频压缩教程2025-01-04 23:18:00
  • Java破解vip教程2025-01-04 23:18:00
  • java451教程2025-01-04 23:18:00
  • 兄弟连java变量教程2025-01-04 23:18:00
  • java 409集教程2025-01-04 23:18:00
  • java306教程全套2025-01-04 23:18:00
  • java实用教程 耿2025-01-04 23:18:00
  • 网易java教程2025-01-04 23:18:00
  • java教程二进制2025-01-04 23:18:00
  • java程序设计教程pdf2025-01-04 23:18:00