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 实现的
相关文档:
重写的主要优点是能够定义某个子类特有的特征:
如:
public class Father
{
public void speak()
&nb ......
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。
刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方 ......
reflection: 指我们可以于java程序执行期载入、探知、使用编译期间完全未知的classes.换句话说,java程序可以载入一个执行期才得知名称的class,获悉其完整构造(但不包括methods定义),并生成实体、或对其fields设值、或唤起其methods。 ......
原文地址:http://www.javaeye.com/topic/392836
关于Flex
Adobe Flex是一套创建富客户端应用(RIAs)的框架.Flex生成的swf文件可以直接运行在Flash Player之中。相比较基于时间轴的Flash开发,Flex框架更适合那些用传统方式开发应用程序的开发人员。Flex应用可以使用Flex builder来开发。这套IDE是基于Eclipse平台开发的。 ......
import java.io.*;
public class CheckVirusFile
{
int virusCount=0,del_count=0,spe_count=0,nameCount=0;
//用递归的方法检查File类型的参数是文件还是目录
public void judgeDir(File virFile)
{
if(!virFile.isDir ......