Rhino-JavaScript

Hi, because we are currently adding scripting to our engine I created that little wiki: http://mineforce.de/wiki/index.php/Rhino#That.27s_just_a_little_Rhino-tutorial.
It doesn’t cover everything, it’s a collection of code-snippets with an explanation of what it does.
If you find any mistakes or improvements feel free to criticize, comment etc. :slight_smile:
I hope it helps getting started with Rhino ;D

Nashorn

I think that nashorn is used in the jdk and rhino is an external lib. There are some differences, but as the Dalvik Virtual Machine doesn’t include nashorn we decided to go for rhino :).
They are quite similiar, but not the same.

Why do you use scripting anyways? Do you already have a real use case, or is it just for fun/experimenting.

Hi everybody, I’m coding with Phibedy so I can answer that querstion as well.
ATM we’re developing a 2D Game Engine. To have maximum flexibility we decided to implement scripting. We can (once it’s finished) script Entity behavior, link the user interface to the game and a lot more we can’t event think of atm. :yawn:

This is personal curiosity: Doesn’t android expose an interface to V8? I’d avoid Rhino cause it’s dead slow…not an issue if you don’t need script that do any heavy lifting.

If you use the optimizer the script is compiled to java bytecode. It’s quite fast as long as you don’t have to much javascript -> java calls. I wouldn’t say that it’s slow if you use it the right way. Of course it’s slower than pure java.
In our case you we are going to use it for:

  • scene2d animations. For example clicking on a button -> it moves somewhere.
  • user input (mouse/keyboard) for example if you click on a NPC -> it talks to you, wasd to move, etc.
  • “DICE” would call it levolution, in our case it’s just clicking on a lamp -> light turns on/off
  • AI (but we are not sure about it, it depends on how many information the AI needs)
  • some other stuff I don’t know yet ;D

You can run javascript on android directly using the V8 if you “fake-use” the browser somehow, but I am not quite sure about it. But it’s said to be extremely slow, because the app is still a java-app and “emulates” the browser somehow. If you build a html/css/java-script-app it seems to work. But I haven’t created one of those apps yet, so I just know what I read about it and that doesn’t have to be absolutely correct :slight_smile:

For clarity sake I was referring to the “optimized” output and that’s why I explicitly stated that unless you’re doing heavy work on the scripting side that it’s unlikely to be a concern.

It seems like a massive oversight on Google’s part not to expose a nice simple java <-> V8 bridge as it would be no work at all for them to do.