views:

241

answers:

6

My career has always been C and C++ programming. I have some basic Java experience. I have a lot of personal Ruby/Rails experience and lately I've been doing some Grails stuff at work as well.

I'm just curious if it's worth it to pick up Java and related technologies such as Spring, Hibernate, etc... Grails seems like it removes the need to learn these things for the most part except if you want to get into the guts of things.

For professional purposes, is it more worth it to learn Java, Spring, Hibernate, etc? Are technologies such as Grails, Rails and other frameworks taking over? Are there other Java technologies that I'm missing that would be good to pick up in order to strengthen a career?

Any comments are welcome but I would really like an unbiased point of view on this as I'm trying to move out of the C / C++ world and pick up some newer technologies that will help my career in the future.

A: 

Java is still very large, but I believe C# and the .NET framework has much more career potential.

Peter Alexander
I believe C# and the .NET framework has much more career potential. Any sights how?
Sri Kumar
This answer lacks necessary information (why? in what area of programming? etc). -1.
BobMcGee
+2  A: 

I think you should learn what interests you, within reason of course. It's always beneficial to learn a new language and its approaches to problems.

Java and C#/.NET are both good for your resume, and for the most part interchangeable in terms of the skills they present to employers and customers (if you want to freelance).

Python, Ruby, etc. are great to learn as well and will be a definite change from the C/C++ approach to things.

As far as Grails, Rails, Hibernate, etc. go they are good to learn as well. One thing that is nice about learning the core language and then the frameworks is that you have an appreciation for what the framework is providing, and what its limitations are (just like coming from C/C++ you will have an appreciation and an understanding of what garbage collection and managed memory give you and cost you at the same time).

I would suggest getting a good sampling of each (Java, Ruby, Python, C#) and work on what feels most natural as the next step. Do the same for the next language you want to learn after that.

YMMV.

GrayWizardx
+1  A: 

You're asking this on the wrong site -- StackOverflow is very Microsoft centric, and thus most answers will be something like "C# and .NET are better, don't bother!"

You may as well learn basic Java because it's becoming the standard language every programmer is taught and can read (rather than C/C++). CS programs have shifted to teaching Java over C/C++ as the first major language.

I'll probably get jumped on for this, but don't bother learning all the frameworks unless you plan to work in the Java web development ecology.

BobMcGee
Couldnt be further form the truth. Sensible questions on Java, C, Ubutu, Google Apps, Python even COBOL receive polite and informative answers.
James Anderson
I'm not saying the site *lacks any* Java coders, just that if you look at tags, C# has twice as many questions as Java, and ASP.NET and .NET represent a higher number than Java. The site has a distinctly pro-Microsoft slant because it's coded with Microsoft technologies, and more heavily populated by C# programers. It's not reflective of the programming community as a whole.
BobMcGee
A: 

Learn the things interest you the most and do not get swayed away by the buzzwords (Like Java, Hibernate, Spring etc). If your concern is to stay employable then I suggest you to learn the fundamentals of software design and programming. Technology/language/framework will change frequently, so keep learning. Its good to see that you want to learn a language, but do not decide a language just because its hot.

Sundar
A: 

Keep up with whatever you like. As for career potential, there's always a need for pretty much everything. As long as people are coding in outdated languages there will be companies afraid of change who are happy to hire them.

For me, I try to work strictly in ruby and recommend leaving java behind as long as you're asking. I know there's a lot of debate around this but ruby seems superior in many ways (duck typing, brevity, etc.).

Cory Schires
+2  A: 

It depends on what you want to do. If you're mainly learning new languages and frameworks for pleasure I would stick with Groovy and Grails, as well as what ever else interests you. If you want to move into working on existing Java web apps for a job I would learn the guts of Spring and Hibernate so you can understand legacy code. I personally don't believe learning Spring and Hibernate is worth it unless you have a good job related reason to, grails is much easier to use. You may want to take a look at Spring Roo to learn Spring and JPA. Although it's not ready for production you can use it to generate basic CRUD applications then look at how those applications work with out the several layors of abstraction Grails adds.

Jared