PDA

View Full Version : Whats your favorite...Java book?




chrono1081
Apr 10, 2012, 03:26 PM
Hi guys,

I have a chance to land a Java developer position (I hope I get it since it'll be my first programming job). I don't know Java, which I made completely clear to the company but since they liked the fact that I know a lot of C++, Objective-C, C, and have experience with a bunch of different API's they decided to give me a shot.

I'm trying to prepare incase I do get the job so I came here to ask...what is your favorite Java book? I want to go pick one up soon.



Angelo95210
Apr 10, 2012, 03:29 PM
Not specifically for Java, but for programming in general I like the O'Reilly books.

Mac_Max
Apr 10, 2012, 04:06 PM
I like Bruce Eckel's work. He has a free ebook version of his 3rd edition of Thinking in Java. http://www.mindviewinc.com/Books/downloads.html

He has a 4th edition which is available for purchase and covered Java 5 (the brand newest version is 1.7 and I don't think people have really moved to it from 1.6 en mass yet).

That's the best I can think of as a language reference. Java is fairly mature so you can certainly learn from slightly older material if you prefer not to shell out $30-$50 for a book.

Also, do you know what sort of technology stack will you be working with? This is where concepts and technologies change far more often. Are you going to be doing Java SE (Standard Edition - Desktop) or Java EE (Enterprise Edition - Server side (web))? Swing, JavaFX, or other?

These aren't likely super critical questions to know the answers to (unless your employer made it clear they expect you to know it coming in) but it'll affect what other tutorials you should work through.

Aside from that, the only other morsel of wisdom I have for you is that you should get Java's reference/value passing paradigm correct from the start. This is something I find that most Java books totally screw up by trying to be waaaay too complicated/technically correct from the start. I like the simple example in this StackOverflow thread:

http://stackoverflow.com/questions/40480/is-java-pass-by-reference

This will likely help you in an interview or programming test (as well as when actually working with Java).

willieva
Apr 10, 2012, 04:25 PM
Another vote for Thinking in Java. Java does things differently than C++, and it helps to think differently when using Java. This book definitely helps with that.

And learn some design patterns while you're at it. The java libraries will make more sense if you understand the patterns behind them. Headfirst Design Patterns is a good place to start.

Mac_Max
Apr 10, 2012, 04:32 PM
Another vote for Thinking in Java. Java does things differently than C++, and it helps to think differently when using Java. This book definitely helps with that.

And learn some design patterns while you're at it. The java libraries will make more sense if you understand the patterns behind them. Headfirst Design Patterns is a good place to start.

Very true. You can also get by with the Gang Of Four's original as well. On the other hand, when reading anything about patterns make sure your signal-noise dial is set properly because there are a lot of Architecture (http://www.joelonsoftware.com/articles/fog0000000018.html) Astronauts (http://www.codinghorror.com/blog/2004/12/it-came-from-planet-architecture.html) out there.

chrono1081
Apr 10, 2012, 04:39 PM
Not specifically for Java, but for programming in general I like the O'Reilly books.

I've heard these are good. I'm hoping the Barnes and Noble near me has them so I can thumb through them. (Our Barnes and Noble doesn't have much of a computer section :/ )

I like Bruce Eckel's work. He has a free ebook version of his 3rd edition of Thinking in Java. http://www.mindviewinc.com/Books/downloads.html


Thanks! I LOVE Bruce Eckel! I have his "Thinking in C++ Volumes 1 and 2" and they are fantastic.


Also, do you know what sort of technology stack will you be working with? This is where concepts and technologies change far more often. Are you going to be doing Java SE (Standard Edition - Desktop) or Java EE (Enterprise Edition - Server side (web))? Swing, JavaFX, or other?

Sadly I do not :/ They did mention that it could interface with web elements depending on what team I got put on. I passed the resume test, phone interview, and I had a face to face interview, now I'm nervously awaiting the outcome of that interview *bites nails*

During it they did say they had a list of Java questions incase I knew Java, I let them know I didn't but I would gladly attempt to answer their Java questions. I got all of them correct accept for one. The one I got wrong, which was Java specific and asked what everything inherits from in Java. I didn't know it but I gave a theoretical example from another language which they seemed to like.


Aside from that, the only other morsel of wisdom I have for you is that you should get Java's reference/value passing paradigm correct from the start. This is something I find that most Java books totally screw up by trying to be waaaay too complicated/technically correct from the start. I like the simple example in this StackOverflow thread:

http://stackoverflow.com/questions/40480/is-java-pass-by-reference

This will likely help you in an interview or programming test (as well as when actually working with Java).

Thanks! I'll give that thread a look.

Another vote for Thinking in Java. Java does things differently than C++, and it helps to think differently when using Java. This book definitely helps with that.

And learn some design patterns while you're at it. The java libraries will make more sense if you understand the patterns behind them. Headfirst Design Patterns is a good place to start.

I saw the Headfirst Design Patterns book and it looked pretty good. I'll have to give it a whirl.

Thanks guys for the advice (and if anyone has anymore advice please feel free to add!). I plan on grabbing a few books since thats how I roll with programming languages :P

Angelo95210
Apr 10, 2012, 05:22 PM
I'm hoping the Barnes and Noble near me has them so I can thumb through them. (Our Barnes and Noble doesn't have much of a computer section :/ )

You can find them on Amazon. And also on torrents if you want to review them first. But buy them after... !!

balamw
Apr 10, 2012, 05:36 PM
You can find them on Amazon. And also on torrents if you want to review them first. But buy them after... !!

Why torrent when you can get a trial account or subscribe to Safari Books Online for less than the price of a single book. Many books from major publishers are there, including OReiily.

http://www.safaribooksonline.com/browse-library/Java

B

Angelo95210
Apr 11, 2012, 01:25 AM
Why torrent when you can get a trial account or subscribe to Safari Books Online for less than the price of a single book. Many books from major publishers are there, including OReiily.

http://www.safaribooksonline.com/browse-library/Java

B

Wow thanks I didn't know this. Thanks!

mluisbrown
Apr 11, 2012, 06:48 AM
I have a chance to land a Java developer position (I hope I get it since it'll be my first programming job). I don't know Java, which I made completely clear to the company but since they liked the fact that I know a lot of C++, Objective-C, C, and have experience with a bunch of different API's they decided to give me a shot.
Before I start, let me say I've worked as a Java developer for the last 12 years, having previously worked with C and C++. However, I'm currently working in my spare time as an iOS developer with Objective-C. I don't have a book recommendation for you, but I do have a question, or at least something for you to think about: as someone who already has Objective-C experience (one of the currently hottest skills people are looking for) why do you want to be a Java developer?

Let me be clear, Java is currently by far the most used programming language, and it's here to stay. Java developers will be in demand for the foreseeable future. Java is also (IMHO) a very nice and programmer friendly language to develop in. The Eclipse IDE (which is almost certainly what you'll use) is awesome. You can use a Mac for Java development (with Eclipse) even if the rest of the team uses Windows or Linux, and there's no problem, your code will run just the same as everyone else's on the server. However, Java is becoming the new COBOL. It's the language used in back end application servers for large enterprise projects. It's no longer 'sexy', and it's not 'the future'.

The future is mobile development, especially for iOS. Yes, Android development is done in Java, but Android development is not where the money is.

It all depends of course what you want to do, and obviously if you're keen to get your first programming job, you have fewer options. It's great that they're willing to overlook that you have no Java experience, because you'll pick it up quickly. Just don't forget your Objective-C :)

I guess what I'm trying to say is: "If you've already got experience making Ferraris and Porsches, why do you want to get a job making minivans?". Again, I make a living "making minivans", but I'm desperate to break out and start "making Ferraris" :D

mydogisbox
Apr 11, 2012, 09:46 AM
I saw the Headfirst Design Patterns book and it looked pretty good. I'll have to give it a whirl.

I would like to put in a note of warning here about the Headfirst Design Patterns book. The book has a lot of extremely well explained and illustrated concepts and I would certainly recommend it, however, the book feels like it was written for middle schoolers (at least IMO). Don't be put off by the target audience, it has a lot of good material.

Mac_Max
Apr 11, 2012, 10:26 AM
Before I start, let me say I've worked as a Java developer for the last 12 years, having previously worked with C and C++. However, I'm currently working in my spare time as an iOS developer with Objective-C. I don't have a book recommendation for you, but I do have a question,

... snip ...

I guess what I'm trying to say is: "If you've already got experience making Ferraris and Porsches, why do you want to get a job making minivans?". Again, I make a living "making minivans", but I'm desperate to break out and start "making Ferraris" :D

I suppose I can't really speak for him but I'd imagine he's happy to break out of his current industry and into software development.

mluisbrown
Apr 11, 2012, 10:31 AM
I suppose I can't really speak for him but I'd imagine he's happy to break out of his current industry and into software development.That was my guess too, I wonder what his current industry is...

balamw
Apr 11, 2012, 11:08 AM
That was my guess too, I wonder what his current industry is...

From other threads the OP is still pretty fresh out of school.

http://forums.macrumors.com/showthread.php?t=1348190
http://forums.macrumors.com/showthread.php?t=1316901

B

Mac_Max
Apr 11, 2012, 12:18 PM
Nice, congrats to the OP!

There are far worse options than Java jobs (and this is coming from someone who doesn't like working with Java). Say, Winform VB6 development for a mortgage company IT department :D (and yes these jobs still exist, and thank God I've never had one haha).

chrono1081
Apr 11, 2012, 01:05 PM
Before I start, let me say I've worked as a Java developer for the last 12 years, having previously worked with C and C++. However, I'm currently working in my spare time as an iOS developer with Objective-C. I don't have a book recommendation for you, but I do have a question, or at least something for you to think about: as someone who already has Objective-C experience (one of the currently hottest skills people are looking for) why do you want to be a Java developer?

Let me be clear, Java is currently by far the most used programming language, and it's here to stay. Java developers will be in demand for the foreseeable future. Java is also (IMHO) a very nice and programmer friendly language to develop in. The Eclipse IDE (which is almost certainly what you'll use) is awesome. You can use a Mac for Java development (with Eclipse) even if the rest of the team uses Windows or Linux, and there's no problem, your code will run just the same as everyone else's on the server. However, Java is becoming the new COBOL. It's the language used in back end application servers for large enterprise projects. It's no longer 'sexy', and it's not 'the future'.

The future is mobile development, especially for iOS. Yes, Android development is done in Java, but Android development is not where the money is.

It all depends of course what you want to do, and obviously if you're keen to get your first programming job, you have fewer options. It's great that they're willing to overlook that you have no Java experience, because you'll pick it up quickly. Just don't forget your Objective-C :)

I guess what I'm trying to say is: "If you've already got experience making Ferraris and Porsches, why do you want to get a job making minivans?". Again, I make a living "making minivans", but I'm desperate to break out and start "making Ferraris" :D

This will be my first programming job, and although I'd like to program with Objective-C I'm having a hard time finding places where I live that use it.

The place I am applying to seems like a great start to land my first programming job. Instead of throwing me in sink or swim style they'll train me how to program for their systems and then if I pass the training I'll move to one of the programming teams. (I would be utterly ashamed of myself if I didn't pass the training!)

From other threads the OP is still pretty fresh out of school.

http://forums.macrumors.com/showthread.php?t=1348190
http://forums.macrumors.com/showthread.php?t=1316901

B

Yep, fresh out of school at the ripe age of 30 :P Better late than never I suppose ;)

I've worked in IT for the past 10 years supporting Windows desktops and servers and various other things and I'm trying for a career change. (Don't get me wrong I like regular IT stuff, I just want to try something new).

----------

Nice, congrats to the OP!

There are far worse options than Java jobs (and this is coming from someone who doesn't like working with Java). Say, Winform VB6 development for a mortgage company IT department :D (and yes these jobs still exist, and thank God I've never had one haha).

Thanks!

And I totally forgot about VB6. Its one of the reasons I left my first college. We had it for a year and I was so mad because I knew even back then no one used it.

The second reason was because after the first year they had a big meeting with all the students explaining they lied about their accreditation :eek:

My second school was well thought of (although honestly when I went the computer science program sucked) but I had to leave it and switch to a school with online options since I took an IT job overseas (it was in a war zone so a local campus wasn't an option). Sadly the online school I picked, although fully accredited with actual campuses is not well thought of so I'm trying to bury it with experience by landing any programming job I can ;)

iShater
Apr 13, 2012, 06:39 PM
I am mentoring a new guy at the office. The two books i told him to check out for core java are Head First Java and Learning Java. These arw a good start especially if you already know how to program in another OO language.

Since most companies do enterprise java, your next should be to learn more aboutJava Enterprise Edition. Oracle has good tutorial PDFs an dthere quite a few books out there. However, that space is huge.

Today most of the work is done using frameworks so make sure to build a good foundation. I even recommend studying SCJP exam books after you finish the first two i listed.

Hope this help.