The Core Java roadmap
Below is a roadmap of topics to learn for absolute beginners to become proficient in general programming in Java.
The prerequisites
Before starting programming with Java, there are some concepts to understand:
- 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 twitter thread to learn the principles of OOP
First steps into Java programming
- Install Java — Get the latest JDK from Oracle
- Download and install an IDE for Java — Eclipse or IntelliJ Community.
- Write a traditional Hello World program in Java.
- Run the program using the IDE as well as a command line.
Learn more about the language
- Primitive Data types
- Variables and Constants
- Operators
- Blocks and variable scope.
- Flow control — if, else, switch, for, while, do-while, break, continue, return.
- Arrays and Strings.
Get more object oriented
- Classes and Objects
- Constructors, methods, and fields.
- Method overloading and Constructor overloading — why and how.
- Access modifiers — public, private, protected and default. (contd.)
static
andfinal
keywords - how they apply to classes, methods, and fields.- Inheritance, Interfaces and Abstract classes
- Method overriding and method hiding.
- Ways to implement polymorphism.
- Packages and Imports.
- Reading from standard input
More programming concepts
- How objects are stored in memory — concept of references and mutability.
- String pooling, manipulating strings, StringBuilder and StringBuffer.
- Garbage collection
- how it works and how to control it.
- finalize() method and its use.
A little more complex stuff
- Annotations — start using @ Override, @ SuppressWarnings, @ Deprecated and those used in documentation.
- Type casting — Implicit/ Explicit and how each of them works
- Enums.
- Inner and Anonymous classes.
- Math and BigInteger classes.
- 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
- Understand each method of Object class.
- equals() and hashCode() — the need for them and how to implement them.
- 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
- Threads and Thread pools.
- Synchronization and locks.
- Thread safety and concurrency.
- Defining and using your own thread classes.
Bonus: How to learn all this?
Websites to practice Java
- https://www.w3resource.com/java-exercises/
- https://www.hackerrank.com/domains/java
- https://www.codecademy.com/learn/learn-java
Online resources to learn Java
- https://www.geeksforgeeks.org/java/
- https://www.programiz.com/java-programming
- https://docs.oracle.com/javase/tutorial/java/index.html
- https://dev.java/learn/
Books to learn Java
- Thinking in Java
- Head First Java
- 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.