Wednesday, April 8, 2009

Rhino JavaScript working on App Engine Java Edition


I was super-excited this morning, when I saw the announcement that Google had released a Java version of their App Engine environment. My heart sank a bit when I read that they had a class white-list for security reasons, and told myself that I wouldn't be surprised if that means that you cant run Server-side JavaScript at all.

However, after reading Ola Bini's quick article on how to enable JRuby, I felt that it might be doable, after all, JS doesn't even have Threads (which more or less thankfully are disabled in GAE). It _should_ work.  

So I went and downloaded the eclipse plugin, created a new project, which came with its own "Hello World" servlet and dropped the Mozilla labs JS version 1.7 jar (from the Dojo Ajax Toolkit's util/shrinksafe folder) into the lib/ folder of the GAE project, added some paths here and there -- and it worked.

I tried something really simple like this;

...

String s = "var foo = {foo: 17, bar: 4711}; foo.foo;";

Object result = cx.evaluateString(scope, s, "", 1, null);

resp.getWriter().println(Context.toString(result));

...

And out I got a 

17

:)

I just saw that Google has limited the Java GAE SDK for the 10 first to register. I guess Sweden was the right place to be :)  If you want to see my sample project, you can download it from here;

http://genericwitticism.com/rhino.zip

Cheers,
PS

13 comments:

Roberto Saccon said...

Cool, Peter, now we got what we have been waiting for ! Was offline yesterday, and today, after googeling for appengine and rhino this was the top entry !

Ivan said...

i almost can't wait to get home to try this out. unfortunately, i'll have to :(

Peter Svensson said...

@Roberto Saccon :) That's good to hear. Now I'll just try to find time to read in a file and to port the REST server interface I did for Babble/10gen.

@Ivan: Work is soon over! Time to play.

main said...

Nice to see another language work.

I wrote aboutn bringing up a sinatra app.
You can find it here.

http://blog.bigcurl.de

Thanks
Sam

Hannes Wallnoefer said...
This comment has been removed by the author.
Hannes Wallnoefer said...

It runs very well indeed. If you're seriously interested in running Rhino on App Engine, make sure you check out Helma NG, a compact yet powerful server-side JS runtime based on Rhino.

http://helma-ng.appspot.com/

Peter Svensson said...

@Hannes Wallnoefer: You're right of course. I hadn't even thought of that yet, having a lot to do. It all depends on what kind of magic Helma does with Java under the hood, since the GAE/J has a class whitelist. No dojox.tools, for example, and so on. No Threads stuff. But either it would work directly, or it will be possibly to do a 'Helma lite' och 'Helma GAE' version, I'm sure.

Thanks for the idea!

Maksim Lin said...

Peter, I think what Hannes meant is that helma-ng is already running well on App Engine.

Hannes has posted a howto on itAnd in his comment above is the link to the demo app running on appspot.

Peter Svensson said...

@Makrim Lin: You are right, of course. Maybe it wold help if I actually read what I was commenting :)

Kon Abaga said...

i have gone through your site information and it is the sae oppertunity that i was looking for thr facilities,
the process that what you are offering , are perfectely matched to my expection, very soon you will get
responce from my side


online job

javieth said...

JavaScript is a good program and very easy to use. I don´t like a complex program. I prefer javascript because i consider it like a device very eficient and it have a good quality.
I always looking for the quality that is why i prefer to buy viagra because i always have a great result in my sexual life.

oakleyses said...

michael kors, nike roshe, michael kors pas cher, nike free pas cher, polo ralph lauren, nike blazer, sac burberry, air jordan, hollister, longchamp, nike trainers, nike roshe run, vanessa bruno, vans pas cher, north face, timberland, louis vuitton, longchamp, sac longchamp, oakley pas cher, ray ban sunglasses, hollister, michael kors, ray ban pas cher, polo lacoste, nike huarache, barbour, new balance pas cher, sac louis vuitton, sac hermes, nike roshe run, vans shoes, sac guess, mulberry, nike free, mac cosmetics, abercrombie and fitch, lululemon, louboutin, air max, air force, louis vuitton uk, hogan outlet, converse pas cher, north face, nike tn, ralph lauren, hollister, sac louis vuitton, nike air max

oakleyses said...

tiffany and co, polo ralph lauren outlet, louboutin shoes, louis vuitton outlet, louboutin outlet, kate spade handbags, air max, michael kors outlet, polo ralph lauren outlet, louis vuitton outlet stores, nike shoes, louboutin, michael kors outlet, oakley sunglasses cheap, longchamp handbags, chanel handbags, kate spade outlet, michael kors outlet, true religion jeans, oakley sunglasses, louis vuitton, coach factory outlet, michael kors outlet, nike free, christian louboutin shoes, prada outlet, michael kors outlet, burberry outlet, tiffany and co, coach purses, burberry outlet, true religion jeans, ray ban sunglasses, prada handbags, michael kors outlet, coach outlet store online, louis vuitton handbags, tory burch outlet, air max, gucci outlet, jordan shoes, longchamp outlet, louis vuitton outlet, coach outlet, ray ban sunglasses, oakley sunglasses, longchamp handbags