Java, being one of the most popular and widely used programming languages today, will boost your programming career. Java is fast, reliable, and secure. Desktop apps, web applications, scientific supercomputers, games, cell phones, and the internet all use Java. In this article, I hope to motivate you and provide you with a resource you can use to get started with learning Java.

An investment in knowledge always pays the best interest.

Benjamin Franklin

Why Learn Java?

It’s easy to learn – Java is easy to learn for the most part, and its syntax is clear and self-explanatory. It’s also a high-level language, meaning that the code runs automatically for the most part, and you don’t have to delve deep into the inner workings of a computer to write a program that works.

It has a large community – Java has one of the most prominent programming communities on the internet. There are over 9 million Java developers in the world, and you’ll be able to find an answer to almost any question quickly. You’ll also find that there are many sources where you can study and deepen your knowledge.

It boosts your career – According to, the average Java developer makes $100,000 per year. Java is enhanced with new features every update, and learning Java will make you a valuable asset to companies ranging from startups to enterprises.

It’s flexible – Java can be used for a variety of applications. These use cases are not limited to: Web applications, mobile applications (Android and iOS), front end web development (Google Web Toolkit), gaming consoles, navigation systems, and much more.

It’s object-oriented – Being object-oriented, Java provides organization to your programs by dividing them up into objects. Encapsulation and abstraction make it easy to change your code after you have written it, which makes Java programs very maintainable.

It’s platform-independent – The programs written in Java get compiled into bytecode, which is interpreted by the Java Runtime Environment. The JRE makes your Java code run on platforms regardless of the machine it is running on. This cross-compatibility between platforms makes your code very portable, and for the most part, you can just code once, deploy everywhere.

I could go on and on, but that would take up the entire article. You can hopefully now see why Java is a powerful language and how it gains popularity day by day.

Tips for Learning Java

As with mastering any skill, mastering Java is going to take effort and time. However, there are more efficient ways of learning Java, and here are some tips to make your learning experience more painless.

Learn the basics well

As with anything, you need to develop a solid foundation in the basics before you get into the complicated stuff. As you start, you might want to start creating cool, complicated, multi-thread projects. However, if you dive into these formidable challenges without learning the basics, you’ll most likely get frustrated and spend more time on Google fixing errors than actually building the project.

Instead, I recommend that you hold off on these urges and force yourself to develop a strong foundation in the basics. Like almost anything, it can be a little bit overwhelming at the start, especially when you are presented with so much information. Remember that everyone once started at this point and that you too can move past being a beginner to a Java master.

Also, if this is your first time coding, you want to make sure that you are thoroughly comfortable with the basics of the language before you begin. This experience will both save you both time and frustration in the future, and you’re less likely to have to come back to review basic topics in the future.


Practice makes perfect. Let me repeat: practice makes perfect. The only way you can become a successful Java programmer is if you practice. Anyone can read books hundreds of pages long about Java, but when they are presented with a laptop, will they be able to write Java code? This concept of experience being invaluable is comparable to learning to ride a bicycle. You can read as much as you want on the physics of riding a bike, but that does not necessarily mean you’ll be able to ride a bike on the first try. You need hands-on experience with the subject you’re learning to drive the fundamentals into long-term memory.

Another advantage of writing code is that it will force you to figure out things on your own. You might encounter problems in your code that you didn’t expect, and you’ll have to do your research to find solutions to those problems. Researching lets you learn more about Java, and it’ll train you to find answers first before asking for help. However, this doesn’t mean you shouldn’t ask for help at all!

I suggest that as practice, you strive to create complete projects. Building your own projects will give you the self-confidence and tech-skills that you need in the industry. Sure, a hello world program might be cool the first time, but you need to move past that into more advanced topics. Also, as a bonus, you can upload the projects you created to your portfolio, which demonstrates to future employers that you’re a self-taught programmer that never stops learning.

Read about Java

You’ve already gotten a head start by reading this article! Reading about Java and programming can only benefit you. The internet is full of blogs and websites that contain interesting articles about Java programming. The internet will be with no question an invaluable resource to you when you learn Java.

You can also join some communities such as forums where you can talk to other programmers about troubleshooting your code or some concepts that confuse you.

Your knowledge and experience are your most important day-to-day professional assets. Unfortunately, they’re expiring assets. Your knowledge becomes out of date as new techniques, languages, and environments are developed.

The Pragmatic Programmer

The truth is, learning isn’t something that you can do once and reap the benefits forever. Learning is constant, and one way or another, you’ll have to keep learning to stay relevant in your field. Some people might see this as an absolute win (because they just love learning), and some might be burdened by the fact that they have to keep learning. No matter how you feel about learning, the most important thing is to acknowledge how much you have left to learn. Many computer programmers have an arrogant “I know it all” bravado, but with this attitude, you will give yourself no room for improvement.

Be motivated

It’s essential to stay motivated to learn Java. If you’re forcing information into your brain, you’re less likely to retain that information. Furthermore, if you start losing motivation, you’re more likely to give up, then all of your efforts will be wasted.

It’s easy to start motivated. People tend to sign up for online courses, but they don’t always finish them to the end. You probably will start optimistic and eager. You’ll probably spend hours for the first few weeks studying the material, and accomplish a lot.

However, after a couple of months, the late nights and lack of sleep will start catching up and weighing you down. You’ll feel like you aren’t making any progress, and become incredibly discouraged.

Finally, you decide to take a break for a while. Before you know it, it’s been a year since you wrote your last line of Java code.

I am speaking from experience right now.

Learning something on your own is challenging because you have to generate your own motivation for learning. In school, you are motivated to get good grades and earn a degree. When your company is training you with new skills, you have the motivation to move up higher in that company. If this is the first time you are learning to code, you need to make sure that you keep learning and don’t give up.

To keep learning, you need to make sure that you have an end goal in mind. Of course, this goal should be realistic. It could be to find a full-time job as a Java developer to support your family financially. It could also be to work remotely. Or, you could even aim to work for yourself without having a boss. Something like “finish reading Thinking in Java by the end of this year” would be a reasonable small-term goal, but you need a long-term goal. Something to give you a reason to get out of bed in the morning and continue to learn Java. A while back I wrote an article defining my computer programming goals for this year. You can give it a read here after this one to see some examples of programming goals.

You should write this goal down in a place you’ll see it often. This goal will help you remind you why you’re giving up your free time, and how this investment in learning will pay off.

Now, for pretty much this entire article, I’ve been talking about how to keep learning. But it is also essential to know when to take a break and rest. You need to avoid burnout. If you stay up until 1 AM coding for a day, the next day, you won’t want to get up and do anything, and that day will be wasted.

Make sure that you carve out time to work, as well as to rest. Think about how this could help you in the long term.

Never stop learning

This section ties back to the previous part about staying motivated, but I figured that I could branch off and delve deeper into that aspect.

Let’s say that everything is going according to plan, and you’re on top of learning Java. You’re reading the latest Java books, staying on top of the latest Java blogs, and starting to become a resource for others trying to learn Java.

Then one day, someone comes up to you and asks you a Java question. And you don’t have the faintest idea of how to answer. You freely admit that you don’t know what the answer is. (Don’t try to make up an answer!)

When you fail to answer a question or solve a challenge that you were sure you would be able to solve, you may sometimes feel that you’re not good enough. You might think that you’re a faker, and stop being confident in your skills.

Someone might interpret this as a sign that they are not a good programmer. However, I would understand it as a reminder of how much I still have to learn, and it would motivate me to learn more. You should too.

You have to understand that you’re never going to learn every single thing there is to know about coding. Nobody currently on earth knows every single thing. Most programmers aim to become masters in one programming language, and they are only moderately familiar with others.

So what is my point here?

My point is, once you’ve become pretty good with Java, and you are good at the language, don’t stop there. If there is a question you cannot answer, take it as a personal mission to find the answer. If you can’t find the answer yourself, find someone who can. Your knowledge will only get bigger and bigger. But don’t get discouraged because you can’t answer one question.

Resources to Learn Java

Now that you have an idea of what your journey to learn Java will look like, take a look at these resources to learn Java.


Books are a great starting point for any beginner programmer. When you combine them with articles and tutorials, you can develop a rock-solid Java basics foundation. Below, I’m providing links to Amazon for some Java books I recommend. However, you can find online versions of these books for free with a little bit of searching. I personally prefer physical books because I like being able to flip back and forth physically within the pages, but you can definitely get the books for free online and still learn the information.

  • Head First Java, 2nd Edition – Many readers claim that this book is outdated as it covers nothing beyond Java 5.0. However, I believe that it can still provide some value to its readers. Head First Java helpfully provides effective analogies to real life that relate to the Java programming concepts. It covers the object-oriented programming concepts in-depth, and in my opinion, it explains them very well.
  • Java All-in-One For Dummies – This is the book I personally used as a reference to learn Java. In my opinion, it is one of the most in-depth Java books out there. It covers concepts such as object-oriented programming, web programming, swing, working with files and databases, and creating games. There is a wealth of information in this book. However, they define their curly brackets in this form:
    public static void main(String[] args)

    Instead of putting them all in one line. Why they do this is a mystery to me, as it only takes up more space and doesn’t make the code easier to read at all. However, don’t let this small inconvenience turn you away from what is otherwise a great book.
  • Java: The Complete Reference – I would refer to this book as a users-manual for Java. Herbert Schildt is a great programming author and is one of the best in his field. However, in my opinion, some of the examples are less comprehensible than other examples found in other books. Therefore, I would recommend saving this book until you are familiar with Java and need help with concepts like collections, app execution, or concurrency.

Here’s a nice blog post on freeCodeCamp that outlines some more great Java books.

Online Courses

Online courses can also help you learn Java because they simulate person-to-person teaching.

However, when taking online courses you have to remember to digest and understand the information, instead of just watching the videos. If you just watch the videos to the end without doing anything, you may feel good, but you won’t have learned anything. To learn from videos, you can take notes, rewatch important sections, try writing code using skills learned from a specific video, etc. Put your phone on do not disturb, remove all distractions, and stay focused on the course you’re watching. Doing this for even short periods of time will be more useful than sloppily watching through the course without paying attention.

  • [Udemy] Java Programming Masterclass for Software Developers – I would say that this online course is the equivalent for the book Java All-in-One For Dummies, which I covered above. Not only does it teach core Java skills, but it also teaches advanced topics as well. Its price is a little hefty at $149.99, but we all know Udemy has a sale every other day for cheaper courses. In fact, at the time of writing this course is currently $9.99 only, which is a 93% discount. This course is a bestseller on Udemy and is definitely worth being purchased at the discount rate.
  • [Codecademy] Learn Java – Of course, we can’t forget Codecademy. Codecademy provides an interactive online Java course that teaches you the basics of Java. Unlike some of the other courses though, it doesn’t delve much deeper into advanced topics. Their free trial is worth being checked out. You can decide whether you’d like to pay for Codecademy after the trial. Be aware that the PRO plan is $20 a month (at the time of writing), so this is definitely a sizable investment.
  • [Coursera] Java Programming and Software Engineering Fundamentals Specialization – This is a course offered by Duke University on Coursera. It consists of five different courses, each diving deeper into the Java ecosystem. Although I have never enrolled in this course, I would recommend it for learners that are serious about learning Java. There are hands-on projects, practice quizzes, and assignments with peer feedback. As a bonus, you will receive a course certificate after completing this course,


There are many websites run by communities and individuals online that provide a wealth of free Java resources. From forums to blogs, people all across the internet are talking about Java.

  • StackOverflow – This website is a big one not just for Java, but for the entire programming community. StackOverflow is a forum where programmers can ask questions, and other programmers will rush to answer them. If you have a question while learning Java, you’re likely to find an answer already posted here. If there is no answer posted, you can ask the question on the site yourself and you’ll get an answer back quite swiftly.
  • GeeksForGeeks – This is a website that provides many computer science articles related to Java. You’ll likely stumble across this website when searching online for a Java problem. There are some really good articles about algorithms and dynamic programming here, so if I were you I would definitely check it out.
  • The Java API Documentation – This website contains the API documentation for Java, written by the developers at Oracle themselves. It contains every single class that comes with Java and details on how to use those classes. The documentation is not a website you’ll likely be browsing often in your free time, but it might be helpful when trying to remember something about Java’s API.
  • CodeRanch – CodeRanch is a friendly forum for programming beginners. You can ask questions about writing code, planning algorithms, or becoming certified there. Unlike other websites like StackOverflow, CodeRanch encourages discussion in the forums, so you’re more likely to meet friendlier people there. The only downside to this website I would say that its design is a little rustic, and looks a bit outdated.
  • GitHub – GitHub is a website where you can host repositories managed by the version control system Git. You can upload the projects you’ve created here to build a portfolio, check out other open-source projects, and even contribute to open source projects. The world’s biggest and most popular open-source projects are hosted on GitHub. GitHub is a well-established website in the programmer ecosystem that almost every developer utilizes.
  • Coding with Jaeheon Shim – Of course, we can’t forget about the website you’re currently reading this article on. Coding with Jaeheon Shim is a blog for both programmer newbies and seasoned developers alike. On it, I share some of the projects I’ve created, how to get into new technologies, and problem-solving with algorithms.

I hope that the resources I provide above will help you learn Java in a fun way. Many of these resources are free, but some of the online courses can be expensive. However, with a bit of further research, you can find out what courses are worth your investment, and you will reap the benefits of learning from those courses.

Most Importantly – Practice!

Practice leads to professionalism. The only way for you to become a good Java developer is to practice writing code. Even just coding for 20 minutes every day will produce measurable improvements.

The more you practice, the more you will discover. It’s impossible for any course on the internet to cover every single thing there is about Java. Practicing will help you discover some of the details of the Java programming language. Furthermore, looking at Java code every day will make it seem natural to your eyes, and you will be able to interpret it easily, almost as if you are reading plain English.

To practice Java programming, aim to solve practical problems. These problems will give you an idea of what it is like to be a Java developer, and prepare you for the problems in the real world. One way to do this is to build projects, but don’t start out too ambitious. When you first start out, finishing small projects in a small timeframe will provide you instant gratification and motivation to continue further. When you’re more experienced with Java, you can embark on more challenging projects. I’ve included some ideas for Java projects below.

Project Ideas

  • Encryption algorithm system
  • Simple chatbot
  • A text adventure game
  • A vigenere cipher
  • Fibonacci Sequence
  • Unit Converter (temp, currency, volume, mass and more)
  • Tax Calculator
  • Factorial Finder

This website will provide you with dozens of more coding projects, along with some solutions.

Final Words

Thank you for staying with me throughout this lengthy article. At this point, you should have a good idea of how you can stay motivated through the journey to learn Java. Before you embark, I want to leave you with some reminders and final words.

Make a schedule. Setting aside time every day will allow you to stay more focused on your Java studies. It’ll allow you to develop a repetitive habit of studying, and will benefit you greatly in the long run.

Start with the basics. If you’re new to Java or programming itself, I strongly recommend you start with the basics. As I described multiple times in my article, having a strong foundation will allow you to build upon your skills quicker.

Code every day. Coding is the only way to get really good at coding. If you read a bunch of music theory books and watch many videos on how to play the piano, that doesn’t mean that the first time you sit on the piano bench you’ll be able to play the piano perfectly. Practice develops long-term memory skills in Java, and practicing will make you able to spot out bugs quicker and write programs quicker.

Join forums and subscribe to blogs. Make the most of these free resources! Waking up to a newsletter from your favorite programming blog will already get you started on studying Java for that day. These websites are mostly free, so why not use them as much as you can?

Continue learning every day, even after you succeed. When you become a seasoned Java developer (when not if), you need to keep refreshing those skills in your memory. If you forget about coding and sit around for a year, you’ll find yourself relearning most of the topics which you have already learned, which is a waste of effort and time. Make Java a fun thing that you are passionate about, and you’ll have no trouble learning consistently.

Thank you for reading my article on how to learn Java. I wish you the very best of luck on learning Java and hope that you’ll come back to this website one day an experienced Java developer. Don’t forget that I and the programming community are rooting for you, and most importantly, don’t forget to have fun.

If you found this article helpful to your education, share it with others so that they can experience the information as well. If you want to stay updated on computer programming, be sure to subscribe to this blog!

Jaeheon Shim