Reddit mentions: The best java programming books

We found 210 Reddit comments discussing the best java programming books. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 53 products and ranked them based on the amount of positive reactions they received. Here are the top 20.

1. Effective Java

Effective Java
Sentiment score: 15
Number of mentions: 33
▼ Read Reddit mentions

10. Java Performance

Java Performance
Sentiment score: 2
Number of mentions: 5
▼ Read Reddit mentions

12. Absolute Java (6th Edition)

Absolute Java (6th Edition)
Sentiment score: 1
Number of mentions: 2
▼ Read Reddit mentions

13. Core Java for the Impatient

Core Java for the Impatient
Sentiment score: 1
Number of mentions: 2
▼ Read Reddit mentions

14. Python for Everyone

Python for Everyone
Sentiment score: 1
Number of mentions: 2
▼ Read Reddit mentions

16. Effective Java

Effective Java
Sentiment score: 1
Number of mentions: 1
▼ Read Reddit mentions

20. Java for Programmers

Java for Programmers
Sentiment score: 1
Number of mentions: 1
▼ Read Reddit mentions

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Top Reddit comments about Java Programming:

u/ryc8889 · 1 pointr/java

I would also advocate Joshua Bloch effective Java

He does a very good job of breaking down different Java tips into different chapters and each chapter has a set of items. He also goes one step further and instead of just instructing you to do one thing blindly he goes over the other options possible and why they are not optimal

Also as an added bonus, Amazon says there's a third edition being released in october

Effective Java (3rd Edition)

Rob Martin's clean code is another book I would recommend but it isn't specifically for any one type of project but it gives nice examples of how to cleanly structure your code(also has a nice set of "smells and heuristics" which you can use as a pocket reference) but given your past experience this book can probably be more of a skim.

Other than that I would agree with what other people are saying with learning a framework. I like spring boot and there's plenty of example projects on GitHub that uses it and spring's own documentation is also pretty good.

For concurrency I would recommend Brian goetz Java concurrency in practice.

If you want a refresher for data structures and algorithms and just some examples of it in java I recommend Robert Lafore's data structures and algorithms in Java but if you're more familiar with math/algorithms and want to do a deeper dive then the CLRS introduction to algorithms is the holy Bible.

Edit: one other thing that I have found extremely useful is online developer websites

My top three are:
Dzone - has fantastic refcardz which are like cheat sheets for different frameworks, technologies and even general principles as well as articles for general programming as well as specific topics (cloud, Db, iot, etc)

Tip - subscrbe to the dzone newsletter. They send you emails that are collections of 10 or so articles and I usually just look through them to see if there's anything interesting or relevant to me

Infoq - similar to dzone also has a great collection of articles and presentation videos

Oreilly - not really a website I know but if you look at their free ebooks there's a good collection of them that will help you get started depending on what topics you're looking at

Bonus - YouTube. There's just so many tutorials and videos starting from beginner levels all the way to advanced topics like scaling cloud architectures for google-like loads, microservices, deployment.

I don't think anything beats doing a personal project though. If anything you can fork a starter spring boot project(which generally revolve around a basic concept like an online book store) and re-write it to be about a concept you're interested in.

Also reactive extensions seem to be catching a lot of buzz these days. I don't have any personal experience working with them but could also be another interesting topic to look into since I think java is actually adding support for reactive streams in java 9

u/TehLittleOne · 9 pointsr/learnprogramming

My suggestion is always to start with Python. It's a very high level language and it's very easy to learn. In fact, Python recently became the most popular language to teach beginners. I know you wanted to learn Java, but there are several things about it that make it not so great for beginners, as well as several things about Python that make it good for beginners (ask why if you're interested, but it may be a bit technical). As a programmer, you will likely learn a dozen or more languages (I've learned over a dozen in school), so saving Java for a bit later isn't really an issue. You'll find in programming that a lot of the important things apply to most languages, so learning these allow you to apply them to new languages quite easily. My university now uses this book in the first year computer science courses.

Get yourself situated with a free GitHub account. GitHub is my favourite version control. If you have a student email you can get a free private repository (so others can't see your stuff). If you don't have a student email to use to get one, you can still make a free account, but it will be public. What that means is that anyone who navigates to your account can see all your code. Since you're just starting out, it shouldn't matter if people browse your code, there's not much to see since it's just you going through the basics. GitHub has a tutorial for new users and also has a user-friendly client that makes it all really simple. You can save the more complex stuff for later until you're comfortable.

Once you've gone through Python and learned a bit, it's time to get into some of the language-independent things. Introduction to Algorithms is an amazing textbook. The authors are some of the most well respected people in the field and I've used it in school in more than one course. You can go through this at any time. I recommend you programming some of the things (they provide some code as well), and perhaps trying this stuff in Java might be a good segway from Python to Java.

u/Crippled_shadow · 1 pointr/AskProgramming

> What programming languages or technologies to learn to get the best paying career possible

There's no good answer to this question. Technologies changes every few years. Python pays well now but in a few years the Shakespeare Programming Language could be the go-to language /s. If you want the best paying career possible learn the fundamentals. They are almost universal to every programming language and is the reason why good programmers can pick up languages quickly.

That being said, here's a copypasta when I helped someone else.

  • IDE:
    • (integrated development environment) This is your "Microsoft Word" for programming.
    • I recommend NetBeans or Eclipse. Atom is a great IDE I just picked up and I love it.

  • Concepts:
    • variables (data types)
    • if statements
    • for loops
    • while loops
    • method
    • classes
    • Objects
    • constructors
    • arrays
    • There's a lot of little things in programming languages and, when you start it's hard to figure out what's important and what's not. These are the concepts you'll see early on that should stand out as important.

  • Resources (Beginner):
    • I learned Java in college so I did not use these resources. However, I have looked at them and they seem to cover the important parts.
    • Java For Dummies. If your dissuaded by a "For Dummies" book don't be! They are very clearly written and cut out all the useless bits that just confuse people.
    • Udemy. If you look under the "Programming Core Java" you'll see A LOT of what I mentioned in the my concepts section.

  • Resources (Intermediate):
    • After you've gotten comfortable with the stuff in the "concepts" section you're probably ready for this.
    • Projects are the BEST way to learn. At this point Youtube videos and blog tutorials will only help so much.
    • Look for simple projects you can do. GitHub can help.
    • Write a To-Do list application
    • Write a countdown/timer application
    • Take in a list of something and put it in alphabetical order

u/HibiscusJ · 4 pointsr/learnprogramming

I am in an Associates program for programming right now so I am not really self teaching, although for some courses I am, but the best piece of advice I have heard to stay motivated is that you have to have a concrete goal. So things like learning a language or finding a job aren't really concrete goals, but something like I want to develop an android app that does "X" would be a concrete goal.

Also, I have found it easier to learn the more I learn. So that is pretty motivating as well. If you need a good resource and you are willing to spend money, [this book] ( is what I am using for my java class right now and it is excellent.

u/solarjetman · 5 pointsr/cscareerquestions

Learning AWS, machine learning, javascript frameworks - these are worth playing with to see if you like them, and maybe give you a direction to take your career in the future. Since you're a junior right now though, that might be thinking too far ahead. Right now, unless you are looking to escape Java development, your goal should be to just get that "junior" off your title, and become the coveted Mid Level Engineer who can Hit The Ground Running and Get Things Done Right Away, because that's who people want to hire. To that end:

  • Unit/Automated Testing. Writing tests is a big part of your job (if not, it should be, and it will be in your next job) and there is skill in writing good ones.
  • Effective Java by Joshua Bloch is a great book to read if you want to stick with Java for any length of time.
  • Since you're in a Spring shop, you have the opportunity to get familiar with Spring itself and that can be useful. Understanding the guts of Spring can help you design solutions and become more self-sufficient as a developer in your current shop. You can also look into alternative frameworks like Dropwizard (a Spring Boot competitor) and other DI frameworks like Guice and Dagger, just to see some alternative design decisions.
  • SQL. A lot of java work is "backend" which means you'll be accessing relational databases, and knowing how to write good SQL (and design relational data structures) can help your code perform well and avoid errors. I've also used SQL to help debug and make design decisions.
  • Git. Helping your peers get out of Git hell is a great way to look senior; understanding how it works is part of your day to day. Git is popular enough that even if your current job doesn't use it, your next job will.
  • Kubernetes. I just threw this in because everyone seems to love it.
u/BirthdayBuffalo · 3 pointsr/androidapps

If you're starting completely from scratch (no programming knowledge at all), then learn Java. Intro to Java Programming is a pretty good and in depth book. Chapters 1-13 should be good enough to get started with Java programming.

If you want something faster or just need a refresher, than the Java tutorials from TutorialsPoint could work.

Other wise, if you already know Java, the BNR Android Programming book is a really good book for Android programming. It covers a lot of topics; the basics all the way to the more advanced, real world applications.

The Android Developers site is incredibly useful as well. The training and API guide sections do a good job at explaining more specific things and some sections include code snippets.

The biggest hurdle for me when I started was just setting everything up. Installing Java and Android studio was a pain because all the hiccups. It's more stable and straight forward to install now though. I'm pretty sure the intro chapter in the BNR book covers installation as well.

u/javaxnerd · 2 pointsr/javahelp

> Effective Java - This has historically been an excellent reference for Java. It's not entirely beginner friendly, but if you have at least a working knowledge of Java it's an excellent book to have around. Note: The link is for the 3rd edition which is coming out soon, I assume it will be as good as the previous editions, but in any case the information from the previous editions is still worthwhile even if there are newer features in Java 7/8/9 which is covered by the 3rd edition

I agree with this. Since 3rd edition is only a month away now after years of not knowing if/when there would be another edition, I'd probably say pre-order it and hold out for 3rd. But yes, 2nd has been a great help to me.

u/Thedabit · 18 pointsr/lisp

Some context, I've been living in this house for about 3 years now, my girlfriend and i moved in to take care of the owner of the house. Turns out that he was a big lisp / scheme hacker back in the 80s-90s and had developed a lot of cutting edge tech in his hay day. Anyway, these books have been hiding in his library downstairs...

It was like finding a bunch of hidden magical scrolls of lost knowledge :)

edit: I will compile a list of the books later. I'm out doing 4th of July things.

update: List of books

  • Lisp: Style and Design by Molly M. Miller and Eric Benson
    ISBN: 1-55558-044-0

  • Common Lisp The Language Second Edition by Guy L. Steele
    ISBN: 1-55558-042-4

  • The Little LISPer Trade Edition by Daniel P. Friedman and Matthias Felleisen
    ISBN: 0-262-56038-0

  • Common LISPcraft by Robert Wilensky
    ISBN: 0-393-95544-3

  • Object-Oriented Programming in Common Lisp by Sonya E. Keene
    ISBN: 0-201-17589-4

  • Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman w/Julie Sussman
    ISBN: 0-07-000-422-6

  • ANSI Common Lisp by Paul Graham
    ISBN: 0-13-370875-6

  • Programming Paradigms in LISP by Rajeev Sangal
    ISBN: 0-07-054666-5

  • The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow
    ISBN: 0-262-11158-6

  • Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig
    ISBN: 1-55860-191-0

  • Practical Common Lisp by Peter Seibel
    ISBN: 1-59059-239-5

  • Common Lisp The Language by Guy L. Steele
    ISBN: 0-932376-41-X

  • Anatomy of Lisp by John Allen
    ISBN: 0-07-001115-X

  • Lisp Objects, and Symbolic Programming by Robert R. Kessler
    ISBN: 0-673-39773-4

  • Performance and Evaluation of Lisp Systems by Richard P. Gabriel
    ISBN: 0-262-07093-6

  • A Programmer's Guide to Common Lisp by Deborah G. Tatar
    ISBN: 0-932376-87-8

  • Understanding CLOS The Common Lisp Object System by Jo A. Lawless and Molly M. Miller
    ISBN: 0-13-717232-X

  • The Common Lisp Companion by Tim D. Koschmann
    ISBN: 0-417-50308-8

  • Symbolic Computing with Lisp and Prolog by Robert A. Mueller and Rex L. Page
    ISBN: 0-471-60771-1

  • Scheme and the Art of Programming by George Springer and Daniel P. Friedman
    ISBN: 0-262-19288-8

  • Programming In Scheme by Michael Eisenberg
    ISBN: 0-262-55017-2

  • The Schematics of Computation by Vincent S. Manis and James J. Little
    ISBN: 0-13-834284-9

  • The Joy of Clojure by Michael Fogus and Chris Houser
    ISBN: 1-935182-64-1

  • Clojure For The Brave and True by Daniel Higginbotham
    ISBN: 978-1-59327-591-4

u/samort7 · 3 pointsr/learnprogramming

I saw someone posting Head First Java and you might want to take a look at this thread and this thread in regards to that book. Here's my opinion from those threads:

Headfirst Java was published in 2005. It's 13 years old. If you're looking to learn Java, there are plenty of excellent resources that also cover the latest features of the language:

u/Shackelbot · 1 pointr/AndroidStudio

to further the conversation on the forum and offer some assistance to everyone out there.

  • Java is indeed a primary component of Android Studio along with XML for formatting and defining actions.

  • Android is unique from java in that you must declare every action you are going to take in the XML file before it can be recognized/run.

  • Java may be a primary language however C and C+ can be used as well (there may be more however this is information learned on passing not actively sought out)

    If you do have a beginner textbooks worth of knowledge on Java then I would recommend starting with Android Application Fundamentals
    and familiarize yourself with the content or use this as a reference.

    if you are new to programming and you want to get started with learning Java then I would recommend (again) Head First: Java 2nd edition, this book is very good if you want a k-12 approach in that it isn't word heavy and it makes you find the solution more often than not.
    if you do love word heavy content and love taking notes then I would recommend: Core Java Volume I--Fundamentals (9th Edition)

    free pdf versions of both books can be found so please do not limit yourself.

    Thank you for taking the time to read and please Never stop moving forward.

    edit:spellcheck and link added
u/reposefulGrass · 7 pointsr/learnjava

There are tons of resources in many different formats of many different qualities.

On the sidebar to the right, there are quite a few. You should pick the format you're most comfortable with -- book, video, course, etc.

As I've read a few books, for absolute beginners, Intro to java: Comprehensive was pretty good. Very easy to get into to.

Thinking in Java or The Java Reference Book are pretty good for people who already know the concepts of programming.

I haven't watched videos for learning java or taken any courses, so this is all I can give you.


I've found a playlist on YouTube, I've only watched the two first videos, but they seem great.

As a beginner, you'd first have to install Java and also a tool to easy use java -- an IDE (Integrated Development Environment) for example. Plenty of YouTube videos covering that.

Here is a course that alot of people seem to like and recommend: MOOC

Lastly, some advice: Stick through with it if you really want to program. Learning to program at first is the hardest part on the journey.

u/GlitteringSkeleton · 4 pointsr/javahelp

I'd start with this article. Finding newer versions of the books mentioned here is going to get you going on the right path. Here's a few I've picked out that I've personally read over the years.

Java: A Beginners Guide - Doesn't really get much better than this as far as an introduction into Java. Clean examples, pretty easy to follow. Would be a great place to start

Effective Java - This has historically been an excellent reference for Java. It's not entirely beginner friendly, but if you have at least a working knowledge of Java it's an excellent book to have around. Note: The link is for the 3rd edition which is coming out soon, I assume it will be as good as the previous editions, but in any case the information from the previous editions is still worthwhile even if there are newer features in Java 7/8/9 which is covered by the 3rd edition

Java Concurrency in Practice - As you become more advanced this book can help guide you along the ways of concurrent operations in Java and pitfalls/issues you'll run into (and how to avoid them)

u/[deleted] · 10 pointsr/programming

Programming Android has been a top 5 Java book for a few weeks now, and it is competitive with books covering iOS and JavaScript programming.

Java is popular, and is getting a lot more popular due to Android. It is more than good enough to create really nice interactive applications, especially using the Fragment UI components in 3.X, which you can back-port using the Android Compatibility Library.

I have to agree that Eclipse is idiosyncratic. For example, adding libraries to an Android project is "attached" to the Eclipse framework in a seemingly arbitrary way because the toolsmiths needed some pre-processing that could, apparently, only be invoked as part of an import operation. But these quirks are encountered less often, while Eclipse's power in refactoring and code completion are easy enough to use that even beginners can take good advantage of them.

u/phao · 2 pointsr/java

I've heard good things about these two:

u/Bgomez89 · 1 pointr/javahelp

declaring a method as private/public does different things. A public method means that any class can access that method. A private method on the other hand cannot be accessed by any class except the one it's in.

You're pretty new to java and it's awesome that you're starting to build programs. Keep going! I'm a big fan of this text book:

It's a very easy to read and has lots of great explanations/problems

u/CinnamonHeart · 2 pointsr/learnprogramming

Read books! Implement small projects. recently open-sourced all of their books. Essential Scala is quite good imo:

Another great book is Scala for the Impatient, but it's more of a crash course in scala than a book on FP in scala.

If you want a great book on functional programming as an idea, 'Functional Programming in Scala' is great. It's not really a book on how to program in scala, but more of a general FP book which happens to be in scala. Many of its ideas can be translated into C#.'s other book, Advanced Scala With Cats is good too, but imo should wait until you've read 'Functional Programming in Scala'.

u/cjmarquez · 1 pointr/learnjava

I've bought some udemy courses (not particularly in java) though some are pretty good to at least understand what the technology is or what you can do, I've found that reading the online documentation will provide you the same knowledge (at least for some of the JS frameworks I've studied through the site) while this is not the same for a more complex language like Java, I would suggest you to take the MOOC listed in the tutorial section of this sub, as for books I would say "Head First Java" and one that I'm currently reading and have helped me to understand some of the language concepts better "Core Java Volume I" for fundamentals and volume II for advanced topics

Hope this helps

u/road_to_life · 2 pointsr/learnjava

Depending on how much C++ you know, I believe it would be best to start with one of the introductory books and skim real fast through parts which are perfectly clear to you, as a learning resource I can suggest either: I even decided to buy physical book in order to get all the extra content, if you finish that book from cover to cover, do all the exercises and do online quizes and read bonus chapters you will have I dare to say "godlike" foundation in JavaSE and some decent introductory JavaEE knowledge as well (bonus chapters), or if you prefer to read something a bit more modern (Java 8/9) I would suggest:

u/Hydrotechnics · 2 pointsr/computerscience

Yeah you are right. I made the same mistake! Nice catch.


Would love someone to chime in and define the exact difference between the heap and stack.


I learned compilers through a programming language engineered by one of our professors, where he tried to simplify the language so that the most important concepts could be highlighted. His language only utilized a stack, so there is definitely room for some nuance here (regarding real programming languages).


I highly recommend his book on Assembly Language and Computer Architecture Using C++ and Java

As well as his book on Compiler Construction



u/DerivativeOf · 2 pointsr/java

Did the two years of C++ cover OOP at all? You said you'd be teaching the basics, so you may need to use a beginners book. The Deitel Developer's Series is pretty good. It still covers the basics, but it also teaches using techniques you'd see in actual development.

Of course if you want to put a good amount of time into it and save your students some cash, you can use various online resources and construct the course however you'd like :).

u/littlea1991 · 1 pointr/germany

> even read this entire book in my second year of my bachelor (the 6th edition):[1]
So I think I'm very experienced. But of course I never worked in the industry before.

No serious company will account this as experience.

>2- I also often see in jobs ads statements like: 2-year experience in java programming. And things like that. Do my experience in the uni count?!

what is generally meant by "2-years Experience" are internships (Praktikum), Werksstudentenjobs and maybe (that really depends on the position and company you are applying for) Studentjob in big Institutions or Lab with a reputation.

>so I'm not sure if companies would take that into account if I will apply from now and not be prepared for the interviews or so.

As someone who personally knows people who hire Guys in Software Development. I can assure you the company isnt looking for a "perfect 2 Years experience candidate" but rather if you fit in the Company, the Team and are capable of good teamwork.

From your statements i have to conclude, that you are really not at all experienced (remember any work that you do for your Studium doesnt count here).

Rather than rushing to an actual Job, i would recommend you to get atleast real world experience with a Praktikum and a Werksstudentenjob.

u/drboyfriend · 1 pointr/androiddev

Keep working at it. Launch a few apps in the app store, no matter how basic and try to get some users and address their feedback.

Go through Udacity's free Android dev course. Another good resource is CodePath's Android guide and Effective Java.

It's a lot of hard work but being able to point someone to something you've published and talking through developing it and decisions you had to make will help a lot more than just having a degree.

Good luck!

u/sh0rug0ru · 1 pointr/java

You can also check out the Java tutorials and the Java EE tutorials, but these might be a little on the light side compared to books devoted to the topic.

The Core Java Volume I and Core Java Volume II by Cay Horstmann are the best books I've read for learning Java. Some people like the Head First series.

Effective Java is a must read.

u/lost_in_trepidation · 3 pointsr/learnjava


  1. go through both courses on

  2. read/work through Thinking in Java

    -- You should "know" Java pretty well at this point

    if you want another resource/a large number of exercises and are willing to spend the money get this book

    From here you can move on to more intermediate/advanced books like:

  • Effective Java
  • Java Concurrency in Practice

  • Design Patterns: Elements of Reusable...

    At this point you should be good.

u/gtani · 2 pointsr/Clojure

there's lots of good replies (this is a great subreddit!). A common reply is not to worry about it, start with pure clojure code written clojuristically (immutable bindings, lein/emacs, fully utilize the REPL) and worry about java when you need the interop or you're plowing through large datasets. (the Oreilly and Pragmatic and the 2 Manning books are great for that, especially first 2)

Also check on SO, where lots of people have opined about being new to clojure, jruby, scala, etc adn the Marx blog, one of my favs


You do need to know about classpaths and the basic hotspot configuration options for heap, GC, inlining, (You'll often see -Xmx and Xms, Xss set in eclipse etc. Rich Hickey recommends increasing MaxInlineSize to 100 or more.

For Intellij's sake i only use Oracle JVM, but I wouldn't on windows unless they've removed the semi-malware that was bundled with it.

Also Hunt and John's tuning book is excellent:

u/corbinbane · 1 pointr/androiddev

I would normally caution anyone using Android Studio this soon,but Eclipse feels just about as buggy as alpha software sometimes. "Where'd my project folder go? #$%@!! FU Eclipse!!!" :) Anyhow... it'll probably get the job done,just know its a very early software release.

Programming Android 2nd Edition multiple authors. ISBN:1449316646
A really useful book when you're trying to figure out the android framework or maybe a certain api. It doesn't cover EVERYTHING,but it'll get you going with most of the framework. It provides useful input on using Java with android as well. But still uses Eclipse and the ADT. Good luck!

u/fiveofakind · 1 pointr/learnjava

I used Core Java Vol 1 9th edition by Cay Horstmann:

I thought it was pretty good as a beginner. Chapters 3 to 6 are especially useful and good.

u/vertigo_st18 · 2 pointsr/java

didn't read it, but from the index and reviews I read about it it seems good:

for me I started with this book: Java how to program
it contains all the basics for J2SE so you will have an idea about each topic and you can expand the knowledge on your own.

if you are a beginner stay away from design patterns and effective java, once you learn the basics of the language and OOP you can move to these, also stay away from certification books, they are not for learning a language but rather for passing an exam.

u/eatstraw · 1 pointr/learnpython

I agree. The Design Patterns book by Gamma et al. is an excellent book on commonly accepted and proven OO design strategies. For a deep dive on OO concepts, I suggest looking at the Java programming language. Unlike Python, Java is designed to be OO from the ground up. In Python, OO is optional. This book by Deitel & Deitel is a thorough look at Java and OO concepts: Java How to Program - Early Objects. The Deitel books are really good.

u/ITGZachATTACK · 2 pointsr/java

I'm only about 6 chapters into volume 1, but I'm really enjoying Core Java by Cay Horstman and Gary Cornell. It assumes previous programming knowledge. My only issue with it so far is that there are no exercises to work through.

I also hear Thinking in Java is the defacto standard on how to learn it though, but I don't know if it assumes previous programming knowledge or not.

I started with C++ so the C++ comparisons throughout are helpful to me.

If you're interested in Core Java:

Volume I -

Volume II -

u/Shredforgirls · 0 pointsr/learnjava

Introducion to Java is pretty nice. Before Oracle bought Sun Microsystems, an engineer friend who works at Sun recommended me Thinking in Java.

u/REAL_CONSENT_MATTERS · 2 pointsr/learnprogramming

maybe the liang java book if you want an actual textbook? it's a pretty thorough introductory book and even gets some algorithm practice in, so you could solidify old concepts and fill in any gaps in your knowledge before moving on to a specialization.

otherwise the bot knows whats up and you could check the online resources it linked to.

for motivation what worked for me was promising myself i'd do a certain number of hours per day (i picked 3). if you have trouble finding the time, what i recommend is resetting your sleep schedule so that you get up 3 hours early (or however much you want to do it).

then you make yourself do 3 hours of focused practice when you're at you're most well rested and focused and when you're guaranteed not to have unexpected interruptions. do this for 3 months. congratulations, you've now picked up the programming habit.

for me i no longer worry about hours per day because it's just become what i do for fun when i'm by myself, but committing to 3 hours per day for 3 months is how i got here. from a fellow learner.

u/zoug · 8 pointsr/Omaha

You honestly need to change your attitude if you want a successful career in development.

Red flags from this and your post in cscareerquestions:

  • My periods of motivation to work on code at home are infrequent
  • have no interest in full-stack or front end work
  • completely behind on using things like Ant/Maven, JUnit and other recent additions to Java
  • I'm interested in programming in a Unix/Linux environment.

    If you don't have motivation to learn new tools and languages, that's bad. Good developers need to be innovating, creative and always learning (even if it's just on the job)
    Ant/Maven are simply build tools, and relatively archaic ones at that. JUnit has been around for 20 some years and unit testing in general, way longer than that.
    Why care what environment you program in? Every system has an ability to run bash. While some may be more frustrating than others, it shouldn't be something you tell a company or a recruiter or even a discriminator. It'd make sense if you were looking at system administration but not programming.

    To start, I'd say you should grab a couple programming books and see if you actually want to do/work in this field.

    If you read something like the pragmatic programmer and find it boring/uninteresting - find another field.

    If you decide you want to continue, learn:

    unit testing - Junit, Mockito, etc.

    functional programming - Java 8+ streams, lamdas, write some javascript

    spring - dependency injection, inversion of control, annotations

    That said, the job you're looking for probably does exist if you brush up on basic java skills. It's pretty much a nightmarish hellscape of unmotivated developers and maintaining shitty code with people unwilling to keep their toolsets up to date while they watch the clock til retirement.

u/Styrofoam--Boots · 2 pointsr/Ni_no_Kuni

Effective Java 3rd Edition by Joshua Bloch is wonderful:

He helped implement features for the language when working at Sun and has also worked at Google. :)

u/InnocentLurker · 4 pointsr/androiddev

You have a long road ahead, but it's going to be fun. For learning Android, I recommend "Programming Android" by Zigurd Mednieks. It goes from an introduction to Java to an introduction to Android and then forward.

You can get it on Amazon or O'Reilly. You may want to check this Google+ post by the author for a 50% coupon.

u/zappable · 2 pointsr/learnprogramming

Google has some pretty good official resources for getting started:

If you want a book, check out Programming Android.

If you're interested in a full course with videos, Udacity and Google recently
partnered on one:

u/UpAndDownArrows · 2 pointsr/cscareerquestions

I dropped out of highschool because of books (can't stand them, failed History and Literature). I am at university though now and currently self-learning Java with this book

It is really great with tons of fully working code-samples and tasks after each chapter. And what is important, it's a really new edition, with JavaFX as a GUI building library instead of Swing. If you want Swing, you can choose the 9th edition. But yeah, I am not sure it will help with the architect stuff, if you mean the design patterns (there are other books for this stuff, but I haven't read them yet, so can't recommend anything particular, except that I have heard about Head First Design Patterns but yeah I have like 4 books more to name but no opinion on them)

currently on a page 760

hit the books man, don't make excuses

u/sl0thish · 1 pointr/apps

It may be easier for your to start with developing Android applications since a Mac OS isn't required and it's cheaper to publish your app (when you get that far).

u/My_Name_Is_Steven · 2 pointsr/java

Also, for those interested, you can buy the 8th edition of this book used on Amazon for a fraction of the cost of the 9th edition. A quick comparison of the table of contents shows an almost identical chapter structure, and there was less than 2 years between publications, so it's likely that not much changed between the two books.

Someone more knowledgeable in JAVA updates and the differences between them could probably better answer if anything significant happened between 2009 and 2011 that would justify the difference in cost between the two editions.

Amazon link to 8th Edition

Amazon link to 9th Edition

u/-jp- · 1 pointr/computerscience

Josh Bloch's Effective Java is also really good. Maybe the best book you can buy if you want to understand Java.

u/rashidnaushad · 1 pointr/slavelabour

Hi. Happy new year! How are you doing?

Do you need this book?

If yes. I have it.

u/mofomeat · 1 pointr/learnjava

I don't know about its lighthearted-ness, but Cay's texts are usually pretty decent and somewhat 'friendly'. There is Core Java for the Impatient covering Java 8 as well as a newer version that covers Java 9.

u/Nzen_ · 2 pointsr/ProgrammingBuddies

In general, a library without a using-program driving it is apt to not serve any domain particularly well. I understand that this is a series of etudes rather than expected to become the next jquery. Nevertheless, typing these method names in context could serve as an opportunity to consider renaming them.

For example, the methods in search have a search in them. But, as a caller, I don't generally care how it's done. I do care what's returned, and doSearchXXX() doesn't communicate what the method provides to me. As a caller, I'd prefer dealing with something like

int knownHighScore = 3;
int[] scores = { 7, 8, 10, 3 }; // or from file
if ( Search.contains( scores, knownHighScore ) )
System.out.println( "Student "

  • (Search.position( scores, knownHighScore ) +1)
    +" has the high score" );

    Methods like contains() and position() are clearer to use than doLinearSearch() and ... I'm not sure what you'd call the latter in the current scheme. But, internal to the library, you could distinguish between the different searches by having contains() call binary or linear based on whether the input is sorted.

    There are a number of ways to improve what you've published, but I'll emphasize using this library from something with a main() method.
u/tufflax · 1 pointr/learnprogramming

No. I have read The Joy of Clojure which is good but it is not the easiest book. Maybe check out Clojure for the Brave and True

u/OffbeatDrizzle · 2 pointsr/javahelp

Yeah, or if not just play around on your own with it for a weekend, it's pretty simple to pick up.

Something else I'd add to that list is dependency injection (which again might be covered under MVC-frameworks if they tell you about Spring).

Also, this is a useful tool for getting to grips with design patterns, and I can't recommend this book enough

u/mrv1234 · 2 pointsr/java

I'm not sure there is any, depending on the level of detail you need you might have to read the source code. This book is very detailed on certain parts of it: "Java Performance" ->

At least in terms of garbage collection and how the JIT compiler works it covers those well. It also has a lot of stuff other than that, like how to troubleshoot memory issues in a unix/windows box

u/j3kyl_ · 2 pointsr/learnjava

To be fair, there are two or three great java books (beginner / intermediate):

Java: A Beginner's Guide, Seventh Edition

Core Java Volume I--Fundamentals, 1 (11th Edition)

u/zeldaccordion · 1 pointr/java

Have you read Effective Java? I'm reading it right now and enjoying it / learning quite a bit from it. I recommend it!

u/shvr · 2 pointsr/java

Core Java is another great book. It's really in depth and beginner friendly, and comes with lots of example code / programs. I've been working my way through it and love it. No fluff, just the information that's needed. I come from a Python background, but I'd also recommend it to a beginner with no previous programming experience.

u/rbatra · 0 pointsr/learnprogramming

I really like the official Oracle Java Tutorial book. It is also available free online.

u/Cesar-Oswaldo · 3 pointsr/learnjava

here's a resource that helped me in learning java geeksForGeeks. After struggling with java for work for several months, I wish the following textbook was found earlier: Java How To Program, Early Objects My friend who actually studied computer science slapped me in the face with it. It's way better than OCA test prep books to achieve understanding

u/the_argus · 2 pointsr/androiddev

I really liked this book. I wasn't sharp on Java and completely new to Android dev and it helped me understand the system better. Other than it I just use the examples on and that really got me started.

u/bindhast · 2 pointsr/learnprogramming

I was in Barnes and noble and leafed through couple of books on java. I liked this one .

Core Java Volume I--Fundamentals (11th Edition)

u/NetSage · 3 pointsr/learnprogramming

Yes, but a lot of it it's also a lot insanely simple one liners because it's a basic stuff on HTML, CSS, Javascripts, Node, and a few other thing I think. It's not just JAVA.

But I mean just a quick google search bring up which a book of over 1000 pages. You can't tell me there is only a days worth of knowledge and practice in there.

The issue with JAVA and interactive sites is it has to be compiled making it probably not the friendlies thing to host.

Edit: Someone just posted this in the irc channel and figured it may help :P.

u/chris-c-thomas · 5 pointsr/learnjava

I'll second the Core Java series.

If learning programming from the beginning though I really like Absolute Java

There's also a C++ version of the textbook. Used both in college CS. Good books.

u/uh-hum · 2 pointsr/java

The official tutorial is available as a book. It's very straight forward and easy to understand.

u/bogoris76 · 18 pointsr/java

It is a best-practice; by default java compares objects by reference, not 'by content'. That said, two objects representing the same logical entity (e.g. Order) are different objects instances (different reference in memory), but represent the same entity e.g. in DB (they have the same ID). Assume the following: equals and hashCode is *not* overriden. You read the same value by id from a DB using jdbc and put them into a HashSet. As these have different references there will by 2 items in a set. Do the same but override equals and hashCode to reflect the content of the object. The set will have only one item. Why and when this is important: if your system (application) relies on subsystem that manages identity of entities (e.g. SQL DB where you use IDs) and do *NOT* rely on actual object identities -- and this is pretty much common for most applications that use external storage (e.g. SQL).

Why to do it for *all* objects: assume we have 2 classes A and B, where A contains a collection of Bs . A has overriden equals and hashCode and compares with another A ; it also has to compare collection of Bs. How ever, collections of Bs will *only* be equal if all Bs are identical -- the same references but not values.

If you happen to use hibernate overriding equals and hashCode is a must IMHO as hibernate will rely on equality by content, not reference.


Good read (required :-) ) on the topic:

u/GreyscaleSunset · 7 pointsr/java

Effective Java is the bible of this language and has recently released it's third edition

See also the O'Reilly series filtered by language/product and release date

u/gifsbegone · 1 pointr/Clojure

As a fellow noob, I'm about half-way through Clojure for the Brave and True and it's really thorough and easy-to-follow so far.

u/VGPowerlord · 5 pointsr/java

To commentt on Effective Java, 3rd Edition comes out sometime soon (October, I think). It even has a preorder on Amazon.

u/dtxvsk · 2 pointsr/cmu

Josh Bloch is co-teaching 214 this fall, and he wrote the book on Java programming, so it might be a good experience to take it with him.

u/ObsessionObsessor · 1 pointr/learnprogramming

Maybe Absolute Java by Walter Savitch?
It is fairly overwhelming, heavy and expensive, and the pages are thin to the point of myself slightly tearing the first chapter's pages as I read it, however I personally like it, especially since I got it as a textbook from a teacher.

u/lbkulinski · 1 pointr/learnjava

The third edition of Effective Java might be helpful. It was updated for Java 8 and 9. For 10 and 11, I suggest taking a look at some of Oracle’s articles. This one covers local variable type inference.

u/divpload · 2 pointsr/learnprogramming

I recommend this one : Introduction to Java programming. I used the 7th edition in university.

u/cjrun · 1 pointr/learnprogramming

What I was getting at was the importance of a guide. A track to follow. You should learn a new thing. Try it out. Learn another. Try that out. Step by step.

u/zenberserk · 1 pointr/Kotlin

What about Effective Java?

Or is it considered too advanced?

u/GreyDeck · 1 pointr/java

I liked Core Java vols. I and II, but it's a little expensive and only 12th in Amazon's list of java books. Head First is number one.

u/kontrakt · 6 pointsr/programming

I think 2x is optimistic. As a rule of thumb heap should be 3x to 4x the live set size see for example

OTOH Firefox and Chrome are C++ and use Gigabytes of memory.

u/puppydogbryn · 1 pointr/JavaFX

I used this book in my programming class. It's got a really good section on javsfx. I have no idea your skill level, or what kind of questions you have, so sorry if this isn't helpful. But try and find a PDF online of this maybe.

u/ryosen · 2 pointsr/javahelp

Java is a great language to start out with and I would recommend two books to get you running. Since you are new to the language and programming in general, start with Head First Java. Then, move on to a more advanced treatment like Core Java. Thinking in Java is also very good but it's dense and some people have a difficult time digesting it.

Once you have the basics of the language down, learn about working with databases. Then, move on to server-side development as that's where the jobs are.

Despite the similarity of their names, Java and JavaScript are not similar and cannot be used interchangeably. JavaScript is primarily used in UI development in web browsers, although server-side implementations have existed for almost as long as JavaScript itself. Currently, the most fashionable of these implementations is node.js.

Lastly, since you are looking to work professionally but without any formal education, know that you are going to have a difficult time getting work for the first several years. You might find that learning JavaScript (and HTML and CSS) are a quicker route to finding a job as front-end web developers often do not require a college degree, whereas Java programming jobs invariably do.

u/Opacy · 1 pointr/java

I've heard good things about "Core Java for the Impatient", also by Horstmann. It's still not as concise as K&R, but it seems to be as close to it as you're going to get while still up to date with Java 8.

u/cowwoc · 6 pointsr/java

There is nothing to tone down. I'm not questioning your technical competence. I'm just saying this is a design anti-pattern. If you read Effective Java you'll end up with a better design that will avoid the need to ever think of Strings.isNullOrEmpty().

u/dzjay · 1 pointr/learnprogramming

I would go with Java, and Swift appears to be the future of iOS development anyway. Since you're not a beginner I suggest Core Java, both volumes.

u/dragonbonheur · 5 pointsr/learnprogramming

The "For Dummies" series of books will get him going. Personally though I would suggest he start with DarkBASIC or BlitzBASIC and make his own games with those. Java isn't difficult but most examples in books will output to to a text based console - a very far cry from the interactivity he's used to.
Another excellent book is The book is much less expensive in Asia.

u/dvuevo · 19 pointsr/java

Apparently the 3rd edition is listed on Amazon and coming out in October.

Anyone know if this was actually announced or is it more of a placeholder?

u/corrspt · 8 pointsr/java

Might want to wait for the 3rd edition, (October 2017, according to the publisher - (

u/ewiethoff · 1 pointr/learnprogramming

Not a textbook, but you could try the official Java Tutorials. Start in the middle of the page at "Trails Covering the Basics," then probably the "Generics" tutorial, then make your way around to whichever tutorials suit your fancy. Come to think of it, the Basics Trails do exist in book form.

u/nerdwaller · 6 pointsr/programming

Fortunately a new version is supposed to be out this fall (Effective Java 3rd Edition)

u/-manabreak · 1 pointr/badcode

For java, check out Effective Java by Joshua Bloch. It's basically a book around this kind of stuff and should be read by every Java developer.

u/xpto123 · 2 pointsr/java

I think Java Performance and Java Concurrency In Practice are two of the main ones. Especially JCIP is the reference for concurrent programming.

u/nezgan · 1 pointr/learnjava

I would suggest the Deitel book. It assumes no prior knowledge, and has, in my opinion, well laid out structure.

u/balefrost · 2 pointsr/learnprogramming

I just want to point out something that's maybe a little beyond where you're at, but might end up biting you, so you might want to know about it.

In Java, all classes implicitly inherit from a class called Object. You don't need to do anything to cause this to happen; it's automatic. That class defines several methods, and because your class inherits from Object, you get those methods, too. One such method has this signature:

boolean equals(Object other)

That is to say, all objects in Java have an equals method that you can call, and you can pass anything at all as the argument when you call that method.

You are defining a different method with this signature:

boolean equals(LandTract lt)

As a result, instances of your class will have two different equals methods. You will get different behavior depending on which one you call.

Generally speaking, if you call equals yourself, it will pick the correct one. If you pass a LandTract as the argument, then it will call the "more specific" one (i.e. the one that takes a LandTract). If you pass something else - say a String - then it can't call the one that takes a LandTract, so it will instead call the one that takes an Object. (String, being a Java class, also implicitly inherits from Object).

However, there are common circumstances where the wrong one will get called. For example, any code that operates generically on objects will almost certainly call the equals that you inherited from Object. If you put a bunch of LandTract instances inside an ArrayList and then use indexOf to try to find one, you might be surprised that your equals(LandTract) doesn't get called.

In the book Effective Java, Josh Bloch argues (Item 10) that it's dangerous to create methods called equals that don't override the one from Object. It's easy to think that you've overridden that method, when in fact you've just provided an overload (a different method with the same name).

It's sometimes safest to avoid creating methods called equals unless you're overriding the one from Object.

That's already long enough, and I don't want to overwhelm you. If you want to know more, let me know.