30-Day Java 17 Crash Course
This plan is designed to give you a solid understanding of Java 17 basics and key
features over 30 days. It combines video resources (YouTube, Udemy) with reading
materials (blogs) for a comprehensive learning experience.
Week 1: Java Fundamentals & Setup
● Day 1: Introduction to Java & Environment Setup
○ Understand Java's history, features, and the JVM.
○ Install Java Development Kit (JDK) 17.
○ Set up an Integrated Development Environment (IDE) like IntelliJ IDEA, Eclipse,
or VS Code.
○ Write and run your first Java program ("Hello, World!").
○ Resources:
■ YouTube: "Java 17 Installation" or "Setting up IntelliJ/Eclipse for Java"
tutorials. Look for recent ones (2023-2025).
■ Udemy: Check introductory Java courses, often the first few sections
cover setup. (e.g., "Complete Java Masterclass" - check free previews).
■ Blogs: Oracle Java documentation (Getting Started), Baeldung (Java
basics), GeeksforGeeks (Java environment setup).
● Day 2: Basic Syntax, Data Types, and Variables
○ Learn about Java's basic syntax, comments, and keywords.
○ Understand primitive data types (int, boolean, char, double, etc.) and
non-primitive types (String, Arrays).
○ Declare and use variables.
○ Resources:
■ YouTube: "Java Data Types and Variables" tutorials.
■ Udemy: Sections on variables and data types in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Language Basics), Programiz (Java Data
Types), JavaTpoint (Variables).
● Day 3: Operators and Expressions
○ Learn about arithmetic, relational, logical, assignment, and other operators.
○ Understand operator precedence.
○ Write basic expressions.
○ Resources:
■ YouTube: "Java Operators Tutorial".
■ Udemy: Sections on operators in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Operators), GeeksforGeeks (Java Operators).
● Day 4: Control Flow: if, else, else if, switch
○ Learn how to make decisions in your code using conditional statements.
○ Understand the if, else, and else if structure.
○ Learn about the switch statement (including enhancements in newer Java
versions like switch expressions - cover basics first).
○ Resources:
■ YouTube: "Java If Else" and "Java Switch Statement" tutorials.
■ Udemy: Sections on control flow in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Control Flow Statements), Baeldung (Java
If/Else, Switch).
● Day 5: Control Flow: loops (for, while, do-while)
○ Learn how to repeat code blocks using loops.
○ Understand for, while, and do-while loops.
○ Learn about the enhanced for loop (for-each).
○ Resources:
■ YouTube: "Java Loops Tutorial" (cover all types).
■ Udemy: Sections on loops in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Control Flow Statements), Programiz (Java
Loops).
● Day 6: Arrays
○ Understand what arrays are and how to declare and initialize them.
○ Learn how to access and manipulate array elements.
○ Explore multi-dimensional arrays.
○ Resources:
■ YouTube: "Java Arrays Tutorial".
■ Udemy: Sections on arrays in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Arrays), JavaTpoint (Arrays).
● Day 7: Introduction to Object-Oriented Programming (OOP)
○ Understand the core concepts of OOP: Objects, Classes, Abstraction,
Encapsulation, Inheritance, Polymorphism.
○ Learn how to define a class and create objects.
○ Understand constructors.
○ Resources:
■ YouTube: "Introduction to OOP in Java" tutorials.
■ Udemy: Sections on OOP basics in beginner Java courses.
■ Blogs: Oracle Java Tutorials (Classes and Objects), GeeksforGeeks (OOP
Concepts).
Week 2: Core OOP & Basic APIs
● Day 8: Encapsulation (Getters and Setters)
○ Deepen your understanding of encapsulation.
○ Learn how to use access modifiers (public, private, protected, default).
○ Implement getters and setters to control access to class members.
○ Resources:
■ YouTube: "Java Encapsulation Tutorial".
■ Udemy: Sections on encapsulation in OOP courses.
■ Blogs: Baeldung (Encapsulation), Programiz (Java Encapsulation).
● Day 9: Inheritance
○ Understand the concept of inheritance and its benefits.
○ Learn how to create subclasses and use the extends keyword.
○ Explore method overriding and the super keyword.
○ Resources:
■ YouTube: "Java Inheritance Tutorial".
■ Udemy: Sections on inheritance in OOP courses.
■ Blogs: Oracle Java Tutorials (Inheritance), JavaTpoint (Inheritance).
● Day 10: Polymorphism
○ Understand compile-time (method overloading) and runtime (method
overriding) polymorphism.
○ Learn how to use polymorphism in practice.
○ Resources:
■ YouTube: "Java Polymorphism Tutorial".
■ Udemy: Sections on polymorphism in OOP courses.
■ Blogs: GeeksforGeeks (Polymorphism), Programiz (Java Polymorphism).
● Day 11: Abstraction (Abstract Classes and Interfaces)
○ Understand the concept of abstraction.
○ Learn about abstract classes and abstract methods.
○ Learn about interfaces (including default and static methods in interfaces -
Java 8+ features).
○ Understand the difference between abstract classes and interfaces.
○ Resources:
■ YouTube: "Java Abstract Class and Interface Tutorial".
■ Udemy: Sections on abstraction in OOP courses.
■ Blogs: Oracle Java Tutorials (Interfaces, Abstract Classes), Baeldung
(Abstract Class vs Interface).
● Day 12: Packages and Access Modifiers
○ Learn how to organize your classes using packages.
○ Understand the different access modifiers (public, private, protected, default)
and their scope.
○ Resources:
■ YouTube: "Java Packages Tutorial", "Java Access Modifiers".
■ Udemy: Sections on packages and access modifiers.
■ Blogs: Oracle Java Tutorials (Packages), JavaTpoint (Access Modifiers).
● Day 13: String Handling
○ Learn about the String class and its immutability.
○ Explore common String methods.
○ Understand StringBuffer and StringBuilder.
○ Resources:
■ YouTube: "Java String Tutorial".
■ Udemy: Sections on String handling.
■ Blogs: Oracle Java Tutorials (Strings), Programiz (Java Strings).
● Day 14: Exception Handling
○ Understand what exceptions are and why handle them.
○ Learn about try, catch, finally, throw, and throws.
○ Explore checked and unchecked exceptions.
○ Resources:
■ YouTube: "Java Exception Handling Tutorial".
■ Udemy: Sections on exception handling.
■ Blogs: Oracle Java Tutorials (Exceptions), Baeldung (Exception Handling).
Week 3: Collections & Introduction to Modern Java
● Day 15: Collections Framework - Overview and List
○ Understand the Collections Framework hierarchy.
○ Learn about the List interface and its common implementations (ArrayList,
LinkedList).
○ Resources:
■ YouTube: "Java Collections Tutorial" (start with List).
■ Udemy: Sections on Collections Framework (List).
■ Blogs: Oracle Java Tutorials (Collections), GeeksforGeeks (Java
Collections List).
● Day 16: Collections Framework - Set and Map
○ Learn about the Set interface (HashSet, LinkedHashSet, TreeSet).
○ Learn about the Map interface (HashMap, LinkedHashMap, TreeMap).
○ Understand the differences and use cases for List, Set, and Map.
○ Resources:
■ YouTube: "Java Set Tutorial", "Java Map Tutorial".
■ Udemy: Sections on Collections Framework (Set, Map).
■ Blogs: Baeldung (Java Set), JavaTpoint (Java Map).
● Day 17: Generics
○ Understand the need for generics.
○ Learn how to use generic classes, interfaces, and methods.
○ Explore wildcard types.
○ Resources:
■ YouTube: "Java Generics Tutorial".
■ Udemy: Sections on generics.
■ Blogs: Oracle Java Tutorials (Generics), Programiz (Java Generics).
● Day 18: Introduction to Lambda Expressions (Java 8)
○ Understand functional interfaces.
○ Learn the syntax and usage of lambda expressions.
○ Resources:
■ YouTube: "Java Lambda Expressions Tutorial".
■ Udemy: Sections on Java 8 features.
■ Blogs: Baeldung (Lambda Expressions), Oracle Java Tutorials (Lambda
Expressions).
● Day 19: Stream API (Java 8)
○ Understand the concept of streams.
○ Learn about intermediate and terminal operations (filter, map, reduce, collect,
etc.).
○ Use Stream API with collections.
○ Resources:
■ YouTube: "Java Stream API Tutorial".
■ Udemy: Sections on Java 8 features (Stream API).
■ Blogs: Oracle Java Tutorials (Streams), GeeksforGeeks (Java 8 Stream
API).
● Day 20: New Date and Time API (Java 8)
○ Understand the limitations of the old Date and Calendar APIs.
○ Explore the java.time package (LocalDate, LocalTime, LocalDateTime,
ZonedDateTime).
○ Resources:
■ YouTube: "Java 8 Date and Time API Tutorial".
■ Udemy: Sections on Java 8 features (Date and Time).
■ Blogs: Baeldung (Java 8 Date and Time), Oracle Java Tutorials (Date and
Time).
● Day 21: Optional Class (Java 8)
○ Understand the purpose of the Optional class.
○ Learn how to use Optional to handle potential null values gracefully.
○ Resources:
■ YouTube: "Java Optional Tutorial".
■ Udemy: Sections on Java 8 features (Optional).
■ Blogs: Oracle Java Tutorials (Optional), Programiz (Java Optional).
Week 4: Java 17 Features & Beyond
● Day 22: Java Modules (Java 9)
○ Understand the concept of the Java Platform Module System (JPMS).
○ Learn about modules, requires, and exports.
○ Resources:
■ YouTube: "Java Module System Tutorial".
■ Udemy: Look for courses covering Java 9+ features.
■ Blogs: Baeldung (Java Module System), Oracle Java Tutorials (Modules).
● Day 23: var - Local-Variable Type Inference (Java 10)
○ Learn how to use the var keyword for local variable type inference.
○ Understand when and when not to use var.
○ Resources:
■ YouTube: "Java 10 var keyword tutorial".
■ Udemy: Look for courses covering Java 10+ features.
■ Blogs: Baeldung (Java 10 var), GeeksforGeeks (Java 10 var).
● Day 24: Text Blocks (Java 15)
○ Learn about Text Blocks for multi-line strings.
○ Understand the syntax and benefits.
○ Resources:
■ YouTube: "Java Text Blocks Tutorial".
■ Udemy: Look for courses covering Java 15+ features.
■ Blogs: Baeldung (Java Text Blocks), Oracle Java Tutorials (Text Blocks).
● Day 25: Pattern Matching for instanceof (Java 16)
○ Learn about the enhanced instanceof operator with pattern matching.
○ Simplify your conditional logic.
○ Resources:
■ YouTube: "Java 16 Pattern Matching instanceof".
■ Udemy: Look for courses covering Java 16+ features.
■ Blogs: Baeldung (Pattern Matching instanceof), Oracle Java Tutorials
(Pattern Matching).
● Day 26: Records (Java 14 - Standard in 16)
○ Understand the purpose and syntax of Records.
○ Learn how Records simplify creating immutable data carriers.
○ Resources:
■ YouTube: "Java Records Tutorial".
■ Udemy: Look for courses covering Java 14+ features.
■ Blogs: Baeldung (Java Records), Oracle Java Tutorials (Records).
● Day 27: Sealed Classes (Java 15 - Standard in 17)
○ Learn about Sealed Classes and Interfaces.
○ Understand how they restrict which other classes or interfaces may extend or
implement them.
○ Resources:
■ YouTube: "Java Sealed Classes Tutorial".
■ Udemy: Look for courses covering Java 15+ features.
■ Blogs: Baeldung (Sealed Classes), Oracle Java Tutorials (Sealed Classes).
● Day 28: Other Java 17 Features & JVM Improvements
○ Briefly explore other minor features and performance improvements in Java 17
(e.g., enhancements to the garbage collector, Foreign Function & Memory API
- Incubator).
○ Understand why Java 17 is a Long-Term Support (LTS) release.
○ Resources:
■ YouTube: "What's New in Java 17" videos.
■ Blogs: Oracle Java 17 Release Notes, Baeldung (Java 17 Features).
Week 5: Practice and Next Steps
● Day 29: Practice Project 1
○ Work on a small project that incorporates concepts learned so far (e.g., a
simple command-line application using OOP, collections, and basic control
flow).
○ Resources: Apply knowledge from previous days. Look for beginner project
ideas online.
● Day 30: Practice Project 2 & Next Steps
○ Work on another small project, perhaps incorporating some of the newer Java
features (e.g., using Records or Text Blocks).
○ Plan your next steps: explore frameworks (Spring Boot), databases, build tools
(Maven/Gradle), or specific areas of interest (web development, mobile
development, data science).
○ Resources: Apply knowledge from previous days. Research popular Java
frameworks and tools.
General Tips for the Crash Course:
● Consistency is Key: Try to stick to the daily plan as much as possible.
● Hands-on Practice: Write and run code for every concept you learn. Modify
examples, break them, and fix them.
● Don't Just Watch/Read: Actively code along with tutorials and examples.
● Understand Why: Focus on understanding why things work the way they do, not
just how to use them.
● Take Breaks: Avoid burnout by taking regular breaks.
● Join Communities: Engage with other learners or developers online (forums,
Discord, etc.) to ask questions and share your progress.
● Explore Beyond Provided Resources: The resources listed are starting points.
Feel free to explore other tutorials, courses, and documentation if a particular
resource doesn't click for you.
● Focus on Understanding, Not Memorization: Aim to grasp the core concepts;
syntax and specific methods can be looked up later.
This 30-day plan provides a structured approach to learning Java 17. Good luck with
your crash course!