易截截图软件、单文件、免安装、纯绿色、仅160KB

Java 6 中也可以运行 javascript 喽 (转)

给 Java SE 注入脚本语言的活力
Mustang 的脚本语言新特性

文档选项

将此页作为电子邮件发送

将此页作为电子邮件发送



级别: 中级
吴 玥颢 (wuyuehao@cn.ibm.com), 软件工程师, IBM
2006 年 10 月 30 日
在即将发布的 Java SE6(Mustang)中,增加了对脚本语言的支持。通过对脚本语言的调用,使得一些通常用 Java 比较难于实现的功能变得简单和轻便。脚本语言与 Java 之间的互操作将变得优雅而直接。
脚本语言与 Java
假设我们有一个简单的需求,察看一份文档中 5 个字母组成的单词的个数。用 Java 一般实现如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Find5Words {
public static void main(String[] args) throws IOException {
String result = "";
String line = null;
int num = 0;
FileReader fr = new FileReader("filename");
BufferedReader br = new BufferedReader(fr);
while ((line = br.readLine()) != null) {
result += line;
}
br.close();
fr.close();
String[] s = result.split(" ");
for (int i = 0; i < s.length; i++) {
if (s[i].matches("^\\w{5}$")) {
num++;
}
}
System.out.println(num);
}
}

再看看 Perl 语言实现同样功能的代码:
open FILE, "<filename ";
while (<FILE>) {
for (split) {
$num++ if /^\w{5}$/
}
}
print $num;

那么有没有一种优雅的方式将 Java 与脚本语言结合呢,在今年秋季即将发布的 Java SE6(代号 Mustang)中,这将成为现实。

回页首

Mustang 的脚本引擎
JSR 233 为 Java 设计了一套脚本语言 API。这一套 API 提供了在 Java 程序中调用各种脚本语言引擎的接口。任何实现了这一接口的脚本语言引擎都可以在 Java 程序中被调用。在 Mustang 的发行版本中包括了一个基于 Mozilla Rhino 的 JavaScript 脚本引擎。
Mozilla Rhino
Rhino 是一个纯 Java 的开源的 JavaScript 实现。他的名字来源于 O'Reilly 关于 JavaScript 的书的封面:

Rhino 项目可以追朔到 1997 年,当时 Netscape 计划开发一个纯 Java 实现的


相关文档:

Firefox 最新 JavaScript 引擎初探

自从 Google 推出含 V8 JavaScript 引擎的 Chrome 以来,公众对 JavaScript
引擎执行效率的胃口又一次被提高,众多浏览器的开发者们绞尽脑汁提升他们的 JavaScript 性能,Opera 最新的10.50 版的 Carakan

引擎据称已经超过 V8,而 Firefox 的开发者们也不甘示弱。
最近升级到 Firefox 3.6 的用户已经发现他们的 Java ......

Java重写与重载

重写的主要优点是能够定义某个子类特有的特征:
       如:
    public class Father
    {
             public void speak()
         &nb ......

Java中通过DWR获取session、request、response

在DWR中需要用到session,request等这些东西的时候,可以用以下方法获取:
1. 使用DWR的API (很多人都不推荐这种做法,经测试,使用起来肯定没问题)
import uk.ltd.getahead.dwr.WebContext;
import uk.ltd.getahead.dwr.WebContextFactory;
WebContext ctx = WebContextFactory.get();
ctx.getSession()
ctx.getHttp ......

java中的动态代理

   Java在JDK1.3之后加入了可协助开发动态代理功能的API.使用动态代理,可以使一个处理者(代理)服务于各个对象。创建一个动态代理类只需实现java.lang.reflect.InvocationHandler接口。
  下面创建一个处理日志的动态代理类LogHandler去代理HelloSpeaker类
   首先创建HelloSpeaker的接口
pa ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号