The JVM is an industry-proven environment for enterprise applications development and it has been receiving lots of updates especially after moving to be open source. The only problem was the Java programming language in my opinion. Java is an excellent language for its simplicity and consistency (people may argue) but it's not a modern language and lacks most of the features that the current modern crowd is looking for.
For those who tie the JVM (Java Virtual Machine) with the Java Programming Language, I'm sorry to say, but you are absolutely wrong. The Java programming language is the first language that supported the byte-code generated for the JVM and it's the most famous one so far but the virtual machine is an environment (a very stable one actually) and many programming languages (literally; many) is now supported on top of the JVM, you can write Jython (Python implementation in Java) and your code will run seamlessly over the JVM with your old Java code/classes.
Here is a list of the most interesting "modern" programming languages that run over the JVM and that leverage the new features of the modern programming languages without sacrificing the performance you used to like when writing in Java (this is not true in all the languages, but true for most).
Groovy is agile and dynamic object-oriented programming language, getting very good support lately and has somehow poor performance in comparison to Java and Scala but hopes that Groovy++ will have a much better performance. Groovy is inspired by Ruby, Python, and Smalltalk.
Scala is simply a beautiful functional general-purpose programming language with exceptional performance and is considered to be the most interesting "emerging language" for the JVM, excellent for concurrent applications due to the functional nature. It's the language used for the modern backend of Twitter which handles around 600 tweets per second at the time of writing this post, that's more than 26 Million tweets per day. Scala is a statically typed programming language.
Clojure is another functional programming language that is completely dynamic, supports type inference and is considered a dialect of lisp.
Python for the JVM, dynamic compilation to bytecodes and works pretty well with libraries already written in Java.
Jython is written completely in Java and is truly multithreaded (no GIL, Global Interpreter Lock) and uses the generational JVM garbage collection (or virtually any garbage collector available for the JVM), not the simple reference counting garbage collection of CPython.
JRuby is like Jython, it's Ruby written in Java and written for the JVM, supports true threading and has attracted wide support from the community.
I'm mostly interested in scala and groovy (Grails to be specific) and I believe I'll share my experience with you in my learning way later.
I hope you enjoyed this.