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'm a Delphi developer with aprox 5 years of experience. But now, Delphi seems to be dead, and the job opportunities are smaller. So, I want to begin learn Java, because I like it, and the job market is bigger(and competition also...).

Until now I've searched for opinions about the best Java books and I've founded several books(Thinking in Java by Bruce Eckel,"Java 6 The Complete Reference " , complete JAVA for SCJP, etc - you can provide more examples if you want).

Now, what I'm asking you: when you start to learn a new programming language (in this case Java) which are the steps you're following?

How do manage the learning curve? (how you allocate time for different chapters and technologies)

share|improve this question

closed as off-topic by Doval, GlenH7, World Engineer Mar 13 at 21:33

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Doval, GlenH7, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

2  
Things were kinda rough with Delphi for a few years after Borland dropped the ball, but it's by no means dead, and it's been making quite a comeback lately. Don't give up on it so easily. –  Mason Wheeler Mar 7 '11 at 17:06

4 Answers 4

up vote 7 down vote accepted

Keep an open mind.

First of all, remembering that you're learning a new programming language. Just like Delphi, Java (and every programming language) comes with an entire set of conventions. One of the worst things you could do is adapt something from language A and basically write language A in language B.

Secondly, I've personally always found step-by-step learning from a book to be a horribly mundane task. I rely on books as references, but I'd much rather jump in the deep end and battle it out till I understand it. In this case, I'd think of a small project that I thought was awesome and then do whatever is needed to implement it. Then I'd go back and locate everything I could possibly improve on.

After doing that a few times, I would bank on knowing the basics of Java. From there, I'd seek someone more proficient in Java and ask for further tips, and possibly get my hands on more Java projects (at work, open source, etc.) if time permitted.

share|improve this answer
    
the first paragraph : if only they said that in the course about scheme, wait they did and it didn't help –  Display Name Mar 7 '11 at 9:38

Another former Delphi developer here.

First, let me remind everyone, that we are working with full enviroments not just programming languages.

Therefore, you want to switch to another programming framework / enviroment, not just another programming language.

I migrated to C#, instead. I preferably wanted to try Java first, but in my country, Java is NOT as common as .NET for learning or available jobs.

I have worked a little with Java, and it seems to me that the learning curve is similar for .NET, and goes something like:

  • Learn to program console mode, in order to understand language syntax (and differences with other languages), with text editor plus command line compiler.

  • After learning basic syntax with text editor plus command line compiler, try do the same with an IDE. (preferably Eclipse), without using GUI controls, yet.

  • us the IDE for Desktop programming without Databases, check the common libraries or frameworks for that, include G.U.I. libraries ("SWT", "swing", whatever).

  • Use the IDE for Desktop programming with Databases (standard or common libraries).

  • Use the IDE for Web programming.

Just my 2 cents.

share|improve this answer
    
but in my country, Java is NOT as common as .NET for learning or available jobs - what country is that, out of curiosity? (I'm aware that your answer is 4 years old already, but I assume things haven't taken a 180-degree turn since) –  Konrad Morawski Mar 13 at 19:05
    
@Konrad Morawski I rather keep for myself. Anyway, ".Net" is more common around here, even if Java developers say the opposite, but, there is also Java jobs. But, my answer to the question, still applies, for both programming enviroments, even for others. Cheers. –  umlcat Mar 18 at 17:48

Here are some ideas that spring to mind when making a transition from langauge A to language B:

(Pet Projects) - Have you got any pet projects you've done in Delphi? Rewrite them in Java and you'll learn the various APIs and language features in Java to make your projects come together. For example, Delphi has the concept of properties, but java is still behind with it's setX and getX JavaBeans convention, so you'll pick up on that. I'd also pay attention to the inheritence model used in Java, Delphi has the concept of private and strict private, which Java doesn't; I never really was fond of that feature...

I graduated from University as a Java developer and given the state of the market there was nothing but Delphi (this was in 2006) for my skill level, so I wrote a multiplayer Tetris game. This taught me the UI components and the network libraries. I then looked at some demo code in Delphi and refactored it to make it look more like Delphi code, taking advantage of it's features; properties for example.

(Open Source) - Pay source forge a visit. Look for some open source projects that are of interest to you, study the code and start contributing bug fixes and new features. This is a good winner for your resume and gives you something to talk about in interviews :)

I've went from Java to Delphi to Smalltalk and back to Java. In the beginning, I thought it was killing my resume, but if nothing else, it's toughened me up, every language teaches you something.

As a final piece of advice, I'd invest in the following books:

The Pragmatic Programmer

The Passionate Programmer

share|improve this answer

I used both Delphi and Java in my desktop projects. If you are planning to move to another platform for you desktop programming, I would strongly suggest .Net, not Java. Java is very good for web development (look at GWT!), but sucks on desktop. BTW, C# is very similar to Java.

share|improve this answer
2  
I'll strongly disagree with the Java not being suitable for desktop apps. Both .Net and Java are very good for desktop apps, and are very similar to program in (assuming C# on the .Net side). Pick whichever one best suits your environment (MS only shop = .Net, Mixed platform shop = Java). –  Brian Knoblauch Mar 7 '11 at 14:04
    
I very much so agree with Dmitry on this. To add to this, enterprise level development is also way easier on .NET. Java has too many different moving parts done by different groups that all need to be wired together differently. It is also very complex to code. My company was a delphi shop for 10+ years. 2 years ago we switched to Java. After several months heading down that road (and in house java training and java books for the whole development team) we switched to .NET. It was the best decision my IT management has probably ever made. –  Vaccano Mar 7 '11 at 16:34
2  
-1 for the "sucks on desktop" flame. It's not hard to build great desktop apps in Java, people are writing them all the time. –  mikera May 19 '11 at 15:57

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