I discovered last year sometime that Google started support of Java on Google App Engine (GAE). Very excited about this news, I immediately signed up, downloaded the plug-in for Eclipse and started porting my web application that I was busy with to the GAE platform. I had previously started building a web application for a group I run which I was going to be hosted at home. The application was written based on JSP's, servlets and a MySQL back end hosted on Apache and Linux. This was all good, except I was paying for the bandwidth, electricity and was obviously responsible for maintaining the server. Not having a UPS, I sometimes ran into problems where the server would go down, and wasn't able to restart by itself - not an ideal situation.

This is where GAE, comes in... It's a free service, has a large amount of bandwidth /CPU time available and can scale almost infinitely. For a small/medium website, the free service will suit perfectly and if the free limits are exceeded, there is a paid for option as well. To give an idea of the free quotas, it's kinda like Gmail - You can buy more space if needed, but who really needs more than 7 Gigs?

There are a few restrictions due to the nature of distributed servers which makes up the cloud service. One of the most important is that GAE doesn't use a traditional relational database. They use what is called "Big Table", which for the most part, works fine except that JOINS and SELECT statements aren't supported in the same way as other RDBMS's. Another significant restriction is that there is no write access to the file system.

The significance of this is that all dynamically uploaded content, has to be stored in the "database". Fortunately, Big Table allows storing of a Blob, which is an infinite byte stream. A further problem that is caused by some of the restrictions, is that there are only a few frameworks that can be used. I think that the struts framework is partially supported, but probably needs a bit of modification.

I also did a search for Java based content management systems that can be used on GAE - Found... 0. Hmmm... Seems like an opportunity to me. Having built an application on the framework should give me a bit of a head start in developing a Java CMS for GAE. I'm currently working on Microsoft SharePoint development and think that some of the ideas could be built into the CMS. (Ok, I know that SharePoint is a lot more than just a CMS but there are a few similar functions.) Some of the features that I'd propose are:

•    Dynamically built menu structures
•    Security management (I.e. permissions for pages/ content/ lists/ data etc.)
•    User and role management
•    Master pages for styling and layout.
•    Dynamically added pages
•    Email from website to registered users re updated news and postings.
•    Email to website, to update news.
•    "Web parts/ widgets" for extended functionality. I don’t think that it would be possible to upload these dynamically as you wouldn’t be able to upload compiled code and write it to the file system.
•    Generic libraries to store content. These libraries will be able to store any content types.
  • Documents
  • Images/ photos
  • Style sheets, js files etc.
By allowing uploading of any content types to be stored in virtual folders, this will allow dynamically styling of the site without redeployment by simply, removing a style sheet and applying a new one. However, due to JSP's being compiled, it may not be possible upload a new master page from the web interface.

When building my web application, it was like taking a step back a couple of years in that I had to start coding at a pretty “low level”. I think that an open source framework will definitely make Java development on GAE much easier than it currently is.



Twitter Delicious Facebook Digg Stumbleupon Favorites More