I think the answer to this involves a big dose of "it depends", but I'd lean towards jsp. The Java ecosystem is just so mature and so comprehensive, and - for all the warts of certain elements of the Java stack (JSF, anybody) - JSP's are actually pretty cool.<p>Java is especially good for apps that have lots of intgration "touch points" were you need to tie in with external, 3rd party apps. Java makes it pretty easy to use REST, SOAP based WebServices, RPCs of different flavors (RMI, etc), asynchronous messaging using JMS, or pretty much any other integration technology you need. If you will be building larger systems that need to be built in more of a "small pieces, loosely joined" style, a JVM based stack will serve you well.<p>And if you need to do "Big Data" stuff, already being in Java will make it straightforward to use, say, Hadoop. If you want to use Machine Learning, you have the convenience of Mahout, Weka, etc. Want to join the Semantic Web? You have Apache Jena. Need to do Natural Language Processing? OpenNLP is there. Want to add search to your app? Apache Lucene / Solr are your friends.<p>Now, to be fair, <i>most</i> well known platforms have plenty of libraries available. Java isn't unique in that regard. But I think it is somewhat unique in just how comprehensive and mature the overall ecosystem is.