Even if this is an old thread, I feel I have to add my experience.
I used beanshell (with loops) to make my game: http://gunslinger-game.mine.nu/
It works great. Never any trouble.
But the game does relay on compiled code mostly. On every map there are from 2 to 8 statemachines running at various intervals (they have to tell when they want to run next before they exit).
This can do things like: "check if this has happend, advance the state and give the player a message". Typically from a few times each second to a few seconds between each run.
Also, some GameObject have event handlers that triggers on certain events. Like "onDeath", "onTouch" etc These are not run that often.
Also, dialogs have conditions for certain lines and actions for lines.
This isn't an awful lot but sometimes I do pretty awesome things with it (the best is when an npc ends a dialog by shooting himself in the head (and is then beeing replaced by a corpse), or when you break open an artillery cannon to extract the grenade and rig it as a bomb that you can acutally use for a weapon).
Of course, all scripting languages will work for this. But beanshell is almost exactly like java. Very easy to integrate.