How to learn Java programming?

Being a Java engineer, I’ve often been asked what’s a good way of learning Java programming? Also, from a career development perspective, I was thinking how I would go about improving my Java and broader programming skills.

What’s the objective?

I think its useful to define some objectives to help target the learning. I think the ultimate goal would be to find a Java programming job. But along the way, it’d be good to develop solid Java skills.


  1. Learn Core java and increase proficiency
  2. Be confident thinking & programming in Java
  3. Know later versions of Java, eg Java 11, latest Long Term Support (LTS) version
  4. Get to an Intermediate level of Java

Job focussed

  1. Be familiar with Java Test Driven Development (TDD), for improved code quality. Learn about unit tests, integration tests, etc.
  2. Learn a framework (eg Spring) to see how frameworks speed up programming
  3. Learn how to use a build tool (eg Gradle) to easier manage dependencies and build cycle
  4. Write an App to apply knowledge. Put on github for public viewing
  5. Write clean code
  6. Get a Java job

Whats the approach?

  1. Use a good Integrated Development Environment (IDE) and setup your programming environment
    • I like Intellij
    • make sure you can write a ‘Hello World‘ program
  2. Depending on your level: start by reading a good book or doing a good course / watch video
    • start with fundamentals (core java), then syntax, then idioms
    • make sure the book / course has good exercises for each section so you can test your understanding
    • don’t worry about frameworks initially. Start learning the language
  3. As your knowledge grows, keep on coding and thinking in that language
  4. Try to get to an Intermediate level by reading ‘Effective Java‘ and learning Java concurrency
  5. Learn about Java Test Driven Development (TDD). I appreciate colleagues that write tests to improve code quality
  6. Learn a framework (eg Spring)
  7. Write a Spring Boot Web App in TDD fashion
  8. Do Java tests and practice interview questions
  9. Apply for Java jobs (good luck!)
  10. Contribute to Open Source projects and help the community

Beginner to Intermediate books

  • Java: A Step-by-Step Guide for Absolute Beginners (Bell, 2019)
  • Beginning Programming with Java For Dummies 5th Ed (Burd, 2017)
  • Learn Java in One Day and Learn It Well (Chan, 2016)
  • Thinking in Java 4th Ed (Eckel, 2006)
  • Core Java Volume 1 – Fundamentals, 11th Ed (Horstmann, 2018): updated to Java SE 9, 10, 11
  • Core Java SE 9 for the Impatient 2nd Ed (Horstmann, 2017)
  • Head First Java 2nd Ed (Sierra, Bates, 2005): good but dated, only up to Java SE 5
  • Test Driven: TDD and Acceptance TDD for Java Developers (Koskela, 2007)

Intermediate to Advance books

  • Effective Java 3rd Ed (Bloch, 2017): updated to Java SE 7, 8, 9
  • Java Concurrency in Practise 1st Ed (Goetz, 2006)
  • Clean Code: A Handbook of Agile Software Craftsmanship 1st Ed (Martin, 2008)
  • Java Performance: The Definitive Guide 1st Ed (Oaks, 2014): garbage collection, JVM, performance tuning
  • Reactive Programming with RxJava (Nurkiewicz, 2016)

What is the Java Programming Language?

Java is a programming language that is strongly typed, Object Oriented and imperative. It has a philosophy of Write Once, Run Anywhere (WORA).


  1. It must be simple, object-oriented, and familiar.
  2. It must be robust and secure.
  3. It must be architecture-neutral and portable.
  4. It must execute with high performance.
  5. It must be interpreted, threaded, and dynamic.


  • robust & standard for enterprise computing
  • good performance, multi threaded
  • fewer security risks
  • platform independent (WORA)
  • OO programming (improved over procedural programming)
  • very popular: lots of java engineers, and lots of java jobs
  • big and mature community, lots of open source libraries


  • paid commercial license
  • large memory footprint
  • verbose (compared to Kotlin)
  • no functional programming
  • desktop is far from native look & feel

8 Replies to “How to learn Java programming?”

  1. I am really impressed with your writing skills as well as with the layout on your weblog.
    Is this a paid theme or did you modify it yourself? Either way keep up the nice quality writing, it’s
    rare to see a nice blog like this one these days.

  2. Greetings! This is my first visit to your blog!
    We are a collection of volunteers and starting a new project
    in a community in the same niche. Your blog provided us beneficial information to work
    on. You have done a wonderful job!

  3. My brother recommended I may like this web site. He used to be totally right.
    This publish actually made my day. You cann’t believe just how
    a lot time I had spent for this info! Thank you!

Leave a Reply

Your email address will not be published. Required fields are marked *