๐ŸŒ
Codecademy
codecademy.com โ€บ learn โ€บ java-for-programmers
Java for Programmers | Codecademy
Take this course meant for experienced programmers and learn Java, one of the world's most popular languages.
Rating: 4.4 โ€‹ - โ€‹ 263 votes
๐ŸŒ
Reddit
reddit.com โ€บ r/java โ€บ as an experienced programmer, what's the best resource to deeply learn java?
r/java on Reddit: As an experienced programmer, what's the best resource to deeply learn Java?
July 2, 2015 -

I'm looking to learn Java for work, so I'd like to either find a good book on the topic or a good website to help me learn the language. I'm pretty proficient in C, have dabbled with C++ (though at work it's mostly used as "C with exceptions"), and I know OOP well enough from writing object-oriented Python.

Given all that, I don't really need a book that introduces programming while it introduces the Java language, but also I don't want to just learn the Java syntax so that I can write Python in Java. I'd like a book similar to Accelerated C++ that introduces the fundamentals of the language as well as teaches how to think like a C++ programmer. More than just learning the syntax, I want to grok the Java ecosystem, so a book should tell me more than how the import keyword allows you to include an external library, it should help me understand questions like, "why do Java people love this reverse domain naming convention?"

A book that helps teach best practices so that I don't have to unlearn bad habits later would be ideal. One that is modern enough to include all the latest updates to the language would be a bonus, but I can probably pick that up later if I need to. I've seen Effective Java cited as a good resource to learn best practices, but it's clearly not aimed at people who still need to learn the language basics, and I'm not sure it's really designed to teach you how to think like a Java programmer.

Top answer
1 of 5
37
I don't have any book suggestions for you, since I never really read any while learning Java. My view on "think like a Java programmer" goes like this: Where C and C++ offer relatively thin abstractions over the hardware, Java plants itself firmly between you and the machine. You will rarely, if ever, care about exactly what the CPU or RAM is doing (though you have fairly direct control over the disks, network, etc). The JVM authors have spent an enormous amount of time making sure that the most obvious, idiomatic Java code is most performant (where possible). This is intentional, because it makes it a lot easier for programmers to focus on developing a correct program. Java is most frequently used in situations where correctness is far more important than performance. While C/C++ have a firm grip on videogames and rendering, Java excels in servers and other long-running applications. To aid in correctness, Java programs are often heavily unit-tested. Tests are usually run on every build, and sometimes builds are configured to fail if code coverage falls below 75% or 90%. Because most software does not solve new problems (just rearrangements of old problems), Java application developers make heavy use of libraries to solve the genuinely difficult problems they encounter. Most of the code written is "glue" specific to that application. Java developers like things to be automatic. The build systems often download dependencies for you. The continuous integration systems watch your source control system and build whenever you check things in. The IDEs know how to build your project by default. The serializers just work, often with no changes to your code. The "reverse domain naming convention" is actually the one that makes sense. Stuff like com.company.department.area.ClassName is general -> specific; stuff like http://www.company.com/department/area/ThingName is all over the place. Specifically, use that naming convention for package names. Java has a single naming convention that nearly everyone follows, which makes it a lot easier to read and write code. At a code level: write the simplest thing that could possibly work put data in plain-old-data objects with getters and setters that follow the "Java Beans" pattern--this will make your life easier when working with libraries that expect methods named that way objects and arrays are pass-by-reference; primitives are pass-by-value. (thanks u/teeceli ) objects and arrays are pass-the-original, primitives are pass-a-copy Strings are a common source of "gotchas" in Java, so read up on them. never specify an implementation unless you have to: pass around List not ArrayList learn about dependency injection and use it, it will make unit testing easier unit test your code use a build tool (preferably Maven or Gradle, not ANT nowadays) comment your code, and make sure you use JavaDoc format use the Java collections API; avoid arrays unless you really need them follow the Java standards for naming conventions To learn to write idiomatic Java code, I recommend that you just write several small programs and bring them to one of the Java-related subreddits for critique. Be aware that there's a lot of crummy Java code on the internet, even in those subreddits. If you are stuck or confused, then google your exact problem or error message...there is a 99% chance that it's already answered on StackOverflow. The answer will be illuminating.
2 of 5
26
Effective Java is a Bible, it's worth every penny.
Discussions

Java language book for an experienced programmer? - Software Engineering Stack Exchange
Possible Duplicate: Is there a canonical book for learning Java as an experienced developer? I am looking for book to get up to speed with (start with) a Java language. I am experienced (more t... More on softwareengineering.stackexchange.com
๐ŸŒ softwareengineering.stackexchange.com
July 5, 2012
Best resources to learn Java for programmers?
Please ensure that: Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions You include any and all error messages in full - best also formatted as code block You ask clear questions You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions. If any of the above points is not met, your post can and will be removed without further warning. Code is to be formatted as code block (old reddit/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://imgur.com/a/fgoFFis ) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc. Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit. Code blocks look like this: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above. If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures. To potential helpers Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice. I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns. More on reddit.com
๐ŸŒ r/learnjava
5
10
April 8, 2022
Best Fastest way to learn Java for a job?
First learn Java fundamentals using mooc fi course. Depending on your pace this should take about 3 months. It's possible to finish it sooner but also later. Depends on you. Solve all the questions on your own. Check solutions in google only if you are really stuck and cant move forward. Learn very basics of SQL. I mean just basics like creating new record in table, reading it, updating and deleting. Nothing fancy. Leave table joins etc for other day if you are in hurry. This should take about 1-2 days. Create some small app on your own from the scratch. Make sure you use there most of your new Java knowledge and SQL. After mooc fi you will use JavaFX for the User interface but it's really important that you dont waste time for UI. JavaFX is useless and you will waste time on it if you will try to do something too complex. You can consider you app being REST client and include something from outside(I dont know some weather information or nice quote. Check free REST api's and choose something for yourself.) Keep this app very simple. You don't want to spend more than 1 month on it and it's very easy to over-estimate time required to write an app especially if it's your first solo app. Prepare you CV and do 1-2 exercises from codility every day. This shouldnt take more than 1 week. After that you can start slowly applying. Spend 1-2 hours every week for applications and do 1-2 codility exercises every week. So basically after 4 months you can start applying. It's too early however but some companies are looking for a junior to train who is keen on learning. If you are lucky they might choose you. So one day a week you will spend on job search and codility. Use the other 5/6 days to learn Spring with Java Brains. Once you will feel confident with Spring do your own Spring app(you will need some very basic HTML but very basic that you can learn in few days). This should take 2-3 months. Now after 7 months increase job applications pace. But keep learning Spring and Java. Never hurry in the study. Make sure you understand topics very well and take your time to understand it. Your lack of understanding of the topic will always sooner or later come out and you will waste more time as a result. However, dont give yourself such deadline. First job is often about luck; finding that one company that sees your potential. For some it happens after 3 months for others after 3 years. But you need to keep consistent if you really want to become software developer. Aim for 8 months but know that it can take much much more. As you will learn you will increase your chances so persistent person will eventually get it but nobody will promise you it will happen after 8 months. If you will starve after 8 months due to uneplmployment consider finding part-time job just to live and study programming the rest of time. More on reddit.com
๐ŸŒ r/learnjava
37
77
August 29, 2022
Is Java really that bad??
I don't actually think many people think Java is "extremely difficult" -- that kind of opinion is usually reserved for C or C++. Many would argue that Java is a bit verbose, which is both good and bad. Java code tends to be longer than code written in other languages; conversely, certain types of errors cannot happen in Java due to its language design. More on reddit.com
๐ŸŒ r/learnprogramming
56
15
June 29, 2022
๐ŸŒ
JetBrains
blog.jetbrains.com โ€บ idea โ€บ 2024 โ€บ 11 โ€บ top-java-blogs-for-experienced-programmers
Top Java Blogs for Experienced Programmers | The IntelliJ IDEA Blog
September 16, 2025 - This isnโ€™t just a blog, itโ€™s a complete learning playground for developers: Want regular expert tips? Subscribe to his High-Performance Java Persistence Newsletter. Ready to practice? Jump into his step-by-step tutorials conveniently organized by topics. Want to improve your skills? Try his courses. Interested in open source? Experiment with his Hypersistence Optimizer. ... Thorben Janssen is a Java expert with over 15 years of experience using Hibernate and JPA in various projects, from fast-paced, small ones to large-scale applications.
๐ŸŒ
Java Guides
javaguides.net โ€บ p โ€บ core-java-tutorial-for-experienced.html
Core Java Tutorial for Experienced Programmers
August 19, 2023 - This tutorial designed for Java experienced programmers. The source code examples from this up-to-date tutorial are developed using JDK 8 or later and well tested on our local development environment.
๐ŸŒ
Blogger
javarevisited.blogspot.com โ€บ 2020 โ€บ 04 โ€บ top-10-advanced-core-java-courses-for-experienced-developers.html
Top 10 Udemy Advanced Core Java Courses for Experienced Programmers in 2025 - Best of Lot
That's all about the best Udemy advanced Java courses for experienced programmers in 2025. As a senior Java developer, you should know how to solve memory problems, read heap dump and GC logs, and apply a particular design pattern to create ...
๐ŸŒ
Java67
java67.com โ€บ 2017 โ€บ 01 โ€บ 12-advanced-java-programming-books-for-experienced-programmers.html
12 Advanced Java programming Books for Experienced Programmers - Part 2 | Java67
It's not only an excellent book for experienced Java developers but also for penetration and security tester. The "Key Java" is one of those books which you would love to read, small size, lots of content that you can use in a real-world application, and broad coverage. If you want to get yourself familiar with key Java concepts without going into extreme detail, this is the book you should read. This book covers all essential topic which any experienced Java programmer should know, like networking, security, database connectivity, MVC frameworks, etc.
๐ŸŒ
Medium
medium.com โ€บ javarevisited โ€บ 11-advanced-core-java-online-courses-to-join-in-2021-46011661257a
11 Best Core Java Online Courses for Experienced Java Programmers in 2024 | by javinpaul | Javarevisited | Medium
January 31, 2024 - 11 Best Core Java Online Courses for Experienced Java Programmers in 2024 These are the best online courses for core java developers to learn skills like multithreading, Collections, JVM โ€ฆ
๐ŸŒ
Quora
quora.com โ€บ What-are-good-Java-tutorials-for-an-experienced-programmer
What are good Java tutorials for an experienced programmer? - Quora
Head First Java By exploiting how your brain works, Head First Java compresses the time it takes to learn and retain--complex information. Its unique approach not only shows you what you need to know about Java synt...
Find elsewhere
๐ŸŒ
Educative
educative.io โ€บ home โ€บ learning path โ€บ java for programmers
Java for Programmers - AI-Powered Learning for Developers
Java is one of the most sought ... everything from phones to game consoles to data centers. This path is perfect for you if you already have experience programming, but ......
๐ŸŒ
Blogger
javarevisited.blogspot.com โ€บ 2017 โ€บ 04 โ€บ top-10-java-books-of-last-5-years-for-experienced-java-Programmers.html
Top 10 Java, Spring, and Hibernate Books for Experienced Java Web Developers in 2025
The list contains books on Java 8, Advanced Object-Oriented programming, Spring, Spring Boot, Hibernate, Java Performance, Design Patterns, and programming job interviews. You might have read some of the books already which you can obviously ...
๐ŸŒ
Medium
medium.com โ€บ javarevisited โ€บ 10-advanced-java-books-and-courses-for-experienced-developers-b90cc1086975
10 Advanced Java Books and Courses for Experienced Developers | by javinpaul | Javarevisited | Medium
February 28, 2023 - This book provides hands-on advice to level up your coding style through small and understandable examples that compare flawed code to an improved example. In the process, you will learn handy tips and tricks, as well as common bugs an experienced ...
๐ŸŒ
Codecademy
codecademy.com โ€บ learn โ€บ learn-java
Java Tutorial: Learn Java Programming | Codecademy
... Get started with Java by learning about the basics of a Java program and variables! ... Take this course meant for experienced programmers and learn Java, one of the world's most popular languages.
Rating: 4.4 โ€‹ - โ€‹ 10.7K votes
๐ŸŒ
CodeGym
codegym.cc
Learn Java - Online Java Course
CodeGym is an online course to learn Java. For beginners and for experienced programmers. Contains a Java tutorial and 1200 Java practice tasks!
Rating: 4.9 โ€‹ - โ€‹ 1.49K votes
๐ŸŒ
Quora
quora.com โ€บ How-can-an-experienced-programmer-learn-Java-in-a-short-amount-of-time
How can an experienced programmer learn Java in a short amount of time? - Quora
Answer: You buy a big, fat book on Java. You then read it carefully, rereading pages until the knowledge is committed to memory. You should test yourself to make sure you retained the information.
๐ŸŒ
Java67
java67.com โ€บ 2020 โ€บ 04 โ€บ top-5-advanced-courses-to-learn-java-perofrmance-concurrency-memory-management.html
Top 5 Java Performance Courses for Experienced Developers in 2025 - Best of Lot | Java67
This one is another excellent course for experienced Java developers looking to become an expert in Multithreading, Parallel Concurrency programming in Java, with a strong emphasis on high Performance In this course, you will learn all the essential tools you need to troubleshoot Performance and memory-related issues, thread-related problems, and JVM-specific things.
๐ŸŒ
YouTube
youtube.com โ€บ watch
Java For Programmers in 2 hours
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
๐ŸŒ
Stackify
stackify.com โ€บ java-tutorials
26 Java Tutorials For Busy People, Beginner to Advanced
November 26, 2024 - If you want to polish your Java skills, then Sanfoundary is the best place for you. It has a collection of more than 1000 questions that focus on almost all key concepts of the Java programming language. Hence, it helps both beginners as well as experienced programmers to learn and code in Java.
๐ŸŒ
DEV Community
dev.to โ€บ selawsky โ€บ expert-programmer-s-guide-on-how-to-learn-java-1mpn
Expert Programmerโ€™s Guide on How to Learn Java - DEV Community
November 19, 2020 - CodeGym offers an online Java programming course that is 80% based on practice. The gamification based learning journey is graded in increasing order of difficulty. There is an active online community and forums to seek help, regular articles ...
Top answer
1 of 2
18

Six months ago I was also looking for books to get up to speed with Java. I was also coming from a background in C++ (as well as Perl, VBA, and JavaScript) and ended up purchasing the following:

  • Effective Java (2nd Edition) by Joshua Bloch
  • Java Concurrency in Practice by Brian Goetz
  • Java The Complete Reference by Herbert Schildt
  • Core Java, Volume I--Fundamentals by Cay Horstmann and Gary Cornell

I have since developed a Java application with more than 20,000 lines of code and found that the only books that I actually used were Effective Java and Java Concurrency in Practice. For basic language questions you can quickly get the answers from the Java Tutorials or by searching questions on stackoverflow.

In the case of Effective Java, it is the right place to start. The material is so fundamental to understanding Java idioms and avoiding common pitfalls that you cannot afford not to read it from the get go.

2 of 2
6

I were in your shoes ten years ago, tried "learning" Java after heavy C++ coding from books and examples - and failed.

Then I started working for a Java company, and they gave me the task to refactor an existing system, separate the reusable background framework from the custom business logic. At that time Java reference was unique: perfectly detailed explanations for ALL the language in a well-organized structure (now it's common). So I had the lang ref and the tutorial open in a browser, read and analyzed the code, and that's all. It was not easy, but I could manage it.

I think with your experience you don't need more. A good IDE (Eclipse is my choice), the Java tutorial for the first questions, the lang ref for the actual stuff - and tons of actual Java code with a real task to solve. And the holy Google with answers to the "beginner questions moving from C to Java" in the first months (yes, everyone has that period, bad, but it goes away). It will work.

Well, the bad side: today Java is not only the language, but the tons of tools (Spring, Maven, OSGI, Apache tools, not to mention the server side stuff), configs, magic, heavy googling. But I think anyone with a sane mind will let you familiarize yourself with the language itself before throwing you in the mud. ;-)

So: instead of any book, find a friend doing Java programming (or like me, a company that works in Java), explain the situation and start working.

My 2 cents.

๐ŸŒ
Java2Blog
java2blog.com โ€บ home โ€บ core java โ€บ java basics โ€บ core java tutorial with examples for beginners & experienced
Core Java Tutorial with Examples - Learn Java Programming | Java2blog
February 21, 2024 - This tutorial provides core java tutorial for beginners as well as for experienced programmers. It will help you learn java in a more interactive manner.