Scripting in Java: Languages, Frameworks, and Patterns