Another language gaining ground in the Java community is Groovy. According to its website, Groovy is an agile and dynamic language for the Java Virtual Machine (JVM). It builds on Java's strengths but has additional power features inspired by languages like Python, Ruby and Smalltalk.
So, what's Groovy's compelling feature? According to the slashdot commenter who first brought it up (and inspired this entire project... see what he or she started?), "I was surprised that Groovy didn't appear anywhere in the article. If there's a dynamic language poised to convert the enterprise crowd, it's Groovy. [It's] able to compile into Java bytecode, compile Java code and directly exploit the huge base of Java, but without the cumbersome Java syntax. I wouldn't be surprised to see Python and Ruby supplanted by Groovy in a couple of years."
Java developer Chris Broadfoot agrees. "Groovy lets Java developers code in an effective, expressive manner, while maintaining cross-compatibility with legacy Java code," he says.
Your company may be adopting the latest hardware, but can your software take advantage of its multithreading capabilities? You might want to look at Clojure, a dynamic programming language that targets the JVM. Explains its website, Clojure is "designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language-it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection."
Small? Powerful? Java? Can those three co-exist? Chris Houser, member of the technical staff at Four D Development in Fort Wayne says, "Clojure is a small, powerful language that compiles and runs on the JVM, so no new infrastructure [is needed]. Plus it lets you get more done with less code, which is good for development schedules and maintenance. It's particularly good at taking advantage of multicore hardware without as much programmer overhead as Java."
"The most pressing issue in software development today is how to better take advantage of multicore CPUs to increase performance and reduce energy costs," explains J. McConnell, founder of Übermensch Consulting. "Clojure provides a fundamentally better approach (in terms of ease and safety) to concurrency than other languages out there. Its Lisp heritage gives it the power to greatly increase programmer productivity in a way that grows over time and to enable easy DSL creation to allow business owners to verify the correctness of programs. The fact that it runs on the JVM and can smoothly integrate with the millions of lines of legacy Java code are just icing on a very tall cake."