Sunday, 19 April 2009

Let there be light; Java support on Google App Engine

At last it happened, the long waited dream of running Java on Google App Engine became true. Well it is still in the "early look" stage and only 10.000 accounts available but everything looks near perfect and smooth. I didn't try the App Engine in python so i can not comment on that but I must admit Google did a very good job on Java version. 
Lets face it Java, its frameworks and components like hibernate, spring, ejb are still not easy to understand for a newbie. Lately I tried to show a friend who is a good .net developer, to setup eclipse and code on hibernate, spring etc... Very soon after we start he was lost.  Actually even he understands and codes he would just face another problem, hosting... Hosting a Java application is not easy and cheap. Even the very basic shared JVM hostings start 10 times more expensive than a moderate PHP hosting and shared hosting will not really let you to start or stop the server or to change the jars. OSGi is a promising way to solve this hosting problems, but still I can't say had much progress.
Well here is the solution Google App Engine is free to start and not expensive as your needs gets higher. You have your own database, and you don't need to mess with the server. All you need is built your project and deploy. Unlike what we Java develoers used to, it is quite easy to build and setup a project on Google App Engine. Just download the Eclipse Plugin and you are ready to code. The plugin add 3 buttons which help you to create a new project, run the project and deploy your project.
As you click the new project button a fully configured Google Web application with all needed jars will be created for you. You can use annotations and create entities without making any configuration changes and also a GWT page has already been created for you. This is a really fast and easy start and still more to come... You dont even need to setup a server to deploy your project. Your project already has an embedded Jetty server and there is nothing to configure.
Finally when you are done, the only thing you need to do to deploy your project to app engine is again just to click a button. 
This is how things should really be, simple... and productive. Google has just killed all your excuses to build your dream projects like complicated configurations, expensive startups... They just offer you a platform to build on and most of the time consuming and complicated stuff is all automated.
I managed to run GWT projects, some JSF and use the datastore. I am still working on Flex and JavaFx with the app engine. Soon I hope I will post some tutorials on them.
This is just the beta stage and I am sure there is still so many things to fix or to work on but for Java, things will never be like it used to... Java needed such a solution and finally it is here, everything will be much different. Pandora's box is opened and wont be closed again... soon more applications will sneak out...