Abhinav Pandey
Abhinav Pandey's Blogs

Abhinav Pandey's Blogs

The Core Java roadmap

The Core Java roadmap

Below is a roadmap of topics to learn for absolute beginners to become proficient in general programming in Java.

Abhinav Pandey's photo
Abhinav Pandey
·Dec 19, 2021·

3 min read

Table of contents

  • The prerequisites
  • First steps into Java programming
  • Learn more about the language
  • Get more object oriented
  • More programming concepts
  • A little more complex stuff
  • Data structures
  • Concurrency
  • Bonus: How to learn all this?

The prerequisites

Before starting programming with Java, there are some concepts to understand:

  1. Object Oriented Programming concepts - without trying to write any code.
    • Abstraction,
    • Inheritance,
    • Polymorphism,
    • Encapsulation,
    • Classes and Objects.
  2. How is Java Write once, run anywhere? - the role of
    • Java Virtual Machine
    • Java Runtime Environment
    • Java Development Kit

You can also refer to my thread to learn principles of OOP.

First steps into Java programming

  1. Install Java - Get the latest JDK from Oracle
  2. Download and install an IDE for Java - Eclipse or IntelliJ Community.
  3. Write a traditional Hello World program in Java.
  4. Run the program using the IDE as well as a command line.

Learn more about the language

  1. Primitive Data types
  2. Variables and Constants
  3. Operators
  4. Blocks and variable scope.
  5. Flow control - if, else, switch, for, while, do-while, break, continue, return.
  6. Arrays and Strings.

Get more object oriented

  1. Classes and Objects
  2. Constructors, methods, and fields.
  3. Method overloading and Constructor overloading - why and how.
  4. this and super.
  5. Access modifiers - public, private, protected and default. (contd.)
  6. static and final keywords - how they apply to classes, methods, and fields.
  7. Inheritance, Interfaces and Abstract classes
  8. Method overriding and method hiding.
  9. Ways to implement polymorphism.
  10. Packages and Imports.
  11. Reading from standard input

More programming concepts

  1. How objects are stored in memory - concept of references and mutability.
  2. String pooling, manipulating strings, StringBuilder and StringBuffer.
  3. Garbage collection
    • how it works and how to control it.
    • finalize() method and its use.

A little more complex stuff

  1. Annotations - start using @ Override, @ SuppressWarnings, @ Deprecated and those used in documentation.
  2. Type casting - Implicit/ Explicit and how each of them works
  3. Enums.
  4. Inner and Anonymous classes.
  5. Math and BigInteger classes.
  6. Exceptions
    • Error vs Exception.
    • Checked vs Unchecked exceptions.
    • try-catch-finally,
    • throw/throws.
    • try-with-resources.
    • User defined exceptions.
  7. Documentation.
  8. Varargs.
  9. Date/Time APIs
  10. Functional interfaces, Streams and Lambdas.

Data structures

  1. Understand each method of Object class.
  2. equals() and hashCode() - the need for them and how to implement them.
  3. Generics
    • what they are and why they are useful.
    • define a generic class. E.g. implement a linked list using generics.
  4. Collections package
    • List, Set, Map
    • Their use cases.
    • Their implementations and the differences between them.
    • When to use which implementation.
  5. Comparator and Comparable.

Concurrency

  1. Threads and Thread pools.
  2. Synchronization and locks.
  3. Thread safety and concurrency.
  4. Defining and using your own thread classes.

Bonus: How to learn all this?

Websites to practice Java

  1. w3resource.com/java-exercises
  2. hackerrank.com/domains/java
  3. codecademy.com/learn/learn-java

Online resources to learn Java

  1. geeksforgeeks.org/java
  2. programiz.com/java-programming
  3. docs.oracle.com/javase/tutorial/java/index...
  4. dev.java/learn

Books to learn Java

  1. Thinking in Java
  2. Head First Java
  3. Core Java Volume 1

Thanks for reading. While learning any programming language, it is best to follow a roadmap and learn each topic from multiple resources.

If you want to connect with me, you can find me on Twitter @abh1navv.

Did you find this article valuable?

Support Abhinav Pandey by becoming a sponsor. Any amount is appreciated!

Learn more about Hashnode Sponsors
 
Share this