2. You have access to troves of Java libraries from most JVM languages.
3. Again, not all JVM languages suffer from this.
4. Some JVM languages have a REPL. JRuby and Scala for example.
5. You can use Ruby on Rails out of the box with JRuby and Torquebox. A couple of gemfile changes and you're good to go.
I think Play Framework is trying to achieve such usability, but I don't think it's there yet.
Maybe there's a legacy effect here.
There are several pretty light-weight ways to make both action- and API-oriented back ends on the JVM now, even in Java. (Although I prefer different JVM languages.)
3. IMO there're no much reason to use pure Java in webdev. Only if you have well defined project, maybe already written in JVM language, that you want to optimize
4. Depends on language. Clojure have one. Groovy/Grails too.
5. check Grails
Woah! How is Java/Groovy/etc easier to debug than Python?? In Python you just add the following line wherever you want to debug:
import ipdb; ipdb.set_trace()On other hand on JVM you don't even need such line, all works out of box, w/o code modification, never had any problem. At least with java and groovy
5. Grails adoption is tumbling. Not many places are starting new projects in Grails, or even upgrading from 2.x to 3.
5. Agree, not so popular that plain Spring maybe. But still, we're talking about features, right? not amount of projects on prod. Grails is pretty comparable to Rails/Django, in terms of features. Also, version 3 is too new, it requires to rewrite a lot of stuff to migrate. It takes time.
2. Using non-Java JVM languages seems to always create as many problems as it solves, in my experience. First, you do not get access to any libraries with C-bindings. So as your project gets going, the probability increases that some library you want to include won't work. Also, there are all sorts of micro-frictions. Debugging support not quite working. Types not matching between Java numbers and python numbers when doing comparisons. Etc. It all adds up. If you use Kotlin, then a lot of code samples you find on stackoverflow will have to be manually converted.
3. If you go pure Java, the type system can be a pain in the neck when you are doing rapid development. Something as simple as getting a row out of the database with date field, publishing it as JSON, then getting posted back an updated version from JSON, requires a bunch of conversions and annotations to make the types all get matched correctly. Writing any sort of time-saving meta code requires a really strong knowledge of how generics, annotations, and reflection works, or else you will be beating your head against the wall.
4. Restart times are longer, and there is no REPL, so rapid iteration is a little slower.
5. I still don't think there is a web framework that is as easy to use as Rails/Django. I don't think this is the fault of the language though, and I have something in the works myself on this front...