Java Academy icon

Java Academy

JAVABackendWebMobileEnterpriseBeginnerCloudDatabaseAndroidDesktopNetwork

Become proficient in Java programming and develop powerful applications with Java Academy.

🤖 AI-Powered
Course Overview

Unlock your potential in the world of software development by mastering Java, one of the most enduring, versatile, and in-demand programming languages globally. From powering enterprise-grade applications and Android mobile apps to driving big data solutions and cloud services, Java's "Write Once, Run Anywhere" (WORA) philosophy ensures your skills are universally applicable. CoddyKit offers a comprehensive Java learning path, designed to take you from absolute beginner to a proficient developer capable of building robust, scalable applications. Dive into object-oriented programming, explore advanced data structures, conquer concurrency, and even kickstart your journey into modern frameworks like Spring Boot. Whether you're aiming for a career in backend development, mobile app creation, or simply want to build a strong foundation in computer science, our expert-crafted mini-courses provide a flexible, mobile-friendly learning experience tailored for success. Start your Java adventure today and join a thriving global community of developers!

Java Course Curriculum

1. Introduction to Java (Level: A1)

Embark on your journey into the world of Java programming. This foundational mini-course provides a comprehensive overview of Java, a high-level, object-oriented language that has been a cornerstone of software development since 1995. Discover its core principles, including its renowned "Write Once, Run Anywhere" (WORA) capability, which allows Java code to run seamlessly across diverse platforms thanks to the Java Virtual Machine (JVM). You'll learn why Java is a top choice for building everything from enterprise systems and mobile applications to IoT devices and databases, appreciating its user-friendly, English-like syntax and support for both object-oriented and functional programming paradigms. Understand the power of multithreading for interactive applications and the continuous evolution of Java supported by its strong, secure, and active community.

Lessons:

  • Introduction – Get acquainted with Java's history, philosophy, and vast application landscape.

2. Hello Java & IDE Setup (Level: A1)

Get ready to write your first lines of Java code! This essential mini-course demystifies what programming entails, explains how Java executes code on the JVM, and guides you through setting up your development environment. You'll gain a clear understanding of the tools necessary to begin your Java development journey, preparing you for seamless installation and your very first program.

Lessons:

  • Introduction to Programming – Explore core programming concepts, Java's significant role in the software industry, and the fundamental compile–run cycle.
  • Installing JDK & IDE – Step-by-step instructions to install the Java Development Kit (JDK), configure crucial environment variables like JAVA_HOME and PATH, verify installation versions, and set up an Integrated Development Environment (IDE) to streamline your coding.
  • Writing First Program – Create a minimal Java application, understand the main method, print output to the console, and successfully compile and run your very first Java program.

3. Hello Java (Level: A1)

Delve into the foundational concepts of Object-Oriented Programming (OOP) in Java. This course introduces you to crucial ideas like class definition, understanding attributes (data), and defining behaviors (methods), setting the stage for more complex OOP concepts.

Lessons:

  • Hello Java – A practical introduction to creating simple classes and understanding their basic components.

4. Variables & Expressions Essentials (Level: A1)

Master the fundamental building blocks of any Java program: variables and expressions. This mini-course covers primitive data types, how to declare and assign values, print variable contents, and the basics of numeric expressions. Each lesson is short, mobile-friendly, and includes runnable examples to solidify your understanding of Java basics.

Lessons:

  • Variables & Data Types – Grasp the concept of variables, explore Java's primitive data types, learn variable declaration and assignment, and practice basic output operations.
  • Input & Expressions – Part 1 – Discover how to read numeric input using the Scanner class, apply arithmetic operators, and understand operator precedence, including the nuances of integer versus floating-point division.
  • Input & Expressions – Part 2 – Learn to safely use nextLine(), trim whitespace from strings, parse numbers from text, and control concatenation versus addition using parentheses.

5. Java Variables (Level: A1)

Understand why Java is a strongly typed language. This course focuses on the concept of variables in Java, explaining how each variable has a specific type that dictates its memory size and arrangement, ensuring type safety and robust code.

Lessons:

  • Variables – A detailed exploration of variable declaration, initialization, and usage in Java.

6. Java Data Types (Level: A1)

Dive deep into one of the most important topics in Java: data types. This course covers basic data types such as integers, booleans, characters, and strings, which are essential for storing and manipulating different kinds of information in your programs.

Lessons:

  • Data Types – Learn about the various primitive and reference data types available in Java and when to use each.

7. Conditional Statements (Level: A1)

Learn how to make decisions in your Java programs, just like in real-world scenarios. This course introduces you to conditional statements, enabling your code to execute different blocks based on specific conditions.

Lessons:

  • Conditional Statements – Explore the fundamental syntax and usage of conditional logic in Java.

8. Conditions I: If/Else Basics (Level: A1)

Master the art of decision-making in Java using if, else if, and else constructs. This mini-course teaches you to build clear boolean expressions with comparison and logical operators, providing short, mobile-friendly lessons with runnable examples to practice Java control flow.

Lessons:

  • If Statements – Basics – Learn to write decision structures using if, else if, and else. Combine comparisons with logical operators (&&, ||, !) and understand how to avoid common coding mistakes.
  • If Statements – Practice & Nested – Gain practical experience with nested if blocks, safely combine multiple conditions, and correctly compare strings using appropriate methods.
  • Common Pitfalls & Debugging Messages – Identify and understand common errors in if/else code, interpret compiler and runtime errors, and effectively use print-based debugging techniques to troubleshoot your programs.

9. Conditions II: Operators & Switch (Level: A1)

Deepen your understanding of Java's decision-making capabilities. This course explores comparison operators (==, !=, <, >, <=, >=) and boolean logic (&&, ||, !). You'll learn about operator precedence, grouping with parentheses, short-circuit behavior, and De Morgan's laws, alongside mastering the switch statement for multi-way branching.

Lessons:

  • Comparison & Logical Operators Deep Dive – Master comparison and logical operators, understand short-circuiting, operator precedence, and De Morgan's laws with practical patterns for effective conditional logic.
  • Switch Statements – Learn to use the switch statement for selecting among many options. Explore case labels, break statements, default cases, valid types for switch, fall-through behavior, and modern arrow switch syntax.
  • Mini Project: Console Calculator – Build a small calculator function using the switch statement without console input. Learn to handle addition, subtraction, multiplication, and division, validate division by zero, and design clean tests for your logic.

11. Loops I: While & Do-While (Level: A1)

Learn the fundamentals of iterative programming with while loops. This mini-course guides you step-by-step through initialization, conditions, updates, and strategies for avoiding infinite loops. Practice small patterns that repeat actions safely, all within mobile-friendly lessons featuring short scenes and runnable code examples for effective Java loops learning.

Lessons:

  • While Loop Basics – Understand the core components of a while loop: initialization, condition, update. Learn common loop patterns and crucial techniques for preventing infinite loops.
  • Do-While & When to Use It – Discover the do-while loop, which guarantees the loop body executes at least once. Learn its syntax, practical use-cases, key differences from the while loop, and common pitfalls.

12. Loops in Java (Level: A1)

Explore how loops are used to iterate parts of a program multiple times. This course introduces you to essential looping constructs like for and while in Java, enabling you to automate repetitive tasks efficiently.

Lessons:

  • Loops – Understand the basic structure and application of different loop types in Java.

13. Loops II: For & Patterns (Level: A1)

Master the powerful for loop in Java, learning how to manage initialization, conditions, and updates concisely in a single line. This course teaches you to write counting loops, perform sums, create simple text patterns, and safely use break and continue statements for fine-grained loop control.

Lessons:

  • For Loop Basics – Understand the for loop syntax, practice counting up and down, accumulate totals, and effectively use break and continue to alter loop flow.
  • Nested For & Text Patterns – Utilize nested for loops to print complex text patterns such as rectangles, right triangles, and small tables, controlling rows with the outer loop and columns with the inner loop.
  • Pattern Practice & Mini-Challenges – Engage in hands-on practice with nested loop patterns, including hollow rectangles, centered pyramids, and diagonals. Tackle mini-challenges step-by-step to reinforce your understanding.

14. Java Operators (Level: A1)

Java provides a rich set of operators to perform various operations on data. This course introduces you to these operators, starting with the familiar arithmetic operators from mathematics, which are crucial for manipulating data in your programs.

Lessons:

  • Operators – Learn about arithmetic, relational, logical, assignment, and other operators in Java and how to use them effectively.

15. Strings in Java (Level: A1)

Understand how to handle text data in Java. This course focuses on the String data type, which is a reference type (not primitive) used to store sequences of characters. You'll learn the fundamentals of using String objects in the Java language.

Lessons:

  • Strings – Explore string declaration, initialization, common string methods, and string immutability.

16. Java Arrays (Level: A1)

Discover the array data structure in Java, used to store a fixed-size collection of values of the same type. This course introduces you to the concept of arrays, a fundamental structure for organizing data in Java programming.

Lessons:

  • Arrays – Learn how to declare, initialize, access elements, and iterate through arrays in Java.

18. Arrays I: 1D Arrays (Level: A1)

Gain a solid understanding of 1D arrays in Java. This mini-course covers what arrays are, how to declare and create them, access and update elements using indexing, utilize the length property, and iterate through arrays efficiently with both traditional for loops and the enhanced for-each loop for Java data structures.

Lessons:

  • Array Basics & Iteration – Understand the fundamentals of arrays: fixed-size, zero-based indexing, creation, initialization, and safe iteration techniques.
  • Searching, Min/Max & Reverse – Implement essential array algorithms such as linear search, computing minimum/maximum values in a single pass, and reversing arrays in-place or by creating a copy.
  • Insert, Delete by Index & Shift – Learn how to insert elements into a new array, delete elements by index using left shifts, and practice crucial bounds checks to prevent errors.

19. Arrays II: 2D Arrays (Level: A1)

Extend your knowledge to 2D arrays in Java. This course teaches you how to declare and create two-dimensional arrays, access their rows and columns, and iterate through them using nested loops. Practice practical applications like computing row/column sums and formatting output for tabular data.

Lessons:

  • 2D Array Basics & Nested Iteration – Understand 2D arrays (including jagged arrays), the distinction between rows and columns, using m.length and m[0].length, and iterating with nested for loops.
  • Jagged Arrays & Table Formatting – Learn to handle jagged 2D arrays (arrays of arrays with varying row lengths) and print aligned tables by calculating per-column widths. This demo builds a sample matrix without relying on Scanner input.
  • Row/Column Maxima, Transpose & Formatting – Safely find row/column maxima (even in jagged arrays) and build matrix transposes for both rectangular and jagged matrices. Practice aligned printing for clear output.
  • 2D Mini-Project: Gradebook – A hands-on mini-project to build a small gradebook using a 2D integer matrix. Print aligned tables, compute per-student and per-assignment averages, identify best performers, curve scores, and output a comprehensive summary report.
  • 2D Utilities as a Helper Class (Refactor) – Refactor repetitive 2D array logic into a reusable helper class. Expose static utility methods for calculating widths, aligned printing, averages, maxima, and transpose operations. Use this helper class in small demonstration programs.
  • 2D Data Cleaning & Validation – Learn to clean and validate 2D integer data, including guarding against null rows, performing bounds checks for indices, clamping out-of-range values, normalizing jagged array shapes, and producing detailed validation reports.

20. Java Modifiers (Level: A1)

Explore Java modifiers, keywords that add specific features or restrictions to your code, such as methods and classes. This course explains how modifiers are categorized and their impact on access control and behavior in Java.

Lessons:

  • Modifiers – Understand public, private, protected, default, static, final, abstract, and other modifiers.

21. Java Methods (Level: A1)

Delve into the details of Java methods, which represent the behavior of objects and are blocks of code designed to perform specific functions. This course provides a comprehensive understanding of how to define and use methods effectively in Java.

Lessons:

  • Java Methods – Learn about method signatures, parameters, return types, and method invocation.

22. Methods I: Basics (Level: A2)

Master the fundamental concepts of Java methods: signatures, the distinction between parameters and arguments, calling conventions, and basic method design. This course features short, focused lessons with runnable examples to build a strong foundation in writing reusable code.

Lessons:

  • Defining Methods & Parameters – Learn how to define methods, correctly interpret method signatures, and pass arguments to parameters effectively.
  • Return Values & Overloading – Understand return statements, the concept of early returns, and method overloading (defining multiple methods with the same name but different parameter counts or types). Includes demonstrations of varargs (variable arguments) and how overload selection works.
  • Scope & Lifetime – Grasp where variables are visible (scope) and how long they exist (lifetime) within blocks, loops, methods, and fields. Explore concepts like variable shadowing and the use of final parameters.

23. Methods II: Design & Reuse (Level: A2)

Learn to design and reuse methods effectively, a cornerstone of clean and maintainable code. This mini-course explains Java's pass-by-value semantics, guides you in choosing between static and instance methods, and teaches you how to decompose complex problems into clean, testable routines for efficient Java code reuse.

Lessons:

  • Pass-by-Value in Java – Understand Java's pass-by-value mechanism: how it applies to primitive types versus object references, the difference between reassignment and mutation, and common pitfalls with arrays and immutability.
  • Static vs Instance Methods – Differentiate between static and instance members, learning when to use each and how their invocation differs in practice.
  • Method Decomposition & Clean Code – Develop skills in breaking down large problems into smaller, well-named methods. Focus on reducing code duplication, preferring pure helper functions, and maintaining simple, manageable parameter lists for improved readability and maintainability.

24. Mini Project: Word Stats (Level: A2)

Apply your Java skills to build a practical word statistics tool. This mini-project involves tokenizing text, normalizing it for consistent counting, performing word counts, and reporting the top results. You'll learn to plan your solution first, then implement it step-by-step, focusing on practical Java application development.

Lessons:

  • Requirements & Design – Define the problem, specify inputs and outputs, identify constraints, and create a simple plan for developing your word statistics tool.
  • Implementation – Translate your design plan into working code: learn to normalize text, tokenize words, count occurrences, and print the top results using small, readable steps.
  • Testing & Extensions – Test your application with various edge cases and implement small improvements. Maintain simple and easy-to-read examples throughout the testing and extension phases.

25. OOP I: Classes & Objects (Level: B1)

Lay the groundwork for Object-Oriented Programming (OOP) in Java. This course introduces the fundamental concepts of classes and objects, teaching you how to create simple classes, instantiate objects from them, and understand their pivotal role in structuring Java applications.

Lessons:

  • Classes & Objects – Understand the core definitions of classes and objects. Learn how to define a class blueprint and create object instances based on that blueprint.
  • Fields, Methods, Constructors – Discover how to add fields to store data, methods to define behavior, and constructors to facilitate easy and consistent object setup upon creation.
  • Encapsulation (getters/setters) – Learn the crucial OOP principle of encapsulation: how to protect internal data using the private access modifier and provide controlled access through public getter and setter methods.

26. OOP II: Practices (Level: B1)

Deepen your understanding of everyday OOP practices in Java. This course covers the effective use of the this keyword, writing readable toString() methods, correctly implementing equals() and hashCode(), and practical tips for building small, maintainable applications.

Lessons:

  • this & toString/equals/hashCode – Learn to use the this keyword to refer to the current object. Practice writing helpful toString() methods for object representation and correctly implement equals() and hashCode() for proper object comparison and collection usage.
  • Object Composition – Understand how to build larger, more complex objects by combining smaller, independent objects. Learn how composition models "has-a" relationships, such as a Car object that "has an" Engine object.
  • Modeling a Domain (UML→Code) – Practice translating a small problem description or a simple UML (Unified Modeling Language) sketch into well-structured Java classes, fields, and methods, bridging design with implementation.

27. Inheritance I (Level: B1)

Explore the fundamental concept of inheritance in Java. This course teaches you how to extend a base class, effectively call superclass constructors, and safely reuse common behavior, a core principle of OOP for building hierarchical structures and promoting code reusability.

Lessons:

  • extends & super – Learn to use the extends keyword to create a subclass that inherits from a base class. Discover how to use super to invoke the parent class's constructor or methods, keeping examples concise and readable.
  • Method Overriding – Understand how subclasses can redefine methods that are already present in their parent class to modify or extend behavior, enabling specialized implementations.
  • Polymorphism & Dynamic Binding – Grasp the powerful OOP concept of polymorphism: "one interface, many implementations." Learn about dynamic binding, where the specific method that executes depends on the actual type of the object at runtime, not just its declared type.

28. Abstractions & Interfaces (Level: B1)

Delve into abstract classes and interfaces in Java, understanding when and how to use them effectively to guide your design and enforce structure in your applications. These concepts are crucial for building flexible and extensible Java systems.

Lessons:

  • Abstract Classes – Learn how to declare abstract classes and abstract methods. Understand why abstract classes cannot be instantiated directly and how subclasses are required to complete their design by implementing abstract methods.
  • Interfaces (intro & contrasts) – Define interfaces, implement them in classes, and clearly contrast interfaces with abstract classes. Explore default methods in interfaces and the power of multiple interface implementation.
  • Up/Down Casting & instanceof – Understand the process of upcasting an object to a parent type. Learn about safe downcasting using the instanceof operator and identify common pitfalls that can lead to ClassCastException.

29. Mini Project: Shape Hierarchy (Level: B1)

Apply your OOP knowledge to design and implement a small shape hierarchy. This mini-project involves creating an abstract base class for shapes, developing concrete shape classes, and demonstrating polymorphic behaviors within your design, showcasing practical Java OOP project skills.

Lessons:

  • Design – Plan your shape hierarchy: choose an abstract base class, list concrete shapes (e.g., Circle, Rectangle), select appropriate fields and methods, and define simple polymorphic operations like calculating area or perimeter.
  • Implementation – Translate your design into working code: define the abstract base class, implement the concrete shape classes, and practice printing results from a mixed list of different shape objects.
  • Polymorphic Behaviors – Utilize polymorphism to perform operations such as printing, sorting, and aggregating mixed shapes. Keep your algorithms concise and easy to read, suitable for mobile learning.

30. Packages and Access Modifiers (Level: A1)

Learn how Java uses access modifiers to control the visibility and accessibility of objects, classes, variables, methods, and constructors. This course explains how these modifiers help in organizing code into packages and enforcing proper encapsulation.

Lessons:

  • Packages and Access Modifiers – Understand public, private, protected, and default access modifiers, and how packages organize your Java code.

31. Object Oriented Java (Level: A1)

Dive into the core of Java as an Object-Oriented language. This lesson explores the fundamental features that enable coding with the object-oriented paradigm, providing an essential understanding of OOP concepts in Java.

Lessons:

  • Object Oriented Java – Introduction to classes, objects, and the basic principles of OOP in Java.

32. Object Oriented Java - 2 (Level: A1)

Continue your exploration of Java's Object-Oriented capabilities. This lesson builds upon the initial concepts, further detailing the features that allow Java to effectively implement the object-oriented paradigm.

Lessons:

  • Object Oriented Java -2 – Deeper dive into encapsulation, abstraction, inheritance, and polymorphism.

33. Java Polymorphism (Level: A1)

Understand polymorphism in Java, a concept derived from real-life scenarios where an object can take on different forms. This course explains how polymorphism allows objects to be treated as instances of their parent class while retaining their specific behaviors, a key aspect of OOP.

Lessons:

  • Polymorphism – Explore method overriding, method overloading, and dynamic method dispatch.

34. Static in Java (Level: A1)

Explore the significant role of the static keyword in Java. This course teaches you that creating an instance with new isn't the only way to work with objects; the static keyword can be applied to variables, methods, blocks, and nested classes to achieve different behaviors and access patterns.

Lessons:

  • Static in Java – Understand static variables, methods, blocks, and nested classes, and their implications.

35. Java Scope (Level: A1)

Grasp the concept of scope in Java, which dictates where the variables you define can be accessed within your program. This course explains how variables are limited to the boundaries of the field, method, or block in which they are defined.

Lessons:

  • Java Scope – Learn about class scope, method scope, block scope, and variable visibility rules.

36. Inheritance in Java (Level: A1)

As an Object-Oriented programming language, Java strongly supports inheritance. This course introduces you to the concept of inheritance, a fundamental OOP feature that allows classes to inherit properties and behaviors from other classes, promoting code reusability and hierarchical relationships.

Lessons:

  • Inheritance in Java – Basic concepts of inheritance, `extends` keyword, and `super` keyword.

37. Inheritance in Java - 2 (Level: A1)

Continue your exploration of inheritance in Java. Building on the initial concepts, this course delves deeper into the nuances and advanced aspects of inheritance, further solidifying your understanding of this crucial OOP paradigm.

Lessons:

  • Inheritance 2 – Advanced topics in inheritance, method overriding, and constructors in inheritance.

38. Java Lambda Expressions (Level: A1)

Discover Lambda Expressions in Java, a powerful feature introduced in Java 8. This course teaches you how to use lambdas to solve problems that were previously handled with anonymous classes, providing a more concise and easier-to-implement syntax for functional programming constructs.

Lessons:

  • Lambda – Understand lambda syntax, functional interfaces, and practical applications of lambdas.

39. Multithreading in Java (Level: A1)

Learn about multithreading in Java, a programming capability that allows your application to execute multiple code blocks concurrently. This course explains how Java enables processing more than one task at a time, enhancing application performance and responsiveness.

Lessons:

  • Multithreading – Explore Threads, Runnable interface, Thread lifecycle, and basic synchronization.

40. Exception Handling in Java (Level: A1)

Understand how to manage failures that may occur during the running of an application, known as exceptions. This course teaches you about Java's robust exception handling mechanism, enabling you to gracefully manage and recover from errors, ensuring application stability.

Lessons:

  • Exceptions – Learn `try`, `catch`, `finally` blocks, and common exception types.

41. Abstraction, Abstract class and Interfaces (Level: A1)

Explore the pervasive concept of abstraction in software development. This course specifically focuses on how abstraction is implemented in Java through abstract classes and interfaces, helping you design flexible and maintainable systems by hiding complex implementation details.

Lessons:

  • Abstraction, Abstract class and Interfaces – Detailed explanation of these core OOP concepts and their usage.

42. Generics in Java (Level: A1)

Learn about Generics in Java, a feature that allows you to write code that works with multiple types, rather than being restricted to a single type. This course introduces the concept of generics, crucial for creating type-safe, reusable, and flexible code in Java.

Lessons:

  • Generics – Understand type parameters, generic classes, generic methods, and type safety.

43. Interfaces & Generics (Level: B2)

Elevate your Java skills by mastering interfaces in practice and delving into the fundamentals of Java generics. This course teaches you how to write safer, more reusable, and highly flexible code, essential for modern Java development.

Lessons:

  • Interfaces in Practice – Learn to use interfaces as types, pass them to methods, and easily swap implementations for flexible code design. Practice small patterns for building adaptable systems.
  • Generics Basics (T, inference) – Understand generic type parameters like T, the compile-time safety they provide, and how the diamond operator (<>) infers types, simplifying generic code.
  • Generic Methods/Classes – Define generic classes with type parameters and write generic methods using <T> before the return type. Learn where Java's type inference significantly aids in writing concise generic code.

44. Collections I: Lists & Sets (Level: B2)

Learn to effectively use Java Lists and Sets, two fundamental components of the Java Collections Framework. This course clarifies when to use each, covers their basic operations, and introduces simple iteration patterns for managing groups of objects.

Lessons:

  • List & Set Overview – Understand the key differences between List and Set (ordering, duplicates) and their everyday operations. Practice adding, removing, searching, and iterating with simple, clear examples.
  • Iterators & Enhanced for – Learn to traverse collections using the Iterator interface and the enhanced for loop. Discover how to safely remove elements during iteration and avoid common pitfalls.
  • Collections Utilities – Explore helpful utility methods from java.util.Collections: sort, reverse, shuffle, min/max, frequency, addAll, and creating unmodifiable views of collections.

45. Collections II: Maps & Algorithms (Level: B2)

Expand your knowledge of the Java Collections Framework by learning to use Maps for key-value lookups. This course also covers frequency counting and introduces simple algorithms that leverage lists and sets, enhancing your ability to process and organize data efficiently.

Lessons:

  • Maps & Frequency Counting – Master Map basics (put(), get(), remove()), iterate through entries, build a word-frequency counter, and explore TreeMap for sorted views of map data.
  • Comparable vs Comparator – Understand the crucial difference between the Comparable interface (for natural ordering) and the Comparator interface (for custom sorting logic). Practice implementing compareTo() and external Comparator classes.
  • Sorting/Searching with Collections – Apply Collections.sort(), Collections.binarySearch(), and custom Comparators for advanced sorting and searching operations on various collection types.

46. Exceptions I: Fundamentals (Level: B2)

Grasp the basics of exception handling in Java. This course introduces you to the fundamental try, catch, and finally blocks with simple examples, enabling you to write more robust and fault-tolerant code by gracefully managing runtime errors.

Lessons:

  • try/catch/finally – Learn the core syntax and usage of try, catch, and finally blocks to safely handle runtime errors in your Java programs.
  • Checked vs Unchecked – Understand the critical distinction between checked and unchecked exceptions in Java, including when and why the compiler enforces handling for certain types of exceptions.
  • Reading Stack Traces – Develop the essential skill of reading and interpreting stack traces to effectively debug Java programs, pinpointing the source of errors.

47. Exceptions II: Practice (Level: B2)

Apply and deepen your exception handling skills in Java. This course covers throwing custom exceptions, using throw statements, and implementing defensive coding practices to create more reliable and maintainable applications.

Lessons:

  • Throwing & Custom Exceptions – Learn how to explicitly throw exceptions using the throw keyword and define your own custom exception classes to handle specific application errors.
  • try-with-resources (AutoCloseable) – Master the try-with-resources statement and the AutoCloseable interface to automatically manage and close resources safely, preventing resource leaks.
  • Defensive Programming – Adopt defensive programming techniques: validate inputs rigorously, avoid null pointer exceptions, and fail early with clear, informative exceptions to prevent unexpected behavior.

48. Files & I/O I (Level: B2)

Learn the modern approach to Java File I/O using the java.nio.file.Path and Files classes. This course teaches you how to create, check for existence, and delete files safely and efficiently in your Java applications.

Lessons:

  • java.nio.file Path/Files – Work with the foundational java.nio.file.Path and Files classes to perform common file system operations: creating, checking existence, and deleting files.
  • Reading/Writing Text Files – Discover how to read from and write to text files using the Files utility class in conjunction with BufferedReader and BufferedWriter for efficient character-based I/O.
  • Buffered Streams – Understand the concept and benefits of buffered streams, specifically BufferedInputStream and BufferedOutputStream, for enhancing the efficiency of byte-based input/output operations.

49. Files & I/O II (Level: B2)

Advance your Java I/O skills by learning about object serialization, which allows you to write objects directly to files and read them back. This course also covers handling simple CSV and JSON data, and explores additional file system utilities.

Lessons:

  • Serialization Basics – Understand the fundamentals of Java serialization: implementing the Serializable interface, and using ObjectOutputStream to write objects and ObjectInputStream to read them back.
  • Simple CSV/JSON Handling – Learn practical techniques for handling simple CSV and JSON data using built-in string operations and, where appropriate, lightweight libraries for parsing.
  • File Walking & Utilities – Explore advanced java.nio utilities for navigating file systems: walking directories recursively, listing files, and performing robust file copy and move operations.

50. Mini Project: Log Analyzer (Level: B2)

Build a practical Log Analyzer to read, parse, and summarize log files. This mini-project consolidates your file I/O and string processing skills, providing a hands-on experience in developing a utility for common software development tasks.

Lessons:

  • Design – Outline the design for your log analyzer: define requirements, specify inputs and outputs, and sketch out the basic architecture and components.
  • Implementation – Implement the core logic of the log analyzer: open log files, read lines efficiently, count specific error patterns or events, and summarize the results.
  • Reporting – Develop the reporting functionality for the Log Analyzer: present counts of different log levels or event types and generate simple, clear summaries of the analyzed data.

51. Lambdas & Functional Interfaces (Level: C1)

Master Java lambdas and functional interfaces, key features for writing concise and expressive code introduced in Java 8. This course will transform your approach to handling events, callbacks, and collections, embracing a more functional style of programming.

Lessons:

  • Lambda Syntax & Scope – Learn the compact syntax of Java lambdas, understand their structure, and grasp the rules governing variable scope within lambda expressions.
  • Functional Interfaces – Dive into built-in functional interfaces like Runnable, Supplier, and Consumer. Learn how to define and use your own custom functional interfaces to enable lambda usage.
  • Method References & Optional – Discover Java method references, a concise way to refer to methods without invoking them. Explore the Optional class for handling potentially null values gracefully and preventing NullPointerExceptions.

52. Streams I: Pipelines (Level: C1)

Learn how to harness the power of Java Streams to process data with elegant and efficient pipelines. This course introduces you to the core concepts of the Streams API, enabling you to perform complex data manipulations in a declarative style.

Lessons:

  • Stream Sources – Discover various sources from which streams can be created: collections, arrays, I/O channels, and custom generators.
  • map/filter/reduce – Master the essential intermediate and terminal stream operations: map() for transformations, filter() for selection, and reduce() for aggregation.
  • Collectors & Grouping – Learn how to collect the results of stream operations using the Collectors class, including common patterns like converting to lists, sets, and grouping data by specific criteria.

53. Streams II: Performance & Pitfalls (Level: C1)

Delve into advanced behaviors of Java Streams, including understanding ordering guarantees, short-circuiting operations, and the basics of parallel streams. This course also highlights common pitfalls to help you write robust and performant stream-based code.

Lessons:

  • Ordering & Short-circuiting – Understand how ordering is maintained (or not) in streams and how short-circuiting terminal operations (like findFirst() or anyMatch()) can optimize performance by stopping early.
  • Parallel Streams Basics – Learn the fundamentals of parallel streams, how to enable them, and when it's appropriate to use them for potentially faster processing of large datasets on multi-core processors.
  • Common Pitfalls – Identify and avoid frequent mistakes when working with streams: reusing streams, hidden side effects within lambda expressions, and issues that arise when combining parallel streams with mutable state.

54. Concurrency I (Level: C1)

Get a solid introduction to Java concurrency, exploring how to manage multiple threads of execution within your applications. This course covers the use of `Threads`, `Executors` for managing thread pools, and basic synchronization techniques to prevent data corruption.

Lessons:

  • Executors & Futures – Learn how to manage threads efficiently using the Executors framework and handle the results of asynchronous computations with Future objects.
  • Tasks & Lifecycles – Understand the different states and lifecycles of concurrent tasks in Java, from creation and submission to execution and termination.

55. Concurrency II (Level: C1)

Dive into advanced Java concurrency topics, focusing on robust synchronization mechanisms, explicit locks, atomic variables, and identifying common concurrency issues. This course equips you with the tools to build highly performant and thread-safe applications.

Lessons:

  • Synchronization & Locks – Master the use of synchronized blocks and methods, and explore explicit Lock interfaces (like ReentrantLock) for fine-grained control over access to shared resources.
  • Atomic & Concurrent Collections – Learn to use atomic variables (e.g., AtomicInteger) for non-blocking thread safety and explore concurrent collections (e.g., ConcurrentHashMap) designed for high-performance multithreaded environments.
  • Common Concurrency Bugs – Identify and understand prevalent concurrency bugs such as race conditions, deadlocks, and visibility issues, and learn strategies to prevent them in your code.

56. Mini Project: Parallel Stats (Level: C1)

Build a practical project that calculates summary statistics in parallel using Java Streams and Concurrency. This mini-project will challenge you to apply your knowledge of functional programming and multithreading to achieve performance gains on data processing tasks.

Lessons:

  • Design – Plan the design of your Parallel Stats project, defining its requirements, identifying the data sources, and outlining the approach for parallel computation.
  • Implementation – Implement the Parallel Stats project, leveraging parallel streams and concurrent data structures to efficiently calculate summary statistics from your dataset.
  • Benchmarks – Conduct performance benchmarks to compare the execution speed of sequential versus parallel streams for calculating statistics, understanding the real-world impact of concurrency.

57. Spring Boot Kickoff (Level: C2)

Kickstart your journey into modern web development with Spring Boot, the leading framework for building robust, production-ready Java applications. This course guides you through project setup, utilizing Spring Boot starters, and running your very first application, paving the way for Java backend development.

Lessons:

  • Project Setup & Starters – Learn how to quickly set up a new Spring Boot project using Spring Initializr and understand the role and benefits of various Spring Boot starters for simplifying dependency management.
  • DTOs & Validation – Discover Data Transfer Objects (DTOs) for handling data between layers and apply validation rules to ensure data integrity in your Spring Boot applications.
  • Mini Project: REST API – Build a small, functional REST API from scratch, incorporating DTOs, a controller for handling requests, and a service layer for business logic.

58. Data & Services (Level: C2)

Deepen your Spring Boot development skills by integrating data persistence. This course teaches you how to use Spring Data JPA for database interaction and work with an embedded H2 database, leveraging repositories for streamlined data access.

Lessons:

  • JPA/H2 & Repositories – Learn to use Spring Data JPA for object-relational mapping, set up an embedded H2 database for development, and implement data repositories for easy CRUD operations.
  • CRUD Service Layers – Implement a robust service layer that encapsulates business logic and provides Create, Read, Update, and Delete (CRUD) operations for your application's entities.
  • Error Handling & Advice – Explore effective error handling patterns in Spring Boot and learn to use @ControllerAdvice to centralize exception handling across your REST API.

59. Testing & Delivery (Level: C2)

Ensure the quality and deployability of your Spring applications. This course covers essential testing strategies using WebTestClient and JUnit, managing configuration with profiles, and packaging your application for deployment, crucial for any professional Java developer.

Lessons:

  • Testing Spring (WebTestClient/JUnit) – Write lightweight and effective integration tests for your Spring controllers using WebTestClient and fundamental JUnit assertions.
  • Config & Profiles – Master configuration management using application.properties (or .yml) and learn how to leverage Spring profiles to adapt your application's behavior for different environments (e.g., development, test, production).
  • Packaging & Running – Understand how to package a Spring Boot application into an executable JAR file and explore various methods for running your application, including command-line execution.

60. Mini Project: REST API (Level: C2)

Consolidate your Spring Boot knowledge by designing, implementing, and thoroughly testing a complete REST API. This comprehensive mini-project integrates all the concepts learned, from data persistence to error handling and testing, preparing you for real-world backend development.

Lessons:

  • Design – Plan the complete structure of your REST API: define endpoints, design data models (entities and DTOs), and map out the overall request/response flow.
  • Implementation – Bring your design to life by implementing the REST API, including defining entities, creating repositories, developing the service layer, and building controllers to handle HTTP requests.
  • Tests & Extensions – Add comprehensive unit and integration tests to ensure the API's correctness and robustness. Explore simple extensions to enhance functionality or improve usability.
  • Final Recap & Review – A final review of the REST API mini-project, covering design decisions, implementation choices, testing strategies, and potential future extensions, solidifying your understanding of full-stack Java development.

What You'll Learn

  • Java Fundamentals: Master core Java syntax, variables, data types, operators, and control flow (conditionals, loops).
  • Object-Oriented Programming (OOP): Deep dive into classes, objects, encapsulation, inheritance, polymorphism, and abstraction.
  • Data Structures & Collections: Learn to use arrays, Lists, Sets, and Maps for efficient data storage and manipulation.
  • Methods & Code Reusability: Design, implement, and reuse methods effectively, understanding scope, parameters, and return values.
  • Exception Handling: Build robust applications by gracefully handling runtime errors with `try-catch` blocks and custom exceptions.
  • File I/O: Read from and write to files, handle text and object serialization, and manage file system operations.
  • Modern Java Features: Explore Lambdas, Functional Interfaces, and the powerful Streams API for declarative data processing.
  • Concurrency & Multithreading: Develop high-performance, responsive applications by understanding threads, executors, and synchronization.
  • Spring Boot Essentials: Get hands-on experience building RESTful APIs, integrating with databases (JPA), and testing applications with the industry-standard Spring Boot framework.
  • Problem-Solving & Project Work: Apply your skills through mini-projects like a Word Stats tool, Shape Hierarchy, Log Analyzer, and a complete Spring Boot REST API.

Who Is This Course For?

This comprehensive Java learning path on CoddyKit is perfect for:

  • Absolute Beginners: No prior programming experience? No problem! Start with the very basics of programming and Java syntax.
  • Aspiring Software Developers: Those looking to build a strong foundation in a versatile language for a career in backend, enterprise, or Android development.
  • Students & Academics: Ideal for computer science students seeking to supplement their coursework with practical, hands-on examples and mobile-friendly lessons.
  • Developers from Other Languages: Programmers familiar with other languages who want to learn Java's unique features and object-oriented paradigm.
  • Anyone Interested in Coding: Individuals curious about how software works and eager to develop valuable coding skills for personal projects or career advancement.

Join CoddyKit today and transform your ambition into expertise. Our interactive, mobile-optimized platform makes learning Java accessible and engaging, allowing you to code on the go and build real-world applications. With a clear path from fundamental concepts to advanced frameworks like Spring Boot, you'll gain the confidence and skills to tackle complex programming challenges. Don't just learn to code – become a proficient Java developer ready to innovate and create. Start your Java journey now!

Start Learning →

How You'll Learn

🎯
Interactive Lessons
Hands-on coding exercises with real-time feedback
🤖
AI Tutor
Get instant help from our AI when you're stuck
💻
Built-in Editor
Write and run code directly in your browser
🏆
Certificate
Earn a certificate when you complete the course
Curriculum

99 Courses

Every course in the Java Academy learning path.

01

Introduction to Java

A13 lessons

Java is a high-level, object-oriented programming language introduced in 1995 by Sun Microsystems. Renowned for its "Write Once, Run Anywhe…

  • Introduction
  • Your First Java Program
  • Variables and Simple Math
02

Scanner and Console Input

A14 lessonsPRO

Scanner and Console Input: Reading Input with Scanner, Reading Numbers and Lines, and more.

  • Reading Input with Scanner
  • Reading Numbers and Lines
  • Validating User Input
  • +1 more
03

Hello Java & IDE Setup

A13 lessonsPRO

Start your Java journey: learn what programming is, how Java runs on the JVM, and what tools you will need next. This mini-course prepares…

  • Introduction to Programming
  • Installing JDK & IDE
  • Writing First Program
04

Variables & Expressions Essentials

A13 lessonsPRO

Master Java variables and expressions: learn primitive types, declarations, assignment, printing values, and the basics of numeric expressi…

  • Variables & Data Types
  • Input & Expressions – Part 1
  • Input & Expressions – Part 2
05

Java Type System & Casting

A24 lessonsPRO

Master Java's type system: primitive vs reference types, widening and narrowing conversions, explicit casting, and the instanceof operator…

  • Primitive vs Reference Types
  • Widening and Narrowing Conversions
  • The instanceof Operator
  • +1 more
06

Java Math & Number Formatting

A24 lessonsPRO

Explore the Math class, BigDecimal for financial precision, NumberFormat for locale-aware output, and practical numeric problem solving in…

  • The Math Class Essentials
  • Integer Arithmetic & Overflow
  • BigDecimal for Financial Calculations
  • +1 more
07

Switch Expressions and Arrow Syntax

A24 lessonsPRO

Switch Expressions and Arrow Syntax: Arrow-Style switch, switch as an Expression, and more.

  • Arrow-Style switch
  • switch as an Expression
  • The yield Keyword
  • +1 more
08

Text Blocks and Multiline Strings

A24 lessonsPRO

Text Blocks and Multiline Strings: Declaring Text Blocks, Indentation and Stripping, and more.

  • Declaring Text Blocks
  • Indentation and Stripping
  • Escapes in Text Blocks
  • +1 more
09

var and Local Type Inference

A24 lessonsPRO

var and Local Type Inference: Using var for Locals, When var Helps Readability, and more.

  • Using var for Locals
  • When var Helps Readability
  • var in for Loops
  • +1 more
10

Wrapper Classes and Autoboxing

A24 lessonsPRO

Wrapper Classes and Autoboxing: Primitive vs Wrapper Types, Autoboxing and Unboxing, and more.

  • Primitive vs Wrapper Types
  • Autoboxing and Unboxing
  • Parsing and Valueof
  • +1 more
11

The Arrays Utility Class

A24 lessonsPRO

The Arrays Utility Class: Arrays.sort and Sorting, Arrays.binarySearch, and more.

  • Arrays.sort and Sorting
  • Arrays.binarySearch
  • Arrays.fill and copyOf
  • +1 more
12

Java Random and Math Utilities

A24 lessonsPRO

Java Random and Math Utilities: The Math Class, Generating Random Numbers, and more.

  • The Math Class
  • Generating Random Numbers
  • Random Ranges and Shuffling
  • +1 more
13

Conditions I: If/Else Basics

A23 lessonsPRO

Make decisions in Java using if, else if, and else. Build clear boolean expressions with comparison and logical operators. Short, mobile-fr…

  • If Statements – Basics
  • If Statements – Practice & Nested
  • Common Pitfalls & Debugging Messages
14

Conditions II: Operators & Switch

A23 lessonsPRO

Dive deeper into comparisons (==, !=, <, >, <=, >=) and boolean logic (&&, ||, !). Learn precedence, grouping with parentheses, short-circu…

  • Comparison & Logical Operators Deep Dive
  • Switch Statements
  • Mini Project: Console Calculator
15

Loops I: While & Do-While

A22 lessonsPRO

Learn while loops step by step: initialization, condition, update, and avoiding infinite loops. Practice small patterns that repeat actions…

  • While Loop Basics
  • Do-While & When to Use It
16

Loops II: For & Patterns

A23 lessonsPRO

Master the for loop: initialization, condition, update in one line. Write counting loops, sums, and simple patterns. Learn break and contin…

  • For Loop Basics
  • Nested For & Text Patterns
  • Pattern Practice & Mini-Challenges
17

Java Operators

A21 lessonPRO

Java offers us many operators to operate on the data we have. With the help of these operators, we can manipulate the data we have. They ar…

  • Operators
18

Strings in Java

A21 lessonPRO

The string data type is used in Java to hold our text data. Strings are reference data types, not primitive in Java. In this course, we wil…

  • Strings
19

Arrays I: 1D Arrays

A23 lessonsPRO

Learn 1D arrays: what they are, how to declare and create them, access and update elements, use length , and iterate with for and enhanced…

  • Array Basics & Iteration
  • Searching, Min/Max & Reverse
  • Insert, Delete by Index & Shift
20

Arrays II: 2D Arrays

A26 lessonsPRO

Learn 2D arrays in Java: declare and create them, access rows and columns, and iterate with nested loops. Practice computing row/column sum…

  • 2D Array Basics & Nested Iteration
  • Jagged Arrays & Table Formatting
  • Row/Column Maxima, Transpose & Formatting
  • +3 more
21

Methods I: Basics

A23 lessonsPRO

Master the foundations of Java methods: signatures, parameters vs. arguments, calling conventions, and basic design. Short, focused lessons…

  • Defining Methods & Parameters
  • Return Values & Overloading
  • Scope & Lifetime
22

Methods II: Design & Reuse

A23 lessonsPRO

Design and reuse methods effectively: understand Java's pass-by-value semantics, choose between static and instance methods, and decompose…

  • Pass-by-Value in Java
  • Static vs Instance Methods
  • Method Decomposition & Clean Code
23

Java Enums

B14 lessonsPRO

Learn how to define and use enums in Java: enum constants, fields, methods, switch expressions with enums, and the EnumSet/EnumMap collecti…

  • Defining and Using Enums
  • Enums with Fields and Methods
  • Switch Expressions with Enums
  • +1 more
24

Java Records & Immutable Data

B14 lessonsPRO

Discover Java Records (Java 16+): creating immutable data carriers, compact constructors, custom methods on records, and when to use record…

  • Introducing Records
  • Compact Constructors and Validation
  • Custom Methods on Records
  • +1 more
25

StringBuilder and String Performance

B14 lessonsPRO

StringBuilder and String Performance: Why Strings Are Immutable, Building Strings with StringBuilder, and more.

  • Why Strings Are Immutable
  • Building Strings with StringBuilder
  • StringBuilder Methods
  • +1 more
26

BigDecimal and BigInteger

B14 lessonsPRO

BigDecimal and BigInteger: Why Not double for Money, Working with BigDecimal, and more.

  • Why Not double for Money
  • Working with BigDecimal
  • Rounding and Scale
  • +1 more
27

The java.time Date and Time API

B14 lessonsPRO

The java.time Date and Time API: LocalDate, LocalTime, LocalDateTime, Instant and Duration, and more.

  • LocalDate, LocalTime, LocalDateTime
  • Instant and Duration
  • Period and Date Arithmetic
  • +1 more
28

Java Optional

B14 lessonsPRO

Use Optional to eliminate NullPointerExceptions: creating, mapping, filtering, and consuming Optionals idiomatically in Java 17+.

  • Why Optional Exists
  • Creating and Inspecting Optionals
  • Transforming Optionals: map and flatMap
  • +1 more
29

Java String Deep Dive

B14 lessonsPRO

Go beyond basic strings: StringBuilder, StringJoiner, regular expressions, String.format, text blocks, and common string algorithm patterns.

  • String Immutability and the String Pool
  • StringBuilder for Efficient Concatenation
  • Text Blocks and String.format
  • +1 more
30

Java Varargs, Overloading & Static Members

B14 lessonsPRO

Master method overloading resolution, varargs parameters, static fields and methods, and utility class design patterns in Java.

  • Method Overloading Rules
  • Varargs Parameters
  • Static Fields and Constants
  • +1 more
31

Java Inner Classes & Anonymous Classes

B14 lessonsPRO

Explore nested class variants: static nested classes, inner classes, local classes, anonymous classes, and when each variant is appropriate.

  • Static Nested Classes
  • Inner Classes and Outer Access
  • Local and Anonymous Classes
  • +1 more
32

Java Iterators & Iterable

B14 lessonsPRO

Implement custom Iterable and Iterator interfaces to make your own data structures compatible with for-each loops and the Java Collections…

  • The Iterable and Iterator Contracts
  • Implementing a Custom Iterator
  • ListIterator and Bidirectional Traversal
  • +1 more
33

Java Comparators & Sorting

B14 lessonsPRO

Sort collections and arrays using Comparable, Comparator, method references, and multi-level sort chains in real-world data scenarios.

  • The Comparable Interface
  • Comparator and Lambda Sorting
  • Multi-Key Sorting with thenComparing
  • +1 more
34

Java LinkedList & Deque

B14 lessonsPRO

Understand LinkedList internals, doubly-linked structure, Deque operations, stack simulation, and when LinkedList outperforms ArrayList.

  • LinkedList Internals
  • Deque Operations: Stack and Queue
  • LinkedList vs ArrayList Trade-offs
  • +1 more
35

Java TreeMap & TreeSet

B14 lessonsPRO

Master sorted collections: TreeMap's NavigableMap operations, TreeSet for unique sorted elements, subMap/headMap/tailMap, and Red-Black tre…

  • TreeMap: Sorted Key-Value Pairs
  • Submaps and Range Views
  • TreeSet and NavigableSet
  • +1 more
36

Java NIO.2 Path & Files API

B14 lessonsPRO

Navigate the modern java.nio.file API: Path creation, Files utility methods, directory walking with walkFileTree, watching directories with…

  • Path: Representing File Locations
  • Files Utility: Read, Write, Copy, Move
  • Walking Directory Trees with Files.walk
  • +1 more
37

Java Serialization & Object Persistence

B14 lessonsPRO

Understand Java serialization: Serializable interface, transient fields, serialVersionUID, custom writeObject/readObject, and modern altern…

  • Java Serialization Basics
  • transient Fields and serialVersionUID
  • Custom Serialization: writeObject and readObject
  • +1 more
38

Sealed Classes and Interfaces

B14 lessonsPRO

Sealed Classes and Interfaces: Declaring Sealed Types, permits Clause, and more.

  • Declaring Sealed Types
  • permits Clause
  • Sealed with Records
  • +1 more
39

Pattern Matching for instanceof and Records

B14 lessonsPRO

Pattern Matching for instanceof and Records: Pattern Matching for instanceof, Record Patterns, and more.

  • Pattern Matching for instanceof
  • Record Patterns
  • Nested Record Patterns
  • +1 more
40

Regular Expressions with Pattern and Matcher

B14 lessonsPRO

Regular Expressions with Pattern and Matcher: Compiling Patterns, Finding and Matching, and more.

  • Compiling Patterns
  • Finding and Matching
  • Capturing Groups
  • +1 more
41

HashMap Internals and equals/hashCode

B14 lessonsPRO

HashMap Internals and equals/hashCode: How HashMap Works, The equals/hashCode Contract, and more.

  • How HashMap Works
  • The equals/hashCode Contract
  • Implementing hashCode
  • +1 more
42

EnumMap, EnumSet and Advanced Enums

B14 lessonsPRO

EnumMap, EnumSet and Advanced Enums: Enums with Fields and Methods, Abstract Methods in Enums, and more.

  • Enums with Fields and Methods
  • Abstract Methods in Enums
  • EnumSet
  • +1 more
43

Logging with SLF4J and Logback

B14 lessonsPRO

Logging with SLF4J and Logback: Why Structured Logging, SLF4J Facade and Loggers, and more.

  • Why Structured Logging
  • SLF4J Facade and Loggers
  • Parameterized Logging
  • +1 more
44

Packages and Access Modifiers

B11 lessonPRO

Java uses access modifiers to limit the access of objects between each other. This can sometimes be at the class level as well as at the va…

  • Packages and Access Modifiers
45

Mini Project: Word Stats

B13 lessonsPRO

Build a small word statistics tool: tokenize text, normalize, count, and report top results. Plan first, implement next.

  • Requirements & Design
  • Implementation
  • Testing & Extensions
46

OOP I: Classes & Objects

B13 lessonsPRO

Learn the basics of classes and objects in Java. Create simple classes, instantiate objects, and understand their role in OOP.

  • Classes & Objects
  • Fields, Methods, Constructors
  • Encapsulation (getters/setters)
47

OOP II: Practices

B13 lessonsPRO

Everyday OOP practices in Java: this keyword, readable toString, correct equals and hashCode, and practical tips for small apps.

  • this & toString/equals/hashCode
  • Object Composition
  • Modeling a Domain (UML→Code)
48

Inheritance I

B13 lessonsPRO

Learn basic inheritance in Java: extend a base class, call super constructors, and reuse common behavior safely.

  • extends & super
  • Method Overriding
  • Polymorphism & Dynamic Binding
49

Abstractions & Interfaces

B13 lessonsPRO

Abstract classes and interfaces in Java: when to use them, how to declare, and how they guide design.

  • Abstract Classes
  • Interfaces (intro & contrasts)
  • Up/Down Casting & instanceof
50

Mini Project: Shape Hierarchy

B13 lessonsPRO

Design and implement a tiny shape hierarchy with an abstract base, concrete shapes, and polymorphic behaviors.

  • Design
  • Implementation
  • Polymorphic Behaviors
51

Collections I: Lists & Sets

B13 lessonsPRO

Learn Java Lists and Sets: when to use each, basic operations, and simple iteration patterns.

  • List & Set Overview
  • Iterators & Enhanced for
  • Collections Utilities
52

Collections II: Maps & Algorithms

B13 lessonsPRO

Learn to use Maps for key→value lookups, frequency counting, and simple algorithms with lists and sets.

  • Maps & Frequency Counting
  • Comparable vs Comparator
  • Sorting/Searching with Collections
53

Exceptions I: Fundamentals

B13 lessonsPRO

Learn the basics of exception handling: try, catch, and finally blocks with simple examples.

  • try/catch/finally
  • Checked vs Unchecked
  • Reading Stack Traces
54

Exceptions II: Practice

B13 lessonsPRO

Apply exception handling with custom exceptions, throw statements, and defensive coding.

  • Throwing & Custom Exceptions
  • try-with-resources (AutoCloseable)
  • Defensive Programming
55

Files & I/O I

B13 lessonsPRO

Learn Java NIO Path and Files classes: creating, checking, and deleting files safely.

  • java.nio.file Path/Files
  • Reading/Writing Text Files
  • Buffered Streams
56

Files & I/O II

B13 lessonsPRO

Learn Java object serialization: writing objects to files and reading them back.

  • Serialization Basics
  • Simple CSV/JSON Handling
  • File Walking & Utilities
57

Mini Project: Log Analyzer

B13 lessonsPRO

Build a simple log analyzer to read, parse, and summarize log files.

  • Design
  • Implementation
  • Reporting
58

Build Tools: Maven and Gradle

B14 lessonsPRO

Build Tools: Maven and Gradle: Maven Project Structure, Maven Plugins and Goals, and more.

  • Maven Project Structure
  • Maven Plugins and Goals
  • Gradle Basics
  • +1 more
59

JDBC and Connection Pooling

B14 lessonsPRO

JDBC and Connection Pooling: JDBC Fundamentals, PreparedStatement, and more.

  • JDBC Fundamentals
  • PreparedStatement
  • Transactions
  • +1 more
60

Java Stream Collectors Deep Dive

B24 lessonsPRO

Go beyond basic Streams: groupingBy, partitioningBy, toMap, counting, summarizingInt, joining, and building custom Collectors for complex a…

  • groupingBy: Classifying Elements
  • partitioningBy and counting
  • toMap, joining, and summarizing
  • +1 more
61

Java Method References

B24 lessonsPRO

Simplify lambda expressions using method references: static, instance, arbitrary-instance, and constructor references with real functional-…

  • Static Method References
  • Instance Method References on a Specific Instance
  • Arbitrary-Instance Method References
  • +1 more
62

Java Design Patterns: Creational

B24 lessonsPRO

Implement the four key creational patterns in Java: Singleton (thread-safe), Factory Method, Abstract Factory, and Builder with fluent APIs.

  • Singleton: Thread-Safe Implementations
  • Factory Method Pattern
  • Abstract Factory for Product Families
  • +1 more
63

Java Design Patterns: Behavioral

B24 lessonsPRO

Master behavioral design patterns in Java: Observer, Strategy, Command, and Template Method with concrete use cases from real applications.

  • Observer Pattern: Event Notification
  • Strategy Pattern: Interchangeable Algorithms
  • Command Pattern: Encapsulating Actions
  • +1 more
64

Functional Interfaces in Depth

B24 lessonsPRO

Functional Interfaces in Depth: Function and BiFunction, Supplier and Consumer, and more.

  • Function and BiFunction
  • Supplier and Consumer
  • Predicate and Composition
  • +1 more
65

Primitive Streams

B24 lessonsPRO

Primitive Streams: IntStream and LongStream, Range and Aggregate Operations, and more.

  • IntStream and LongStream
  • Range and Aggregate Operations
  • Mapping to and from Object Streams
  • +1 more
66

Bounded Wildcards and PECS

B24 lessonsPRO

Bounded Wildcards and PECS: Upper Bounded Wildcards, Lower Bounded Wildcards, and more.

  • Upper Bounded Wildcards
  • Lower Bounded Wildcards
  • The PECS Principle
  • +1 more
67

Interfaces & Generics

B23 lessonsPRO

Interfaces in practice and the basics of Java generics for safer, reusable code.

  • Interfaces in Practice
  • Generics Basics (T, inference)
  • Generic Methods/Classes
68

Java Custom Annotations

B24 lessonsPRO

Define custom annotations, retention policies, targets, and process them at runtime with reflection and at compile time with annotation pro…

  • Defining Annotations: Elements and Defaults
  • Retention Policies and Target Types
  • Runtime Annotation Processing
  • +1 more
69

Advanced Stream Operations & Spliterator

B24 lessonsPRO

Unlock advanced Stream features: flatMap on nested structures, peek for debugging, parallel stream pitfalls, Spliterator internals, and inf…

  • flatMap for Nested Collections
  • Parallel Streams: Performance and Pitfalls
  • Spliterator: Splitting for Parallelism
  • +1 more
70

Spring Boot: Configuration & Dependency Injection

B24 lessonsPRO

Master Spring Boot auto-configuration, application properties, profiles, @Bean, @Component, @Service, @Repository, and constructor injectio…

  • Auto-Configuration and Spring Boot Starters
  • Application Properties and Profiles
  • Bean Wiring: @Component, @Service, @Repository
  • +1 more
71

Spring Data JPA: Entities & Repositories

B24 lessonsPRO

Map Java entities to database tables with JPA annotations, define Spring Data repositories, write JPQL and native queries, and handle relat…

  • Entity Mapping with JPA Annotations
  • Spring Data Repositories and Query Methods
  • One-to-Many and Many-to-Many Relationships
  • +1 more
72

Spring Boot REST API: Validation & Error Handling

B24 lessonsPRO

Build robust REST APIs: Bean Validation with @Valid, custom validators, global exception handling with @ControllerAdvice, and RFC 7807 prob…

  • Bean Validation: @NotNull, @Size, @Pattern
  • Custom Constraint Annotations
  • Global Exception Handling with @ControllerAdvice
  • +1 more
73

Testing with JUnit 5: Parameterized & Integration Tests

B24 lessonsPRO

Go beyond basic unit tests: parameterized tests with @MethodSource, @CsvSource, Testcontainers for database integration, and Spring Boot te…

  • Parameterized Tests with @CsvSource and @MethodSource
  • Mockito Advanced: Argument Captors and Spies
  • Spring Boot Test Slices: @WebMvcTest and @DataJpaTest
  • +1 more
74

Java Security: Hashing, Encryption & JWT

B24 lessonsPRO

Implement security fundamentals in Java: MessageDigest for hashing, AES encryption, HMAC-SHA256, and JWT creation and verification without…

  • Cryptographic Hashing with MessageDigest
  • AES Symmetric Encryption
  • HMAC-SHA256 for Message Integrity
  • +1 more
75

The Java Module System (JPMS)

B24 lessonsPRO

The Java Module System (JPMS): module-info.java, requires and exports, and more.

  • module-info.java
  • requires and exports
  • Services with provides/uses
  • +1 more
76

The Modern HTTP Client

B24 lessonsPRO

The Modern HTTP Client: java.net.http.HttpClient, Async Requests, and more.

  • java.net.http.HttpClient
  • Async Requests
  • Request Bodies and Headers
  • +1 more
77

GraalVM and Native Image

B24 lessonsPRO

GraalVM and Native Image: What Is GraalVM, Building a Native Image, and more.

  • What Is GraalVM
  • Building a Native Image
  • Reflection and Configuration
  • +1 more
78

Lambdas & Functional Interfaces

B23 lessonsPRO

Learn Java lambdas and functional interfaces.

  • Lambda Syntax & Scope
  • Functional Interfaces
  • Method References & Optional
79

Streams I: Pipelines

B23 lessonsPRO

Learn how to use Java Streams to process data with pipelines.

  • Stream Sources
  • map/filter/reduce
  • Collectors & Grouping
80

Spring Boot Kickoff

B23 lessonsPRO

Get started with Spring Boot: setup project, use starters, and run your first app.

  • Project Setup & Starters
  • DTOs & Validation
  • Mini Project: REST API
81

Data & Services

B23 lessonsPRO

Learn how to use Spring Data JPA and H2 database with repositories.

  • JPA/H2 & Repositories
  • CRUD Service Layers
  • Error Handling & Advice
82

Testing & Delivery

B23 lessonsPRO

Testing Spring apps with WebTestClient/JUnit, configuration, and packaging.

  • Testing Spring (WebTestClient/JUnit)
  • Config & Profiles
  • Packaging & Running
83

Mini Project: REST API

B24 lessonsPRO

Design, implement, and test a REST API with Spring Boot.

  • Design
  • Implementation
  • Tests & Extensions
  • +1 more
84

Java ExecutorService & Thread Pools

C14 lessonsPRO

Manage thread life cycles with ExecutorService: fixed, cached, and scheduled thread pools, submitting Callable tasks, and handling Future r…

  • ExecutorService and Thread Pool Types
  • Submitting Tasks: Runnable vs Callable
  • Future and Error Handling
  • +1 more
85

Java Locks & Atomic Variables

C14 lessonsPRO

Go beyond synchronized: ReentrantLock, ReadWriteLock, StampedLock, AtomicInteger, AtomicReference, and lock-free data structure patterns.

  • ReentrantLock vs synchronized
  • ReadWriteLock for Reader-Writer Scenarios
  • Atomic Variables: Lock-Free Updates
  • +1 more
86

Parallel Streams and Performance

C14 lessonsPRO

Parallel Streams and Performance: Creating Parallel Streams, When Parallelism Helps, and more.

  • Creating Parallel Streams
  • When Parallelism Helps
  • Thread Safety and Side Effects
  • +1 more
87

Java Memory Management & Garbage Collection

C14 lessonsPRO

Understand the JVM memory model: heap regions (Young/Old/Metaspace), GC algorithms (G1, ZGC), memory leaks, profiling with JVisualVM, and t…

  • JVM Heap Regions and Object Lifecycle
  • GC Algorithms: Serial, G1, ZGC, Shenandoah
  • Detecting and Fixing Memory Leaks
  • +1 more
88

Java CompletableFuture & Async Pipelines

C14 lessonsPRO

Compose asynchronous computations with CompletableFuture: thenApply, thenCompose, allOf, anyOf, exceptionally, and building non-blocking pi…

  • Creating and Completing CompletableFutures
  • Chaining with thenApply and thenCompose
  • Combining Futures: allOf and anyOf
  • +1 more
89

Java Reflection & Dynamic Proxies

C14 lessonsPRO

Use the Reflection API to inspect and invoke classes at runtime, create dynamic proxies, and understand how frameworks like Spring use refl…

  • Class Inspection with Reflection
  • Invoking Methods and Accessing Fields
  • Dynamic Proxies with InvocationHandler
  • +1 more
90

JVM Internals: Classloading & Bytecode

C14 lessonsPRO

Peek inside the JVM: class loading phases, the bootstrap/extension/application loader hierarchy, bytecode inspection with javap, and JIT co…

  • Class Loading Phases: Load, Link, Initialize
  • ClassLoader Hierarchy and Custom Loaders
  • Inspecting Bytecode with javap
  • +1 more
91

Virtual Threads (Project Loom)

C14 lessonsPRO

Virtual Threads (Project Loom): What Are Virtual Threads, Creating Virtual Threads, and more.

  • What Are Virtual Threads
  • Creating Virtual Threads
  • Platform vs Virtual Threads
  • +1 more
92

Structured Concurrency

C14 lessonsPRO

Structured Concurrency: The Structured Concurrency Model, StructuredTaskScope, and more.

  • The Structured Concurrency Model
  • StructuredTaskScope
  • Shutdown on Failure and Success
  • +1 more
93

Microbenchmarking with JMH

C14 lessonsPRO

Microbenchmarking with JMH: Why JMH, Writing a Benchmark, and more.

  • Why JMH
  • Writing a Benchmark
  • Warmup and Iterations
  • +1 more
94

Java Performance Profiling and Tuning

C14 lessonsPRO

Java Performance Profiling and Tuning: Identifying Bottlenecks, Java Flight Recorder, and more.

  • Identifying Bottlenecks
  • Java Flight Recorder
  • Analyzing with JDK Mission Control
  • +1 more
95

Streams II: Performance & Pitfalls

C13 lessonsPRO

Learn advanced behaviors of Streams including ordering and short-circuiting.

  • Ordering & Short-circuiting
  • Parallel Streams Basics
  • Common Pitfalls
96

Concurrency I

C12 lessonsPRO

Introduction to Java concurrency with Threads, Executors, and synchronization.

  • Executors & Futures
  • Tasks & Lifecycles
97

Concurrency II

C13 lessonsPRO

Advanced concurrency: synchronization, locks, atomics, and common issues.

  • Synchronization & Locks
  • Atomic & Concurrent Collections
  • Common Concurrency Bugs
98

Mini Project: Parallel Stats

C13 lessonsPRO

Build a project that calculates statistics in parallel using streams and concurrency.

  • Design
  • Implementation
  • Benchmarks
99

The Foreign Function and Memory API

C24 lessonsPRO

The Foreign Function and Memory API: Why FFM over JNI, MemorySegment and Arena, and more.

  • Why FFM over JNI
  • MemorySegment and Arena
  • Downcall Handles
  • +1 more

Start Java Academy Now

Join thousands of learners mastering programming with AI-powered lessons.

Get Started Free →Browse All Courses