Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am Java developer with a C/C++ background. I am on the look out for openings and I have seen that there are demands about languages that not only I don't know, but I am not sure what they actually serve for.

Example: Ruby on Rails, Groovy, Scala, Python (this is scripting language-ok) etc.

So I am trying to figure out which one to look into to in order to:

  1. Be able to use that in my skills when looking openings eventually
  2. That is actually useful to have in specific problem domains
  3. That is easy to go from my background (i.e. easy if you know Java if that is possible)

This is not an argumentative question and I don't intent it to be such e.g. what is better Ruby etc but exactly what I ask for.

What language would be easy for someone like me to catch up so that I can address other job openings that interest me and that additionally it could come-in handy occasionally during my regular Java work?

share|improve this question
2  
We can say i'm in the same shoes. I'm about to get my hands on this book: amazon.com/The-Well-Grounded-Java-Developer-programming/dp/…;. This is not a spam. This covers languages which are already working on top of JVM. –  dave00 Aug 18 '12 at 14:16
    
The URL is not working –  user10326 Aug 18 '12 at 14:22
    
I second the book reference. (Disclosure: I tech proofed it.) It covers Groovy and Scala from your list amongst other things.). URL: amazon.com/The-Well-Grounded-Java-Developer-programming/dp/… –  Jeanne Boyarsky Aug 18 '12 at 14:51
2  
this sounds like "what language you should learn next" - kind of questions explicitly discouraged in FAQ –  gnat Aug 18 '12 at 18:06
    
@gnat:Not really because I am focused on something specific –  user10326 Aug 18 '12 at 18:20
add comment

closed as off topic by Walter, gnat, jmort253, jk., Doc Brown Aug 19 '12 at 9:43

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer

up vote 5 down vote accepted

Likely the most practical languages for you to learn would be Ruby and Python. These languages will be fulfilling in all three points you mentioned above. (They are in high demand, they will challenge you by adding more conceptual tools to your toolbelt, and they will be smooth transition. (Ruby probably wins #1 - though depends on the job, they tie on #2, and Python may have a slight edge at #3).

Ruby is a bit more popular than Python in terms of web application development, but Python will remain very useful as a utility language (scripting, etc). Both languages also have large (full-stack), well established frameworks (Rails & Django). Although both languages may challenge your programming paradigms by adding additional concepts and syntax for functional programming, they are still very well suited for classical OOP. Obviously Java has a heavy classical design. The transition from classical to functional can be rather shocking, so these choices may be helpful to ease that learning curve.

Conversely, Clojure has developed an interesting following because of its very functional (lisp-derivative) nature. And although it does leverage the JVM as its runtime, it is pretty far from Java development. While interesting, this language generally fails to meet most of your points above.

You mentioned Groovy, but I would avoid that because there doesn't seem to be as much retaining community (as other languages mentioned). In my research, it seemed to be just an experiment of porting Ruby-esc syntax back into Java. (Similarly Grails attempts to be the Rails of Groovy). It will maintain a lot of familiarity for you, but will likely fail miserably at #1 & #2.

I will skip Scala (which you also mentioned) as I have not done enough to fairly judge it. I will say that I did evaluate learning Play which is a Java/Scala framework, although that really doesn't help answer your question ;)

Lastly I want to discuss Node.js as an option. Besides being a personal favorite, there are a few reasons it is worth bringing up. Node.js will derail your classical patterns, so it will likely be more difficult to transition into writing effective code initially. (Despite JavaScript being a syntactical derivative of Java, proper coding patterns are nothing alike). Also, Node.js is very new, so the demand for Node jobs is less than Ruby or Python (at the moment). However, it may be a huge win at #2 (and worth the extra time for the other two points). JavaScript will likely be the only browser language for a while, so it may continue to be one of the most important languages despite its warts. Knowing JavaScript will definitely make you a more valuable and versatile developer.

I don't necessarily want to pressure your decision by suggesting what works for me will work for you, but I was recently leading a similar transition while starting a new web application at work. (We have an enterprise Java app and wanted to evaluate other languages & frameworks). We eventually chose Ruby+Rails.

share|improve this answer
    
So you are actually recomending Javascript.Did not think about this before –  user10326 Aug 18 '12 at 17:03
    
Again... I decided that Ruby+Rails was more rounded for our team, but I do recommend that you consider it in your evaluation. –  Jacob Swartwood Aug 18 '12 at 17:46
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.