After 2 years of coding exclusively in PHP, I'm making the transition to Java and would like your suggestions on what are the best resources for learning the language.<p>If you are a Java dev, I would like to hear your story. How did you learn the language? What helped you the most? Any advice you can provide is appreciated.
If you already have experience programming (which you do) try the following: First read the wikipedia page on the language. Download a medium-sized open source project, start at main() and try to understand what it does. Then, google for features/syntax you don't understand; read comments; have the api docs open; google for languages gotchas; google for techniques you don't understand. Once you do this enough to be comfortable with the language (Shouldn't take more than a few days), try to write something on your own. Either recreate what you already wrote or try to create something just outside what you feel is within your means.<p>I tend to learn languages a lot faster and in a much more thorough fashion when I approach it this way.<p>edit: this has nothing to do with java per se, but I find it is valuable to me when trying to pick up a new language.
Years ago, I used Bruce Eckel's <i>Thinking in Java</i>:<p><a href="http://mindview.net/Books/TIJ4" rel="nofollow">http://mindview.net/Books/TIJ4</a><p>I liked it a lot at the time. No idea if that's the best thing out there now. I haven't seen the latest edition, as I haven't had to touch Java in several years.
One such ordering is as follow:<p>1) Head First Java (Edition that covers Java 5)
2) Core Java (optional, latest edition)
3) The Java Programming Language 4th Ed _AND_ Effective Java 2nd Ed<p>The last resources are somewhat related. Some of the stuffs in TJPL can make EJ clearer and vice versa.
I've not done much Java for a while, but my most useful resources have been <i>The Java Programming Language</i> and <i>The Java Developer's Almanac</i> (especially the code samples, which I believe are available somewhere on java.sun.com).<p><i>Effective Java</i> is also a great read for becoming a "better" Java programmer, but may or may not be useful to you right off the bat.
<a href="http://java.sun.com/j2se/1.5.0/docs/api/" rel="nofollow">http://java.sun.com/j2se/1.5.0/docs/api/</a><p>This got me through my college Java courses.
Try searching any question like this with "X for Y programmers". Example:<p><a href="http://www.google.com/search?q=%22java+for+php%22+programmers" rel="nofollow">http://www.google.com/search?q=%22java+for+php%22+programmer...</a><p>These results aren't as good as some, such as "Java for Lisp programmers". It's a useful heuristic, anyway.
I'm kinda doing the same thing but from Python. I really liked Java Precisely <a href="http://www.itu.dk/~sestoft/javaprecisely/" rel="nofollow">http://www.itu.dk/~sestoft/javaprecisely/</a><p>It doesn't try to teach you programming, it just cuts to this "this is what this is in Java" ... high signal/noise.
Sun's own Java Trails online tutorials are very good. They cover a lot of ground with minimal blabbering (unlike books whose authors are paid by page count).<p><a href="http://java.sun.com/docs/books/tutorial/" rel="nofollow">http://java.sun.com/docs/books/tutorial/</a>
On a different note why? no, really... apart from enterprise development why would you want the headache...<p>(by the way, ive done java since 98 up until couple of years ago when i switched to python...)
Start with Hello World and try stuff: <a href="http://www.javacoffeebreak.com/java101/java101.html" rel="nofollow">http://www.javacoffeebreak.com/java101/java101.html</a>
I learned a lot from the java tutorial<p><a href="http://java.sun.com/docs/books/tutorial/" rel="nofollow">http://java.sun.com/docs/books/tutorial/</a>