Where can I find a list of available JSR-223 scripting languages?

also i found this page: http://java-source.net/open-source/scripting-languages

they are mentioning other script languages, like a Basic like called JBasic, LUA, LuaJava... ePascal and many other


I'm not aware of a comprehensive list.

However it is worth pointing out that you can use pretty much any embeddable JVM language for scripting purposes as long as it supports dynamic compilation / execution at runtime. It doesn't really matter if it is JSR233 or not.

For example, I use Clojure for scripting (with a custom DSL) in a few of my apps.

I've not tried it myself, but I think you could also use Scala: scala as scripting language

FWIW, my personal choices would be:

  • Clojure for expressive power / DSL capabilities (if you are using the scripting capability yourself or with an expert team)
  • Groovy if your main goal is ease of use for end users (because of simplicity and similarity with Java)

This is not a official list, but you can start here: http://en.wikipedia.org/wiki/List_of_JVM_languages

Rhino (JavaScript) is implemented in the Oracle JDK/JRE by default.

With this code you can see what scripting languages are available in your 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);

        }

    }

}

This example was obtained here: http://www.oracle.com/technetwork/articles/javase/scripting-140262.html

You may want to try Lua too. Take a look here: how can I embed lua in java?


The old page is located here https://web.archive.org/web/20070610234337/https://scripting.dev.java.net/

The ones hosted on the JSR-223 project page can be browsed at https://web.archive.org/web/20140909141915/https://java.net/projects/scripting/sources/svn/show/trunk/engines but the list is:

JSR-223 script engines

  • AWK
  • BeanShell
  • ejs
  • FreeMarker
  • Groovy
  • Jaskell
  • Java
  • JavaScript
  • JavaScript (Web Browser)
  • Jelly
  • JEP
  • Jexl
  • jst
  • JudoScript
  • JUEL
  • OGNL
  • Pnuts
  • Python
  • Ruby
  • Scheme
  • Sleep
  • Tcl
  • Velocity
  • XPath
  • XSLT

JSR 223 script engines maintained elsewhere

  • JavaFX Script
  • ABCL
  • AppleScript
  • Bex script
  • OCaml Scripting Project
  • PHP
  • PHP (another one)
  • Python
  • Smalltalk
  • CajuScript
  • MathEclipse
  • Kotlin

For download links look in the index.html I mention above. For any of the java.net projects just remove the dev so scripting.dev.java.net becomes scripting.java.net. You might have to browse in a repo for the old web pages.

One notable thing, the JavaScript engine (Rhino) is being completely rewritten for Java 8. The new name is Nashorn. For more see: http://openjdk.java.net/projects/nashorn/