

Recommendation re. next JVM language - pdawczak

Dear HN. Taking steps towards fulfilling one of <i>Pragmatic Programmer</i>&#x27;s book advices - learn new language each year - I&#x27;m considering something JVM-based. Currently I&#x27;m about <i>Groovy</i> and <i>Scala</i>.<p>Which would you recommend to focus on? I&#x27;d like to learn new thing, but hoping to enrich my tool belt with something useful and valuable in job market in the future.
======
liquidcool
What language(s) do you already know?

I'm also a fan of the Pragmatic Programmer and my lifetime language count is
at 15. A few years ago I started using Groovy and haven't looked back. Very
low ceremony language that gets rid of a ton of Java boilerplate. Borrows
idioms/semantics from Ruby and Python, esp. list processing (collect, map,
find/findAll, etc.), making those languages easier to learn. There's good
library support, even outside of Grails, but Grails plugins are a big win. And
assuming you want to be on the JVM to interact with other Java libs, Groovy
makes this trivial.

I also love the optional static typing and compilation, which greatly improves
performance.

I usually recommend people look at the style guide ([http://www.groovy-
lang.org/style-guide.html](http://www.groovy-lang.org/style-guide.html)) and
the GDK ([http://www.groovy-lang.org/groovy-dev-kit.html](http://www.groovy-
lang.org/groovy-dev-kit.html)). Pretty short reads that get you up to speed on
much of the functionality quickly. If you like what you see, keep going.

I haven't felt motivated to learn anything new since this meets my needs so
well, but if it had better library/framework support I'd give Clojure a shot.
I enjoyed Lisp, but didn't use it outside the classroom except for Emacs.
Probably learn it with SICP.

------
vorg
> something useful and valuable in job market in the future

"Useful" and "valuable in job market" might not overlap too much.

The small subset of Groovy used in Gradle build files and for quick scripts
manipulating Java class files is both useful and valuable, but it's pointless
progressing beyond that initial stage. Scala might have peaked in uptake so
may not be so valuable, but if you already know Java, it could be useful to
learn and practise its functional aspects as a halfway step towards a full
funcitonal language like Haskell which is very useful to know.

------
Eridrus
I wouldn't bother investing a lot of time into Groovy.

It's a decent language, I used it in a port of about 10k LoC of Coffeescript
Node.js code we had at the end of last year, and it's fit our use case pretty
well since it has good support for coffeescript idioms.

But it's not very different. For me that was a selling point, but it's not
super widely used nor will it teach you a lot (unless you've never worked with
the JVM, in which case you will learn about the JVM with some nicer syntax
than Java).

------
based2
[http://mvnrepository.com/open-source/jvm-
languages](http://mvnrepository.com/open-source/jvm-languages)

------
runT1ME
between the two, there's no question, Scala is the place to be. It's possible
a newer language like Ceylon settles in as the default choice for more
conservative companies and Scala remains the preferred choice for those who
want to dive deeper into the functional side.

~~~
emergentcypher
I second Scala.

Working with it for over two years and it's great!

------
tauchunfall
How about Kotlin? It fits exactly between Scala and Groovy and takes the best
of both worlds. Edit: Although it is not super valuable on the job market
right now.

------
PaulHoule
One word.

Clojure.

~~~
emergentcypher

        (One word
          (Clojure))
    

FTFY

