Clojure или Groovy были бы моими рекомендациями.
Ответ Джона уже содержит некоторые подробности о Groovy, поэтому вот еще немного о Clojure:
- Это Лисп, поэтому он легко расширяется и отлично подходит для создания DSL
- Он написан на чистом Java, поэтому вы можете легко встраивать его в Java-приложение
- Это очень динамично, отлично подходит для интерактивных сценариев на REPL
В частности, взаимодействие с Java очень просто: объекты Clojure являются объектами Java и наоборот, и вы можете вызывать методы напрямую:
;; create a string
(def s "Hello World")
;; inspect its type
(class s)
=> java.lang.String
;; call a method
(.length s)
=> 11
;; count the characters (Clojure can treat Strings as a sequence of characters)
(frequencies s)
=> {\H 1, \e 1, \l 3, \o 2, \space 1, \W 1, \r 1, \d 1}