Below is a roadmap of topics to learn for absolute beginners to become proficient in general programming in Java.
Before starting programming with Java, there are some concepts to understand:
- Object Oriented Programming concepts - without trying to write any code.
- Classes and Objects.
- 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 post to learn principles of OOP.
- 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.
- Primitive Data types
- Variables and Constants
- Blocks and variable scope.
- Flow control - if, else, switch, for, while, do-while, break, continue, return.
- Arrays and Strings.
- Classes and Objects
- Constructors, methods, and fields.
- Method overloading and Constructor overloading - why and how.
- Access modifiers - public, private, protected and default. (contd.)
finalkeywords - 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
- 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.
- Annotations - start using @ Override, @ SuppressWarnings, @ Deprecated and those used in documentation.
- Type casting - Implicit/ Explicit and how each of them works
- Inner and Anonymous classes.
- Math and BigInteger classes.
- Error vs Exception.
- Checked vs Unchecked exceptions.
- User defined exceptions.
- Date/Time APIs
- Functional interfaces, Streams and Lambdas.
- Understand each method of Object class.
- equals() and hashCode() - the need for them and how to implement them.
- what they are and why they are useful.
- define a generic class. E.g. implement a linked list using generics.
- Collections package
- List, Set, Map
- Their use cases.
- Their implementations and the differences between them.
- When to use which implementation.
- Comparator and Comparable.
- Threads and Thread pools.
- Synchronization and locks.
- Thread safety and concurrency.
- Defining and using your own thread classes.
Websites to practice Java
Online resources to learn Java
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.