42

我的应用程序需要一种基于 JVM 的脚本语言,并且想看看除了 Groovy、Ruby 和 Python 之外还有什么。

谷歌一直把我指向一个死页http://scripting.dev.java.net/

4

4 回答 4

32

这不是官方列表,但您可以从这里开始:http ://en.wikipedia.org/wiki/List_of_JVM_languages

Rhino (JavaScript) 默认在 Oracle JDK/JRE 中实现。

使用此代码,您可以查看 JDK 中可用的脚本语言:

import java.util.*;
import javax.script.*;

public class A {

    public static void main( String[] args ) {

        ScriptEngineManager mgr = new ScriptEngineManager();
        List<ScriptEngineFactory> factories = mgr.getEngineFactories();

        for (ScriptEngineFactory factory : factories) {

            System.out.println("ScriptEngineFactory Info");

            String engName = factory.getEngineName();
            String engVersion = factory.getEngineVersion();
            String langName = factory.getLanguageName();
            String langVersion = factory.getLanguageVersion();

            System.out.printf("\tScript Engine: %s (%s)%n", engName, engVersion);

            List<String> engNames = factory.getNames();
            for(String name : engNames) {
                System.out.printf("\tEngine Alias: %s%n", name);
            }

            System.out.printf("\tLanguage: %s (%s)%n", langName, langVersion);

        }

    }

}

这个例子是在这里获得的:http ://www.oracle.com/technetwork/articles/javase/scripting-140262.html

您可能也想尝试 Lua。看看这里:如何在 java 中嵌入 lua?

于 2012-08-07T02:22:12.760 回答
29

旧页面位于此处https://web.archive.org/web/20070610234337/https://scripting.dev.java.net/

JSR-223 项目页面上托管的那些可以在https://web.archive.org/web/20140909141915/https://java.net/projects/scripting/sources/svn/show/trunk/engines浏览,但是清单是:

JSR-223 脚本引擎

  • AWK
  • 豆壳
  • ejs
  • 自由标记
  • 时髦的
  • 雅斯凯尔
  • 爪哇
  • JavaScript
  • JavaScript(网络浏览器)
  • 果冻
  • 杰普
  • 杰克斯
  • jst
  • 柔道文
  • 尤尔
  • OGNL
  • 坚果
  • Python
  • 红宝石
  • 方案
  • 睡觉
  • Tcl
  • 速度
  • XPath
  • XSLT

JSR 223 脚本引擎在其他地方维护

  • JavaFX 脚本
  • ABCL
  • 苹果脚本
  • Bex 脚本
  • OCaml 脚本项目
  • PHP
  • PHP(另一种)
  • Python
  • 短暂聊天
  • CajuScript
  • 数学日食

对于下载链接,请查看我上面提到的 index.html。对于任何 java.net 项目,只需删除 dev,以便 scripting.dev.java.net 变为 scripting.java.net。您可能必须在存储库中浏览旧网页。

值得注意的是,JavaScript 引擎 (Rhino) 正在为 Java 8 完全重写。新名称是 Nashorn。有关更多信息,请参阅: http: //openjdk.java.net/projects/nashorn/

于 2013-02-13T22:28:29.997 回答
2

我不知道一个完整的列表。

然而值得指出的是,只要它支持运行时的动态编译/执行,您几乎可以使用任何可嵌入的 JVM 语言来编写脚本。它是否是 JSR233 并不重要。

例如,我在一些应用程序中使用 Clojure 编写脚本(使用自定义 DSL)。

我自己没有尝试过,但我认为你也可以使用 Scala: scala as scripting language

FWIW,我个人的选择是:

  • Clojure用于表达能力/DSL 功能(如果您自己或与专家团队一起使用脚本功能)
  • 如果您的主要目标是易于最终用户使用,则使用Groovy(因为简单且与 Java 相似)
于 2012-08-07T02:23:01.277 回答
1

我也找到了这个页面:http: //java-source.net/open-source/scripting-languages

他们提到了其他脚本语言,例如称为 JBasic、LUA、LuaJava 的 Basic ...... ePascal 和许多其他

于 2015-02-01T04:35:50.173 回答