BeanShell

It runs in the Java Runtime Environment (JRE), dynamically executes standard Java syntax and extends it with common scripting conveniences such as loose types, commands, and method closures, like those in Perl and JavaScript.

While BeanShell allows its users to define functions that can be called from within a script, its underpinning philosophy has been to not pollute its syntax with too many extensions and "syntactic sugar", thereby ensuring that code written for a Java compiler can usually be executed interpretively by BeanShell without any changes and, almost just as much, vice versa.

This makes BeanShell a popular testing and debugging tool for the Java virtual machine (JVM) platform.

BeanShell supports scripted objects as simple method closures like those in Perl and JavaScript.

[12] This fork was merged back into the original tree in 2018,[13] retaining all the independent changes from both, and the official project has been hosted at GitHub.