
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore how Java source code is compiled to bytecode, interpreted to machine code, and run by the Java Virtual Machine, the Java Runtime Environment, and the Java Development Kit.
Explore the Java development kit, vendor options like Oracle JDK and OpenJDK 17, and the course's use of JDK 17. Learn how to install a JDK on your machine.
Install the Java development kit on Windows, verify with javac -version, download the JDK 17 Windows installer, set JAVA_HOME, update PATH, and verify with java -version.
Learn to install the Java development kit on Linux by verifying a JDK, downloading Java 17, extracting to /opt, setting JAVA_HOME and PATH, and verifying with java -version.
Explore integrated development environments, their features like source code editors, syntax highlighting, auto completion, bug checking, build automation, and debuggers, with a focus on IntelliJ idea from Git Brains.
Create a new Java project in IntelliJ IDEA, write the main method to print hello world, then compile and run on the JVM, while learning package and class basics.
Demonstrate how comments in Java explain code and prevent execution. Show single-line, multi-line, and documentation comments, and how they affect console output.
Explore Java data types and variables, distinguishing primitive from non primitive types, wrapper classes, boxing, unboxing, and final and var concepts.
Learn how to convert between primitive data types in Java using widening and narrowing type casting, and the cast operator, ASCII and Unicode mappings.
Explore Java operators, including arithmetic, assignment, relational, boolean, and conditional operators, focusing on binary and unary forms. Learn prefix and postfix increment, modulus, and the ternary operator through practical examples.
Explore how strings work in Java, including literals versus the new keyword, heap and string constant pool storage, and methods like length, indexOf, contains, trim, and equals.
Master arrays in Java by learning how to declare, initialize, access, and iterate one-dimensional arrays of primitive and non-primitive types, compute perimeters, modify elements, and print all elements.
Explore expressions, statements, and blocks in Java: evaluate values from variables and operators, invoke methods, form expression statements, and manage execution flow with control flow, branching, and loops.
Explore the Java if statement and its if-then and if-then-else forms, using boolean expressions to conditionally execute code, including even/odd checks and uppercase string comparisons.
Learn to use Java switch statements with cases, break, and default, understand fall-through and grouping, explore arrow syntax since Java 14, and return values from switch.
Explore while and do-while looping statements in Java, learn how conditions control repeated execution, and compare break and continue with practical console examples.
Explore the for statement in Java, including basic and enhanced forms, with initialization, condition, and update; learn to iterate arrays, sum elements, and use break.
Understand how Java uses classes as blueprints to create objects with state and behavior, using fields, methods, and the new keyword to instantiate cars.
Learn how fields differ from local variables, how static and non static fields work, access via class name, and the role of final constants and default values.
Explore static initialization blocks and instance initialization blocks in Java, including blocks that run once and blocks that run per object, illustrated by a mobile phone app example.
Explore Java methods, including declaration, parameters, return types, method signature, and static context, and see how to define and call instance and static methods in a calendar app.
Define constructors that initialize name and year of birth and match the class name. Explain the default constructor when none exists and overload constructors with parameters.
Explore the this keyword in Java, showing how it refers to the current object to distinguish fields from parameters, invoke constructors, and that it cannot be used in static context.
Master how Java packages organize code, distinguish built-in and user-defined packages, and use imports, static imports, and fully qualified names to manage access and avoid name conflicts.
Learn how Java access modifiers—public, private, default, and protected—limit visibility across packages, classes, and subclasses. See practical examples in two packages showing top-level class rules and method access.
Explore enum classes in Java, a special class for a predefined set of constants, with fields, constructors, values, and methods. See examples like days of the week using ordinal values.
Explore Java record classes, immutable data carriers introduced in JDK 14 and permanent in JDK 16, which reduce boilerplate by auto-generating constructors and accessors, support methods and static helpers.
Explore the core principles of object oriented programming in Java by revisiting classes, objects, methods, and fields, and preview encapsulation, inheritance, polymorphism, and abstraction with Java syntax.
Learn encapsulation in Java, using data hiding with private fields and getter/setter methods to protect class state and ensure uppercase album names in an example music app.
Master composition in object oriented programming, showing how a class contains another to reuse code and hide internals, with a practical album and cover image example.
Explore inheritance in java by extending a superclass to create a subclass, reusing fields and methods, and customizing with new members, as shown with parrot and talking parrot.
Learn the super keyword and constructor chaining in Java, detailing implicit and explicit superclass constructor calls, and using super to access superclass members with a rectangle and square example.
Explore widening and narrowing in Java typecasting with upcasting from dog to animal and downcasting back, and use the instance of operator to safely check types at runtime.
Explore polymorphism in Java, the ability to perform the same action in different ways, enabling code reuse and readability through method overloading (compile time polymorphism) and method overwriting (runtime polymorphism).
Learn method overloading as compile-time polymorphism in Java by using the same name with different signatures. Explore examples where different parameter types or counts produce the same method name.
Learn how method overriding enables subclasses to redefine superclass behavior, driven by dynamic binding and runtime polymorphism, with final and static examples in animal, panda, and lion.
Explore abstraction in java by reducing data types to generic representations, hiding specific implementations, and improving readability while reducing complexity through abstract classes and interfaces.
Abstract classes in Java define a template with an abstract area method that concrete subclasses like circle and square implement, enabling area calculations without instantiating the abstract class.
Explore how interfaces define abstract behavior in Java, enabling multiple implementations like skilled support engineers and Java software engineers to write code, while learning about default, static, and private methods.
Explore how Java handles errors with exceptions, including exception objects, throwing and catching, and the distinction between runtime and checked exceptions, errors, and the exception hierarchy.
Learn how the try-catch-finally statement in Java handles exceptions and prevents abnormal termination. Use try blocks, multiple catch blocks, and a finally block to ensure graceful program completion.
Learn how the throw statement creates exceptions and how the throws clause propagates checked exceptions; distinguish checked vs unchecked exceptions and handle them with try-catch.
Learn how to create and use user defined exceptions in Java by defining custom exceptions, handling them as checked exceptions, and applying them in a bank top up scenario.
Explore concurrency in Java by comparing system and user-defined threads, CPU scheduling, and context switching, and how parallel programming leverages multiple cores for efficient execution.
Synchronizing threads in Java uses monitors to ensure only one thread executes a critical section at a time, demonstrated by two buyers buying books.
Start your journey in Java by building practical Java applications for personal use, work, or business, embracing best practices and using the course resources and Q&A for support.
Master Java Programming from Scratch to Advanced – Hands-on & Beginner-Friendly!
Are you ready to become a Java developer? This course is designed for beginners and aspiring developers who want to master Java programming step by step. Whether you're learning Java for a career switch, job interview, or software development, this course will take you from basic concepts to advanced topics with practical coding exercises.
What You’ll Learn?
Install & Set Up Java Development Kit (JDK) on Windows & Linux
Write Your First Hello World Program in Java
Understand Data Types, Variables, Operators, and Expressions
Master Control Flow Statements (if-else, loops, switch)
Learn Object-Oriented Programming (OOP) – Classes, Objects, Inheritance & Polymorphism
Work with Methods, Constructors, and Access Modifiers
Understand Encapsulation, Abstraction, and Interfaces
Handle Exceptions & Error Handling like a Pro
Learn Multithreading to Create High-Performance Java Applications
Why Take This Course?
Beginner-Friendly – No Prior Experience Needed
Hands-on Learning – Real Java Code Examples & Exercises
Covers Core & Advanced Java – Perfect for Job Interviews
Practical & Engaging – Build Confidence with Real-World Scenarios
Master Java Concepts in Just 7+ Hours
Who Should Take This Course?
Beginners who want to start coding in Java
Students & Professionals preparing for Java job interviews
Aspiring Software Engineers & Developers
Anyone who wants to learn Java for fun, work, or career growth
By the end of this course, you'll be able to write Java programs, understand OOP concepts, and create real-world applications!
Don't miss out! Enroll now and start your Java journey today!