views:

449

answers:

8

I used to be a Java nerd back in college, but ever since then I haven't touched it. My work for the last 3-4 years has mostly been in Python and C++, and I have forgotten a lot of in's and out's of Java.

So, what is the best (and fastest) way to get back in the groove with a language? Any suggestions on small projects that make you use (and hence relearn) old languages that you know already?

A related question is, how do you guys stay in touch with technologies that you have learned but haven't had a chance to use in a long time?

+10  A: 

The best way to re-learn it is the best way to learn it: use it. Have a look at the "What's new" sections for Java 5 and 6 to see what new goodies have been added but don't feel the need to use everything.

The best bet, in my opinion, is to use the stuff you were familiar with to get "back on the horse" then gradually learn the newer stuff.

Specific projects: I don't go back to a language I haven't used unless there's an actual need, in which case the project I will be using it for will already be specified (work or personal). The perennial Euler problems are sometimes fun but are limited in the language features they get you to use. One thing you could try is to port one of your Python/C++ programs that you have developed, to Java.

paxdiablo
(+1) I was going to suggest that last part. Take a project you're very familiar with, and port it to your new language of choice.
+1  A: 

For me, the fastest way to get in touch with technologies I've not had a chance to use in a while is to get involved in an open source project where the technology in question is in use. If you're planning on getting re-familiarised with java, I would suggest you'd look at the Jython project, for example. That way you will feel safe in the python parts, while you still are going to need to work in java. Most open source projects are also quite good at adopting new technology, and even if I'm not certainthe jython guys are using the latest java, I would not hesitate to put a few bucks on that bet. Coding with others like this also gives you the oportunity to look at code written by other people, which will make it easy for you to catch on to syntactical changes (there are a few introduced with java 6), best-practises and such, which I always find really helpful. Further, support is often good in these types of projects, as people are all eager to keep moving forwards.

Best of luck on your java revitalising quest!

Banang
+1  A: 

Read advanced books on the topic. Some examples:

Effective Java (2nd Edition) - Joshua Bloch

C# in Depth: What you need to master C# 2 and 3 - Jon Skeet

These two as examples provide you with the changes introduced in the last versions of the languages which should be enough to get you back on track combined with some sort of a pet project as mentioned by Pax.

I try to read some advanced books on languages which I don't use activly at the moment too, but this depends on my motivation..

With best regards

David Klein
A: 

This is very similar to How do I best catch up with the latest developments in java?

cletus
A: 

for me..

choose a project to yourself.. and start to code it in that language.. use internet and samples..

Tolgahan Albayrak
A: 

If you are a programmer yourself, learning or re-learning a language is a very similar task. You just need to get your hands dirty and start coding something with the help of the most recent documentation.

If you are having trouble deciding what to code and if you are keen to solving complex problems that demand some planning and knowledge I suggest you to take a look into the ACM programming contest problems. They are often a challenge so don't let that take your motivation away. There are some sites where you can test your code against automated analysis. http://www.spoj.pl/ is one of them

JPCosta
A: 

On top of the suggestions provided, I suggest you use an IDE like eclipse or netbeans. They are free and will help to write, fix, compile, run and debug your program.

Peter Lawrey
A: 

I usually program a webserver or a crawler in that language to learn a language. These are good examples because they give you a feel for:

  • General string and regex libraries.
  • Multi-threading and other concurrency features in a language.
  • Network and File system support.
  • Cross platform abilities of a language.
  • A fair amount of syntax and tool support can also be evaluated by this approach.

Above all these examples only take a day or two to implement.

mansu