After seeing the Modern Java series I've grown curious: when is Java and its related framworks the best choice for a side project/small group endeavour?
Django/RoR or Flask/Sinatra have their niches - what are good reasons for a solo developer or small team to look outside Python, Ruby or PHP? Also, for those who are using Java, where do you host your application/service?
Heroku, EC2 (or Elastic Beanstalk) and Google AppEngine are all pretty good choices if you ask me. For side projects I usually just throw them up on Heroku, but I'll use EC2 for more sophisticated deployments.
> Django/RoR or Flask/Sinatra have their niches - what are good reasons for a solo developer or small team to look outside Python, Ruby or PHP?
I'm struggling to come up with an answer to this topic. To be honest, I think you'll be fine with whatever tool you choose and I think you should just use whatever is most comfortable for you. That said, some scenarios where it might make sense to use Java (or another JVM language) over Django/RoR include:
(1) This doesn't matter for most applications (and isn't necessarily true for all applications), but if you are expecting a lot of load you will likely get more throughput out of the JVM (see how the Java platforms compare to Ruby and Python ones in this benchmark: http://www.techempower.com/benchmarks/) and you will probably be able to handle more traffic with fewer machines (Twitter reportedly needs about ten times fewer machines to run its site after rewriting a bunch of Ruby services in Scala).
(2) You may need to use a particular JVM library (there's a lot of really good ones).
(3) Some spaces of the open-source ecosystem are largely written with JVM languages (especially in the data space: Hadoop, Mahout, Spark, etc). If your team is heavily dependent on one of those spaces you may choose the JVM for your web applications simply to focus your teams knowledge and tooling on one platform.