Framework for GAE which use datastore (python preferred) - google-app-engine

I love the free tier of GAE, especially Datastore.
I would like to know which frameworks that use Datastore as database.
For example, I only know
Kay Framework (not maintain anymore)
http://kay-docs.shehas.net/
Ferris 2 (not maintain anymore)
http://ferris-framework.appspot.com/docs/index.html
I prefer Python, but php or java are ok too.

Honestly, GAE kind of is the framework. That's part of the point.

If you look at the Google Cloud documentation, you can see that they use Flask, Django or webapp2 as the Python frameworks for providing examples related to the use of Datastore. Personally I cannot recommend any frameworks that utilize Datastore as their database.
In general for Python you can use either the REST API or the client library for a GAE application. This article demonstrates the CRUD functionality implemented using the client library.
If you wish to use third party client libraries for the Datastore API, you can find a list here where two Java libraries are mentioned (Objectify and Catatumbo) and one PHP library (Datastore Library for PHP).

webapp2 is very light weight and has all the basics you would need. however if you are looking for a more "extensive" framework where you dont have to worry as much you could also look into Django (https://cloud.google.com/python/django/appengine)
If you like to do more yourself, like structuring your project in your own way, building your own libs = webapp2
If you want a full framework out the box in GAE Python = Django
GAE is an AMAZING service, and either way I would say you are making a great choice.
Hope this helps.

Related

JSPs for a simple Project Reporting Web App?

I'm about to start developing a simple reporting tool for tasks in international projects. In a nutshell: using the tool, a project is created, defining team members, tasks, and work packages. Team members will be asked to periodically submit reports on the work they've done (related to tasks and/or work packages). These reports will be stored and accessed trough the tool.
I'll use Google App Engine (client requirement) and its datastore (using JDO). But I want to ask you for advice on the frontend part: JSP looks pretty messy for non Java developers... any other idea???
Thanks!!!
Seems like at the moment it's either java or python. However, you may want to look at Grails. GSPs might looks a little less 'messy'. I'm suggesting Grails based on your description of the project, that I suspect will turn out anything but simple later on. You might end up being glad for the mix of constraints and flexibility that Grails will afford.
JSP doesn't need to be any messier than other similar HTML presentation frameworks, it really comes down to implementation. That being said, it is old Java technology which means it's not being kept up to date, and finding a good single source of documentation is difficult.
If you don't want to use JSP, there are other frameworks you can use, you just need to make sure they're compatible with Google App Engine.
The new kid on the block is the Play framework, and that's a Java MVC framework similar to Ruby on Rails. You can find a tutorial here: http://viralpatel.net/blogs/first-play-framework-gae-siena-application-tutorial-example/
If you're going to use Spring, check out this question: Alternatives to JSP for Spring MVC view layer
For a front end developer, if the code is separated correctly, you won't have to know anything about Java since there shouldn't be any Java mixed in with the HTML. If that's your only worry, then I would just go with JSP to keep things simple unless the team has experience with another technology.

Would anyone recommend using the web2py framework instead of the Google App Engine?

My project amounts to a vertical Q and A site not unlike Quora. Just as on Quora, I want users to be able to follow other users and follow topics. All questions will be tagged in one of 15 topics.
If Google App Engine is not a good framework for this sort of project, what would you suggest? I have also considered Django and Amazon Web Services.
It is important to note that I have minimal programming experience (primarily in Java and MySQL). However, I am willing to learn whatever language would be most useful.
I guess I am really just asking what is the benefit of using the web2py framework instead of just working directly with the Google App Engine.
If your target platform is exclusively GAE probably the only real advantage of web2py is its form generation/validation/processing capability and the pure python template language.
The real advantage of using web2py in your case would be the portability of code because of the DAL. If you find out that GAE is not for you and want to run with MySQL on a VPS, you would not need to rewrite more than one line of code (the one that connects to db), except for GAE specific (or mysql specific) optimizations.
web2py has some useful developer tools like the wizard which can reduce your development time in some cases.
You wouldn't want to work directly with the Google App Engine; that would require writing CGI code which would be an awful lot of unnecessary work. You'd want to use some sort of WSGI-compliant framework, eg, Django, web2py (as you mentioned), or webapp (the simple framework provided by Google for use with GAE).
I have no experience with webapp, but I have some limited experience with Django and web2py. I have not used either on GAE. As I understand it, web2py supports GAE better out of the box than Django.
Personally, I prefer web2py because I found myself fighting against the framework more when I used Django (eg, can't write python code in Django templates). I won't get into all the differences (there are plenty of questions on SO that address them).
Bottom line: I prefer web2py.

Is there any ORM tools on google app engine (Java)?

everyone. I used Ruby and Rails before, and I enjoy Rails's ORM, which make me develop application very fast... ...(also make me reduce lots of SQL statement.) But now, I need to move from ROR to Google App Engine. Is there any ORM tools on that? Also, I heart that Google have some amazing tools called "Google Web Toolkit", can I take advance of this tools within any setup? Thank u.
GWT is not a ORM tool by any stretch of imagination. You can check JDO or JPA for GAE applications built using GWT. My personal favorite is Objectify, a perfect balance between native API and JDO. YMMV
If you are not particular of language, have you considered Python + Django?
I've been lead developer for mardao, https://github.com/sosandstrom/mardao/wiki/Quick for three years now, and it is a combined ORM and Dao generator. You run it as a maven plugin at build-time, it scans your JPA-annotated domain objects and generates DAOs for you, using the Low-level API of the Datastore. No classpath scanning or reflection is used run-time!
It is in stable production maturity (version 2.3.0) and available in Maven Central.

What's the simplest, most concise web technology to build an app with on Google App Engine?

Now that Java has allowed multiple additional languages to run on top of Google App Engine, which of the newly available languages would allow an app to be developed the most simply and concisely? Let's assume most people are aware of Ruby on Rails, PHP, Coldfusion and Python/Django and we can take for granted that these are pretty simple and concise. Excluding these, which technology that is now available because of Java would surprise people to know how simple and concise it is to develop a web app in?
I think JAX-RS is probably the simplest and most concise for Java. Both Jersey and Restlet are available for google appe engine.
Take a look here for the supported Java frameworks in Google App Engine.
Google has made it very easy with their Eclipse plugin for App Engine to develop in GWT which can give web apps a very AJAXy web 2.0 feel without much effort.
It's not exactly clear what concrete attributes you're looking for. Conciseness is all very well, until it interferes with readability. As far as simplicity goes, Java or Python are going to be the simplest options for a while, simply because they're officially supported and have fully developed APIs.

Do you have any comments on using GWT with Appengine?

I'm looking for tips, suggestions, advice or examples of applications build using Google's Web Toolkit with Google AppEngine.
Since Google AppEngine now supports Java using GWT just became a whole lot easier (ie. you can use GWT RPC).
Take a look this screencast.
Here's a screencast on the subject: Using Java (GWT) with Google App Engine
Functionality seems very limited though since GAE uses Python + JavaScript and not Java.
Can you elaborate more on why using GWT with the Java version of GAE would necessarily be a good idea?
I'm not arguing against it, and it seems obvious Java would be the way to go, but just wanted to hear the concrete reasons.
To answer my own question: GWT provides an interface called "GWT RPC" that allows you to talk directly to Java Servlets, therefore offering an amazing level of integration between client and server.
The crux of the problem with GWT and GAE is that you want to use JDO to persist your objects when using GAE, and the bytecode manipulation done by the nucleus (JDO implementation) makes your domain objects no longer work with "GWT-RPC".
Today, the best solution is probably the Gilead GWT adapter for Google App Engine which is currently under early stage.

Resources