Question

Now that Google allows Java on App Engine, I'm wondering what effect this has on a choice of web framework for App Engine.

  1. I realize Google provides the webapp framework which is pretty barebones.
  2. And the .96 version of django that's available for App Engine is restrictive.
  3. web2py burns up resources, from what I've heard.
  4. Rails (now available) can't use ActiveRecord, ActiveResource, restclient, rmagick.

Is there something I'm missing - do any frameworks work well on App Engine?

Was it helpful?

Solution

Personally, I have found Python to be more fun. That's just me. However there are several commited Java developers out there that will appreciate the Java support in GAE. Furthermore, supporting Java was a good choice by Google since it will allow the GAE platform to potentially host many other languages. It's obviously a little early to expect all JVM based languages to run on GAE, but the future looks promising. For now we can look at what is and isn't working by taking a look at this GAE Java Group Page.

Coming back to Python, I think small web applications will work great with the built-in webapp framework. Other applications will benefit more from Django 1.0. Have a look at the GAE articles under the frameworks section for a few good reads on this. In any case, you will undoubtedly have restrictions in any of your choices since most web frameworks are designed with relational databases in mind ... which datastore/bigtable is not. Furthermore, the GAE platform has to be sandboxed for security reasons which also restrict you to some extent. Hope this helps.

OTHER TIPS

Actually web2py is very light and since ~1.50 on GAE, it caches all bytecode compiled models/views/controllers.

Nevertheless you need to consider that by default is has datastore based sessions and this may add some overhead when compared with framework that do not have sessions working on GAE (at least not by default).

The web2py DAL itself does not add a significant overhead when compared to the naive Google datastore APIs.

Try Spring. It supports JPA and JDO.

There's even a Python version for Spring now.

I don't know exactly the full range of options, but I can tell you a couple of things off the bat...

  • Google Apps is built on top of / using Django.
  • Django is pretty much what Google Apps cheer and support, so I'd expect it to integrate with Google Apps better than others.
  • Google Apps has restrictions built into it that you cannot circumvent (or shouldn't). These limitations are not related to any particular framework, rather they are built into the fabric of Apps, so to speak.
  • I wouldn't worry much about performance of the framework - try to improve your design/structure, it will certainly payback better.
  • Google will eventually move to Django 1.0 and newer, plus they are updating Google Apps too.
  • They do use memcache (or an equivalent) so take that into consideration and utilize it.

It really depends on what you want to do. In my experience something small hand made on top of Webob is really good for an API. But for full fledged sites that need templates/sessions/complex routing/caching django is hard to beat.

Take into account that if you huge frameworks (like django 1.0) the first request always takes around 3 seconds to load everything in memory and keeps it there until 15 secs after that request.

And while you shop around for frameworks take into account that:

  • ORM's don't apply to the platform so basically don't matter.
  • Fast templates (like Cheetah) won't be fast (or even work) as they can't use c extensions.
  • Caching might be the most important thing to make everything fast.

If you are looking for Python, then Django would be your best bet.

Struts 2 is purported to work on Google App Engine (at least in terms of the example applications). Follow this thread:

http://www.nabble.com/Google-App-Engine-support--td22972179.html

It appears that there are some issues with Sitemesh in terms of templating, but if you're using JSP you should be ok.

It's a good choice as a web application framework goes.

I recommend web.py if you're using Python.

I use new framework GAE framework. This is similar with Django, but work on AppEngine.

Best regards!

For Python use webapp2 (comes bundled with app engine)

If you want to build large scale application and need more flexible framework, then you can take a look at Pyramid Python Framework. Previously it is called as Pylons. There are lot of good companies using this framework.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top