Google app engine for Java has an Eclipse plugin. So you get a deploy to cloud button of sorts. I still had a distaste for the persistence layer (think hybernate + big tables) but it was easy to use.
The problem with GAE is that it's not quite there yet when it comes to web-app development in Java.
1) Does not have Maven support
3rd party exist, but not from Google
2) As you said it: persistence layer/ORM mismatch with BigTable
You could use Objectify but what are we talking about here: apps that use RDBMS or being dictate by Google what your app architecture should be?
3) Limitations imposed by GAE
There was a time where if you use Spring Framework, once in a while GAE will throw exception due to longer bootstrapping time. Does not support all Java classes and keeping GAE up to date to the latest spec.
What most Java developers want is to support Tomcat/TomEE/JavaEE5+6, deployment via Maven, with RDBMS and less restriction. Up until now, no one in the market (Heroku, CloudFoundry) do this (user-experience) well except Jelastic. Unfortunately Jelastic does not provide infrastructure; they provide the software and work with 3rd-party hosting provider for the infrastructure.
#1 has been addressed; the GAE jars are officially published to the maven central repository.
#2 is a puzzling statement to make. Compared to an RDBMS, GAE's datastore is a much more natural fit for Java object graphs because it supports hierarchical data and is naturally polymorphic. Hibernate makes crazy contortions to match up the models and this complexity bleeds through to the API. There is definitely a learning curve if you have a background in RDBMS development, but you can say the same about MongoDB or Riak or any other NoSQL store. Nevertheless, the benefits of an autoscaling, distributed, replicated, zero-administration datastore are compelling.
#2a If you really really want MySQL, GAE now offers it (Cloud SQL).
#3 is a bit ambiguous - yes, there are limitations, as there are in any hosted environment. There's a 60s deadline on startup requests, but it's not usually hard to keep even Spring apps under this limit. The missing Java classes are things like Swing - you won't miss them. Yes, things like the Servlet spec are a little old, but the servlet api hasn't changed in any material way in the last decade.
It's not perfect, but App Engine is still an awesome platform for startups. It eliminates ops and devops roles so you spend all your time writing features.
edwinnathaniel|13 years ago
1) Does not have Maven support
3rd party exist, but not from Google
2) As you said it: persistence layer/ORM mismatch with BigTable
You could use Objectify but what are we talking about here: apps that use RDBMS or being dictate by Google what your app architecture should be?
3) Limitations imposed by GAE
There was a time where if you use Spring Framework, once in a while GAE will throw exception due to longer bootstrapping time. Does not support all Java classes and keeping GAE up to date to the latest spec.
What most Java developers want is to support Tomcat/TomEE/JavaEE5+6, deployment via Maven, with RDBMS and less restriction. Up until now, no one in the market (Heroku, CloudFoundry) do this (user-experience) well except Jelastic. Unfortunately Jelastic does not provide infrastructure; they provide the software and work with 3rd-party hosting provider for the infrastructure.
stickfigure|13 years ago
#2 is a puzzling statement to make. Compared to an RDBMS, GAE's datastore is a much more natural fit for Java object graphs because it supports hierarchical data and is naturally polymorphic. Hibernate makes crazy contortions to match up the models and this complexity bleeds through to the API. There is definitely a learning curve if you have a background in RDBMS development, but you can say the same about MongoDB or Riak or any other NoSQL store. Nevertheless, the benefits of an autoscaling, distributed, replicated, zero-administration datastore are compelling.
#2a If you really really want MySQL, GAE now offers it (Cloud SQL).
#3 is a bit ambiguous - yes, there are limitations, as there are in any hosted environment. There's a 60s deadline on startup requests, but it's not usually hard to keep even Spring apps under this limit. The missing Java classes are things like Swing - you won't miss them. Yes, things like the Servlet spec are a little old, but the servlet api hasn't changed in any material way in the last decade.
It's not perfect, but App Engine is still an awesome platform for startups. It eliminates ops and devops roles so you spend all your time writing features.