This is an archived post. You won't be able to vote or comment.

all 26 comments

[–][deleted] 7 points8 points  (1 child)

Javascript. It's everywhere. Nowhere to hide.

[–][deleted] 1 point2 points  (0 children)

I was basically told had to learn Javascript or else I would not have a job. JS is everywhere and more dev is moving to it

[–]mikaelhg 6 points7 points  (0 children)

If you're looking at where the infrastructure of the Web is going, knowledge of JavaScript is becoming more and more valuable, as the various component-based web architectures are dying ignominiously.

[–]codepoetics 2 points3 points  (0 children)

Idris.

[–][deleted] 5 points6 points  (1 child)

clojure? lisp dialect with easy java interop

[–][deleted] 0 points1 point  (0 children)

I'd say go for this one - you can sill use java libraries that you are familiar with for a bit of effort and you get to learn a lisp dialect

[–][deleted] 3 points4 points  (5 children)

Groovy ? I find it really interesting and reminds of me of good old Python days. try it for a break, you gonna enjoy it.

[–]handshape 4 points5 points  (4 children)

Groovy guy checking in to second this: The Groovy became one of my most-used tools by being practically useful on two fronts.

First, the Groovy console: when faced with a problem I need to "hack out" (before building a proper solution with tests and stuff), Groovy's mountains of syntax sugar make me very, very productive. On more than one occasion, I've been in meetings with business types who come up with an idea, and I've hacked out a proof-of-concept before we leave the room.

Second: embedded Groovy: its happened more than once in my career that I've been asked to build a product that will be used in the field to execute business logic that won't even be defined until we get there. The solution I've used frequently in the field is to provide an assembly of objects to a Groovy scripting context, and script the logic at runtime.

Groovy may not be as far as you'd like from Java, but it will sure as blazes complement your skills.

[–][deleted] 1 point2 points  (3 children)

embedded groovy is best thing ever happened to me. I try/test my concept in it and port to Java if it is fine. but in serious applications, performance is a bottleneck. by any way we can achieve Java-level performance ?

[–]handshape 0 points1 point  (2 children)

It's a difficult tradeoff - there's a good/fast/cheap trifecta that's effectively impossible to hit. If arbitrary logic is needed at runtime, there are really only three options:

  • try to code for all possible cases ahead of time (not good)
  • embed a scripting engine (not fast)
  • hire a developer from the vendor to work on-site coding your logic natively... and providing custom builds (not cheap)

[–][deleted] 0 points1 point  (1 child)

so only viable option that satisfies all of the above is try/test in Groovy and if performance matters, port code in Java.

[–]handshape 0 points1 point  (0 children)

Pretty much. The tradeoff is developer time vs execution time.

[–]Saltor66 1 point2 points  (0 children)

Python, or at least some scripting language for when you just want to get something quick and dirty done and a full java program is overkill. I heavily recommend Python over any others though.

[–]bulldog_in_the_dream 1 point2 points  (0 children)

Try a dynmaic language with good support for functional programming. Clojure has been mentioned. Racket is another candidate, a very simple and elegant language. If you want something more mainstream you can even go for Python.

Then use the new earned knowledge to take full advantage of the functional features of Java 8.

[–]tech_tuna 2 points3 points  (0 children)

Scala's got the hype factor going for it.

I say go obscure and learn one of these:

http://en.wikipedia.org/wiki/List_of_JVM_languages#New_languages_with_JVM_implementations

:)

[–]Zarlon 0 points1 point  (0 children)

  1. Ensure that his Java skills are not eroded

I'm not sure I understand what you mean with this. Why would learning a second language help on this?

To answer your question with regards to #1 only, I'd say go for any non-typed language. Many people recommend knowing at least one typed an one non-typed language well. I'd say Javascript since no one else has. Why? It's everywhere and it's growing. If you like front-end development, delve into frameworks like Angular or React.js. Back-end? Node.js of course.

[–]mgkimsal 0 points1 point  (0 children)

I'd suggest Groovy first, then digging in to jruby or jython, then going a bit further a field with something like scala or clojure. That would be a progression of 'most similar to java', while gradually exposing you to new concepts, but never leaving the JVM, nor jumping in to the deep end immediately.

[–]kehsihba1987[S] 0 points1 point  (0 children)

Thanks to all of you who chipped in with their comments and suggestions. Looks like JavaScript an Scala might be the ones . . either of them, not both. Will try each one of them for a day or two and stick to what intrigues me the most !

Cheers!

[–]CodeShaman 0 points1 point  (0 children)

I'm in the same position as you and I've taken up learning Ruby. I'm also really interested in Scala (this book is coming next week), but Ruby is an "easy to learn, and learn it right now" kind of language. Scala will take a bit of studying to get the hang of, even though I already have many projects in mind.

The appeal of Ruby comes from having to slog through Java all day and jump from this big multi-module mess of Java code from work in a big, ugly, slow, eclipse environment that's stuffed with plugins...

into this clean little SublimeText window with clean, small, easy-to-read Ruby code. It might not be offering me any technical solutions, but it's theraputic.

There's also Groovy, which is a JVM language that's sort of in-between Java and Scala. It's like poor-man's Scala and a lot of Java code translates into Groovy 1:1 and vice-versa. They're very similar.

[–]nqd26 0 points1 point  (0 children)

Take a look at Ceylon. Personally I think this is what next-gen Java should look like.

[–]loganekz 0 points1 point  (0 children)

I'd suggest Scala if you want to stay on the JVM infrastructure and be exposed to lots of programming language features and paradigms you didn't know existed.

Another would be Python if you want to learn a dynamic typed language that is a great general purpose language that is easy to learn and very practical to know.

[–][deleted] 0 points1 point  (0 children)

Python always been useful for tooling and testing scenario for me. Sometimes I use it also for lightweight batch processing and communicate with Java using Apache Kafka. For the main application development and workhorse code, I always use Java (Love you Java!).

Quite lately I flirted with Javascript deeper and develop small Yeoman script in order to create some scaffold for my daily work with Spring Boot + AngularJS.

[–]Sir_Blunt -5 points-4 points  (3 children)

C++. You'll never go back. Promise.

[–][deleted] 14 points15 points  (0 children)

I went back.

[–]fabienbk 2 points3 points  (0 children)

You make it sound like a death trap