> 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.
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.