zoukankan      html  css  js  c++  java
  • 初识Rhino

    初识Rhino

    author:emu(黄希彤)

    Rhino,就是我期盼了多年的java平台上的javascript。由于这个怪模怪样的名字和宣传的不力加上我的孤陋寡闻,居然到这几天才听说它。

    前阵子我试用过另一种java平台上的脚本语言groovy,因为据说它将会成为标准。确实groovy有很多吸引人的特性,比如数据库访问、groovlet,gsp,闭包,不需要编译直接运行、动态类型都很让人振奋,可是由于在包引用上的问题运行效率的问题上我都没有找到合适的解决方案,我暂时对它失去了兴趣,期待它以后的版本可以有更好的表现,比如可以在其中嵌入java代码,而不是在java里面嵌入groovy代码。

    Rhino对我最大的诱惑是,写javascript多我来说比可能写中文还要来的简单。几乎不用学习什么新的东西(当然有一些以前脚本开发里面没有的新东西,比如print语句,可是对于java程序员来说不是问题),除了要配置一下开发环境(很多编辑器本来就都支持javascript的高亮显示,只要添加一个java org.mozilla.javascript.tools.shell.Main 用户工具就可以很方便的开始编码调试了,我用的是editplus),随便在以前的代码库里面拿一段代码出来放进去,运行起来:

    var q=9 
    var i
    =[] 
    var count
    =0 
    var d 
    = new Date(); 
    scan(
    0
    print(
    "totle results:"+count) 
    print(
    "time used:"+(new Date()-d)) 

    function scan(n)

        
    if (n==q)
            print(i) 
            count
    ++ 
            
    return 
        }
     
        i[n]
    =0 
        
    while(i[n]<q){
            i[n] 
    = i[n]+1 
            
    if (check(n)){
                scan(n
    +1
            }
     
        }
     
    }
     

    function check(n)

        
    for (var j=0; j<n;j++)
            
    if (i[j]==i[n] || i[j]-i[n]==j-|| i[j]-i[n]==n-j )
                
    return false  
        
    return true 
    }
     



    嗯,我要承认我没什么新意,还是以前在比较groovy运行效率时用的9皇后问题,除了把document.write改成print,其他都没改。运行一下:

    C:/Documents and Settings/Administrator>java org.mozilla.javascript.tools.shell.Main E:/test/queens.js

    ......
    9,7,4,2,8,6,1,3,5
    totle results:352
    time used:892

    比java慢了,不过groovy快。

    不过注意到,在Rhino的控制台下面 load ("e:/test/queens.js") 的话运行速度会慢下来一倍,应该是load函数的问题

    author:emu(黄希彤)  


  • 相关阅读:
    css选择器
    有关cookies与session的详细信息
    06OC之内存管理
    04OC之分类Category,协议Protocol,Copy,代码块block
    IOS学习目录
    03OC的类的补充
    02OC的类和对象
    02第一个OC程序
    01OC概述
    02快速学习ExtJs之---第一个HelloWord!
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603221.html
Copyright © 2011-2022 走看看