开发学院WEB开发Jsp 给 Java SE 注入脚本语言的活力 阅读

给 Java SE 注入脚本语言的活力

 2008-01-05 08:31:37 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤秴顪冮妶鍡楀闁告鍥х叀濠㈣泛谩閻斿吋鐓ラ悗锝庡厴閸嬫挻绻濆顓涙嫼閻熸粎澧楃敮鎺撶娴煎瓨鐓曢柟鎯ь嚟閳藉鏌嶇紒妯荤叆妞ゎ偅绻堥幊婊呭枈濡顏归梻鍌欑閹诧紕绮欓幋锔哄亼闁哄鍨熼弸鏃堟煛閸愶絽浜剧紓浣虹帛缁嬫挻绂掗敃鍌氱<婵﹩鍓﹂悗鎶芥⒒娴e摜锛嶇紒顕呭灦楠炴垿宕堕鍌氱ウ闁诲函缍嗘禍鏍绩娴犲鐓欓梺顓ㄧ畱婢ь垱銇勯弬鍨偓瑙勭┍婵犲洦鍊锋い蹇撳閸嬫捇寮借濞兼牕鈹戦悩瀹犲闁稿被鍔庨幉姝岀疀濞戞ḿ鐤呴梺鍦檸閸犳寮查幖浣圭叆闁绘洖鍊圭€氾拷
核心提示:2006 年 10 月 30 日 在即将发布的 java SE6(Mustang)中,增加了对脚本语言的支持,给 Java SE 注入脚本语言的活力,通过对脚本语言的调用,使得一些通常用 Java 比较难于实现的功能变得简单和轻便,表示这些脚本引擎的使用将十分自由,目前该项目已对包括 Groovy, JavaScrip

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 的书的封面:

给 Java SE 注入脚本语言的活力(图一)

Rhino 项目可以追朔到 1997 年,当时 Netscape 计划开发一个纯 Java 实现的 Navigator,为此需要一个 Java 实现的 JavaScript —— Javagator。它也就是 Rhino 的前身。起初 Rhino 将 JavaScript 编译成 Java 的二进制代码执行,这样它会有最好的性能。后来由于编译执行的方式存在垃圾收集的问题并且编译和装载过程的开销过大,不能满足一些项目的需求,Rhino 提供了解释执行的方式。随着 Rhino 开放源代码,越来越多的用户在自己的产品中使用了 Rhino,同时也有越来越多的开发者参与了 Rhino 的开发并做出了很大的贡献。如今 Rhino1.6R2 版本将被包含在 Java SE6 中发行,更多的 Java 开发者将从中获益。

Rhino 提供了如下功能

  • 对 JavaScript 1.5 的完全支持
  • 直接在 Java 中使用 JavaScript 的功能
  • 一个 JavaScript shell 用于运行 JavaScript 脚本
  • 一个 JavaScript 的编译器,用于将 JavaScript 编译成 Java 二进制文件

 

支持的脚本语言

在dev.java.net可以找到官方的脚本引擎的实现项目。这一项目基于BSD License ,表示这些脚本引擎的使用将十分自由。目前该项目已对包括 Groovy, JavaScript, Python, Ruby, php 在内的二十多种脚本语言提供了支持。这一支持列表还将不断扩大。


Tags:Java SE 注入

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接