Introduction
- Evolution of Java
- Object-Oriented Programming Structure
- Client-side Programming & its requirements
- Platform Independence & Portability
- Security
- Relation between JVM, JRE, and JDK
- Description of a Simple Java Program
- Introduction to JAR format
- Naming Conventions
- Data types & Type casting
Classes and Objects
- Defining attributes and methods
- Implementing data encapsulation
- Relation between objects and reference variables
- Constructor and Anonymous block
- Method Overloading
- Static Data members, Block, and methods
Memory Structure
- Stack
- Heap
- Class & Method area
Class loading & Execution flow
- Static vs Dynamic Class loading
- Implicit vs Explicit Class loading
- Sequence of operations performed at the time of class loading
Argument Passing Mechanism
- Passing primitive arguments
- Passing objects
- Wrapper Classes & their use
this keyword
- Referencing instance members
- Intra-class Constructor chaining
- Method Chaining
Inheritance & Code reusability
- Extending classes for code reusability
- Usage of super keyword
- Method Overriding
- Object class and its roles
Inheritance & Runtime polymorphism
- Static & Dynamic binding
- Inheritance and Is-A relation
- Runtime polymorphism and generalization
- Abstract classes & methods
- final keyword
Interfaces and role-based inheritance
- Difference between Feature & Role-based Inheritance
- Difference between Static & Dynamic class Environment
- Difference between classes & interfaces
- Use of interfaces in real scenarios
Implementing Has-A relation
- Difference between Aggregation & Composition
- Nested classes and their role
- Inner classes
- Anonymous Inner classes
Package & Scopes
- Need for packages
- Associating classes with packages
- Understanding Classpath environment variable
- import keyword and feature of static import
- public, protected, private & default scope
- Private Inheritance and its use
- Example of private inheritance
Exception Handling
- Difference between exception and error
- Exception Handling & Robustness
- Common Exceptions and Errors
- Try and catch block
- Exception handlers & importance of their order
- throw keyword and its usages
- Checked and Unchecked Exceptions
- Role of finally
- Creating User-defined Exceptions
MultiThreading
- Multitasking and Multithreading
- Thread-based execution model
- Relation between Runnable interface and Thread class
- States of Thread
- Implementing User threads
- Thread synchronization & mutual exclusivity
- Inter-thread communication and Thread scheduling
- Understanding and using Monitor
- Interrupting Threads
- Thread group and its use
- Daemon Threads and their use
Input Output Streams
- Streams & their advantages over conventional input-output
- Commonly used byte-oriented streams
- Commonly used character-oriented streams
- Reading & writing data from different streams
- Redirecting Standard input & output streams
- Serialization
- Use of transient keyword
- Role of serialVersionUID
- File class and File System interaction
- Scanner class
Networking
- InetAddress class and Factory Design Pattern
- Understanding socket and port
- TCP/IP based networking using Socket & Server Socket
- UDP-based networking using DatagramSocket and DatagramPacket
- HTTP-based networking using URL and URLConnection
Reflection
- Understanding object representation of classes
- Loading classes dynamically
- Instantiating classes indirectly
- Obtaining information about classes dynamically
- Invoking methods indirectly
- Referencing data members indirectly
- Overriding access policy and referencing private members
Collection Framework
- Role and Importance
- Use of List & Set-based collections
- Use of Iterator & ListIterator
- Use of Maps
- Searching elements in List, Hash, and Tree-based collections
- Role of equals and hashCode() methods
- Role of Comparable and Comparator Interfaces
- Thread safety and Vector
- Difference between Enumeration and Iterator
- Type safety and Generics
- Common algorithms and Collections class
- Using Properties class for managing properties files