#1Getting Started with Java Programming
- Course Introduction: Your Journey to Becoming a Java Developer---
- Course Remastered: All Lessons Updated to Java 17 with New Slides---
- Maximizing Video Quality for Optimal Course Viewing Experience---
- Enabling and Using Subtitles for Improved Course Comprehension---
- Getting Help: Using the Q&A Section for Java Programming Support---
- Source Code Access and the Importance of Hands-On Coding Practice---
- The Key to Success: Persistence and a Growth Mindset in Programming---
- Choosing the Right Java Version: Understanding Long-Term Support (LTS)---
#2Java Development Environment Setup
- Essential Software Tools for Java Development: JDK 17 and IntelliJ IDEA---
- Step-by-Step Guide to Installing JDK 17 on Windows 10 and Windows 11---
- Installing JDK 17 on macOS: A Comprehensive Guide for Intel and M1/M2 Macs---
- Installing OpenJDK 17 on Ubuntu Linux: A Step-by-Step Terminal Guide---
- Verify Java Installation and Explore Java Interactively with JShell---
#3First Steps in Java Programming
- Your First Java Program: Displaying "Hello World" and Basic Error Handling---
- Introduction to Variables, Keywords, and the Integer (int) Data Type---
- Using Variables in Java Expressions: A Comprehensive Introduction---
- Exploring Java Primitive Types: Integer Ranges and Wrapper Classes---
- Understanding Byte, Short, and Long Data Types and Their Width in Java---
- Understanding and Using Casting with Numeric Primitive Types in Java---
- Primitive Types Challenge: Applying Your Knowledge of Integer Variables---
- Working with Float and Double: Precision in Floating Point Numbers---
- Understanding Floating-Point Precision: A Practical Challenge in Java---
- Exploring Character (char) and Boolean Primitive Data Types in Java---
- Recap of Primitive Types and Introduction to the String Class in Java---
- Mastering Operators, Operands, and Expressions in Java Programming---
- Simplifying Java Code: Using Abbreviated Operators for Concise Operations---
#4Transitioning from JShell to IntelliJ IDEA: A Comprehensive IDE Guide
- Embracing the Power of an Integrated Development Environment---
- What is an IDE?---
- Installing Intellij IDEA for Windows---
- Installing Intellij IDEA for Mac---
- Installing Intellij IDEA for Linux---
- Configuring IntelliJ IDEA for Windows---
- Configuring IntelliJ IDEA for Mac---
- Configuring IntelliJ IDEA for Linux---
- Creating Your First IntelliJ Project: "Hello World" Java Code Implementation---
- Understanding IntelliJ Code Structure: Classes, Methods, and Basic Java Syntax---
- Mastering Java's if-then Statement: Conditional Logic for Program Flow Control---
- Advanced Conditional Logic: Implementing the Logical AND Operator in Java Code---
- Java's Logical OR Operator: Enhancing Conditional Statements for Flexible Code---
- Assignment vs. Equality: Avoiding Common Java Operator Errors in IntelliJ---
- Streamlining Code: Implementing Java's Ternary Operator for Concise Conditionals---
- Java Operator Precedence: Mastering Expression Evaluation and Challenge---
#5Mastering Java Expressions, Statements, Code Blocks, And Method Overloading
- Introduction To The Fundamentals Of Java Workflow---
- Exploring Java Keywords And Understanding Expressions---
- Mastering Java Statements, Whitespace, And Code Organization---
- Harnessing Code Blocks And The If-Then-Else Statement In Java---
- Practical If-Then-Else Challenge For Java Flow Control---
- Deep Overview Of Methods In Java For Reusable Code---
- Enhancing Skills With Additional Java Method Techniques---
- Comprehensive Recap Of Java Methods---
- Hands-On Java Method Challenge For Deeper Practice---
- Comparing And Reviewing Code In IntelliJ For Better Development---
- Introduction To Java Coding Exercises For Skill Development---
- Delving Into Method Overloading In Java---
- Practical Method Overloading Challenge To Strengthen Java Expertise---
- Comprehensive Seconds-And-Minutes Challenge For Time-Based Calculations---
- Detailed Bonus Challenge Solution And Key Insights---
#6Mastering Conditional Logic, Loops, And Interactive Java Applications
- Introduction To The Foundations Of Program Flow In Java---
- Exploring The Traditional And Enhanced Switch Statements---
- Delving Deeper Into Advanced Switch Statement Features---
- Traditional Switch Statement Challenge And Practical Exercises---
- Embracing Switch Expressions With A Hands-On Coding Challenge---
- Mastering The for Statement For Repetitive Task Automation---
- Comprehensive for Loop Challenge To Strengthen Iteration Skills---
- Sum 3 And 5 Challenge With IntelliJ Debugger Insights---
- for Loop Recap And Key Takeaways For Iteration In Java---
- The while And do-while Statements For Conditional Looping---
- Practical while Loop Exercises And Challenges---
- Digit Sum Challenge And Further Looping Techniques---
- Revisiting The while And do-while Loops: A Complete Recap---
- Exploring Local Variables And Scope In Java Blocks---
- Understanding Classes, Objects, And Static Versus Instance Members---
- Parsing Values And Reading Console Input – system.console() Overview---
- Handling Exceptions And Introducing The Scanner Class---
- Reading Input With The Scanner For Seamless User Interaction---
- Hands-On Reading User Input Challenge For Practical Mastery---
- Identifying Min And Max Values – A Final Control Flow Challenge---
#7Mastering Java OOP: Classes & Inheritance
- Welcome to Java OOP Inheritance---
- Deep Dive into Classes and Objects---
- Getters, Encapsulation, and Object Access---
- Setters, Object Creation, and OOP Practice---
- Classes Challenge: Building a Bank Account---
- Constructors Part 1: Object Initialization---
- Constructors Part 2: Overloading and Chaining---
- Constructor Challenge: Building Customer Data---
- Understanding References, Objects, and Instances---
- Static vs. Instance Variables in Java---
- Static vs. Instance Methods Explained---
- POJOs: Plain Old Java Objects---
- Java Records: The Modern POJO Approach---
- Inheritance - Part 1: The Basics---
- Inheritance - Part 2: Extending Animal Class---
- Inheritance - Part 3: Unique Dog & Fish Classes---
- Unveiling java.lang.Object in Java---
- Inheritance Challenge - Designing a Worker Hierarchy---
- Inheritance Challenge Part 2: Specialized Employees---
- Using this and super for Constructors---
- Method Overloading vs. Overriding Explained---
- Text Blocks & Advanced Output Formatting---
- Revisiting the String: Methods and Best Practices---
- Mastering String Manipulation Methods---
- The StringBuilder: Efficient Mutable Strings---
#8Advanced OOP Techniques: Composition, Encapsulation, and Polymorphism in Action
- Embarking on OOP Part 2: Composition, Encapsulation, and Polymorphism Essentials---
- Building a Computer with Composition: Understanding Has-A vs. Is-A in Java---
- Assembling a Personal Computer: Real-World Composition and Object Management---
- Hands-On Smart Kitchen Challenge: Modeling IoT Appliances with Composition---
- Encapsulation Essentials, Part 1: Data Hiding and Simplifying Interfaces---
- Encapsulation Deep Dive, Part 2: Enhancing Classes and Securing Data---
- Encapsulation Challenge: Building a Printer with Toner and Duplex Functionality---
- Polymorphism Foundations, Part 1: Introducing Movie Subclasses for Runtime Varia---
- Polymorphism in Practice, Part 2: Factory Methods, Runtime Types, and Movie Scen---
- Advanced Casting and var Usage: Navigating Compile-Time vs. Runtime Types in Jav---
- Runtime Type Inspection: Mastering instanceof and Pattern Matching in Java---
- Polymorphism Challenge: Building Gas, Electric, and Hybrid Car Classes in Java---
- Polymorphism Challenge, Part 2: Finalizing Car Inheritance and Overridden Method---
- OOP Master Challenge, Part 1: Crafting a Burger Restaurant App with OOP Concepts---
- OOP Master Challenge, Part 2: Implementing Meal Orders and Pricing Strategies---
- OOP Master Challenge: Deluxe Burger Bonus Adding Specialized Topping and Pricing---
- Project Structure and Modular Design: Harnessing Packages and Import Statements---
#9Advanced Arrays in Java: Single & Multi-Dimensional Techniques
- Arrays Introduction: Handling Multiple Values Efficiently in Java---
- Declaring, Initializing, and Accessing Arrays: Foundational Principles---
- Populating, Looping, and Searching: Deeper into Java Arrays---
- Sorting, Filling, and Copying: Mastering the java.util.Arrays Helper Class---
- Binary Search & Equality Checks: Speedy Lookups and Comparisons in Arrays---
- Descending Sort Challenge: Building Your Array Skills with Real Data---
- Common Pitfalls & Best Practices: A Comprehensive Arrays Recap---
- Reference vs. Value Types: Understanding Array Memory and Method Calls---
- Embracing varargs: Flexible Method Parameters and Array Conversions---
- Finding the Smallest Value: A Hands-On Minimum Element Challenge---
- Reversing Arrays In-Place: Hands-On Practice with Swapping Elements---
- Navigating 2D Arrays: Matrix Representation and Nested Loop Traversals---
- Expanding to Multi-dimensional Arrays: Jagged Structures and Complex Data---
#10Mastering Lists, Iterators, and Autoboxing: ArrayList, LinkedList & Enums
- Introduction to Java Collections: Beyond Basic Arrays---
- Meet the List Interface & ArrayList (Part 1)---
- ArrayList Methods (Part 2): Add, Remove, and More---
- ArrayList Methods (Part 3): Sorting, Copying & Searching---
- Arrays vs. ArrayLists: A Practical Comparison---
- ArrayList Challenge Part 1: Building an Interactive Grocery List---
- LinkedList Overview: Memory, Big O, and Why LinkedList Exists---
- LinkedList Essentials (Part 1): Adding & Removing Elements---
- LinkedList Essentials (Part 2): Retrieving & Itinerary Example---
- Iterators Explained: Navigating Lists with Forward & Reverse---
- LinkedList Challenge: Ordered Travel Itinerary (Part 1)---
- LinkedList Challenge Continued: Interactive Navigation---
- Introduction to Autoboxing & Unboxing: Moving Between Primitives & Wrappers---
- Autoboxing & Unboxing for Arrays & Lists: Working with Wrapper Classes---
- Autoboxing & Unboxing Challenge: Simple Banking App (Part 1)---
- Autoboxing & Unboxing Challenge: Bank & Customer Implementation (Part 2)---
- Enums Demystified: Declaring & Using Predefined Constants---
- Enums (Part 2): Switch Expressions & Custom Methods in Enums---
#11Mastering Abstraction & Interfaces: Expand Polymorphism & Java Hierarchies
- Abstraction & Generalization: Less Code, More Extensibility---
- Exploring Abstract & Interface Modifiers: Real-World Modeling in Java---
- Diving into Abstract Classes (Part 1): Creating Flexible Hierarchies---
- Diving into Abstract Classes (Part 2): Polymorphic Behavior & Implementation---
- Diving into Abstract Classes (Part 3): Advanced Hierarchies & Use Cases---
- Abstract Class Challenge (Part 1): Building a Storefront & Product Hierarchy---
- Abstract Class Challenge (Part 2): Finalizing the Store & Order System---
- Interfaces (Part 1): Harnessing Contracts & Polymorphic Behavior in Java---
- Interfaces (Part 2): Multiple Implementations & Real-World Examples---
- Interfaces (Part 3): Constants, Conversion & Flexible Abstractions---
- Interfaces & JDK 8 Enhancements: Default/Static Methods for Compatibility---
- Interfaces & JDK 9 Enhancements: Private & Static Methods in Action---
- Interface vs. Abstract Class: Key Differences & Best Use Cases---
- Interface Challenge (Part 1): Creating Mappable Classes & GeoJSON-Like Output---
- Interface Challenge (Part 2): Finalizing Mapping Logic & Extended Features---
#12Deep Dive into Java Generics: Bounds, Comparators & Advanced Techniques
- Generics Overview: Why Type Parameters & Where They Excel---
- Creating Your First Generic Class: From Basics to Implementation---
- Refining Generic Classes: Polymorphism & Type Safety---
- Advanced Generics: Multiple Type Parameters & Bounded Types---
- Generic Class Challenge (Part 1): Building Reusable Structures---
- Generic Class Challenge (Part 2): Finalizing Maps & Overviews---
- Comparable Revisited: Sorting Objects by Natural Order---
- Comparable vs. Comparator: Distinctions & Sorting Strategies---
- Generic Classes as Reference Types: Wildcards & Method Parameters---
- Generic Methods, Wildcards & Type Erasure: Handling Advanced Cases---
- Static Methods in Generics & Multiple Upper Bounds Explained---
- Final Generics Challenge: Integrating Bounded Types & Comparators---
#13Exploring Nested Classes, Local Types & Anonymous Classes
- Understanding Nested Classes: Overview & Types---
- Static Nested Classes: Encapsulation & Access Rules---
- Inner Classes: Non-Static Nesting & Syntax---
- Applying Inner Classes: Bill’s Burger Revisited---
- Inner Classes Challenge: Practical Enhancements---
- Local Classes: Scoping & Effective-Final Variables---
- Anonymous Classes: Inline Instantiation & Use Cases---
- Local & Anonymous Classes Challenge---
#14Mastering Java Lambdas: Expressions, Interfaces, and Method References
- Introduction to Lambda Expressions: Revolutionizing Java Code with Conciseness---
- Deep Dive into Lambda Expressions and Functional Interfaces: Practical Examples---
- Exploring Lambda Expression Syntax: Variations, Rules, and Advanced Examples---
- Custom Functional Interfaces: Building Reusable Lambda Expressions in Java---
- Exploring Java's Built-In Functional Interfaces: Consumer and Predicate---
- Exploring Java's Built-In Functional Interfaces: Function and Supplier---
- Hands-On Practice: Lambda Mini-Challenges for Skill Reinforcement and Mastery---
- Lambda Expression Challenge: Applying Skills with Arrays, Lists, and Operations---
- Demystifying Method References: Simplifying Lambda Expressions in Java Code---
- Understanding the Most Complex Method References: Unbounded Receiver Explained---
- Hands-On Practice: Method Reference Challenge for Practical Skill Development---
- Chaining Lambdas: Leveraging Convenience Methods on Functional Interfaces---
- Advanced Comparator Usage: Leveraging Convenience Methods for Enhanced Sorting---
#15Mastering Java Collections: Framework, Lists, Sets, and Maps
- Java Collections Framework: An In-Depth Introduction for Beginners---
- Deep Dive into Java Collections: Core Interfaces and Big Picture---
- Creating a Versatile Deck of Cards in Java: Code Setup & Best Practices---
- Exploring java.util.Collections: Essential Methods and List Operations---
- Advanced java.util.Collections: Shuffle, Reverse, Sort, indexOfSubList---
- Mastering java.util.Collections: binarySearch, frequency, min, max, rotate---
- Challenge: Building a Custom Card Game with java.util.Collections---
- Completing the Collections Challenge: Five Card Draw (Poker)---
- Java Hash Codes Explained: Mastering the Basics for Effective Collections---
- Preparing for Sets and Maps: Setting Up Phone and Email Contacts in Java---
- Introduction to Java Sets and HashSet: Mastering Unordered Collections---
- Java Set Operations Explained: Mastering Union, Intersection, & Difference---
- Java Set Operations Challenge: Setting Up Task and TaskData Classes---
- Java Set Operations Challenge: Real-World Application with Task Management---
- Exploring LinkedHashSet and TreeSet: Ordered Sets in Java---
- Java TreeSet Mastery: Navigating with Closest Match and Subset Methods---
- Challenge: Building a Robust Theatre Seat Booking System with TreeSet---
- Completing the Theatre Seat Booking System Challenge---
- Comprehensive Guide to the Java Map Interface and Its Functionality---
- Advanced Map Operations: compute, replace, and remove Methods Explained---
- Mastering Map View Collections: keySet, values, and entrySet in Java---
- Challenge: Build a Text-Based Adventure Game with Java HashMap---
- Completing the Text Adventure Game Challenge---
- Exploring LinkedHashMap and TreeMap: Ordered Maps in Java---
- Mastering TreeMap: NavigableMap Methods for Efficient Data Handling---
- EnumSet and EnumMap: Optimizing Collections for Enum Types in Java---
- Collection Framework Final Challenge Part 1---
- Building a Complete Store Inventory Management System (Part 1)---
- Building a Complete Store Inventory Management System (Part 2)---
#16Mastering Mutability, Immutability and Final Keyword in Java OOP
- Mutable vs Immutable Objects in Java: Advantages, Disadvantages, and Design---
- Deep Dive into the Final Modifier: Methods, Fields, Classes, Variables---
- Final Modifier: Static Methods, Hiding vs. Overriding, Final Variables---
- Understanding Side Effects of Mutability: Defensive Coding Techniques---
- Designing Immutable Classes: Private Final Fields, Defensive Copies - Part 1---
- Creating Truly Immutable Java Classes: Preventing Subclass Modification---
- Implement Immutable BankAccount and BankCustomer Classes in Java---
- Shallow vs. Deep Copies: Protecting Data Integrity in Java Applications---
- Immutable Collections, Unmodifiable Views: Limitations and Best Practices---
- Implementing Unmodifiable Collections in a Banking Application---
- Building a Secure Banking Application: Implementing Transaction Handling---
- Java Constructors: No-args, Initializers, Final Fields, and Inheritance---
- Demystifying Record Constructors: Canonical, Custom, and Compact Forms---
- Mastering Enum Constructors and Static Initializers in Java---
- Building a Game Console Framework with Player Input---
- Building a Generic Game Console: Implementing Game and Player Interactions---
- Java Coding Challenge: Design a Pirate Adventure with Constructors & Initializer---
- Pirate Game Development in Java: Implementing Game Logic and Data Loading---
- Enhancing Code Security: Final Classes & Constructor Access Modifiers---
- Restricting Class Extension in Java with the Sealed Classes and Interfaces---
- Building a Complete Pirate Game: Loot, Combat, and Town Features in Java---
- Final Java Game Enhancements: Implementing Town Features and Combat Interactions---
#17Comprehensive Java Streams: Operations, Pipelines, and Sources
- Understanding Java Streams: Core Concepts and Key Differences from Collections---
- Practical Java Stream Example: Manipulating and Transforming Bingo Ball Data---
- Deep Dive into Java Stream Pipelines: Sources, Intermediate, and Terminal Ops---
- Exploring Java Stream Sources: Collections, Arrays, and Infinite Data Streams---
- Challenge: Mastering Stream Sources and Data Concatenation in Java---
- Filtering and Transforming Data: distinct, filter, limit, skip, takeWhile, dropW---
- Map, Peek and Sorted Operations, using Comparator interface---
- Mastering Terminal Ops: Find Statistics, Match Elements---
- Building a Student Engagement System: Code Setup - Part 1---
- Student Class Construction: Code Setup - Part 2 for Stream Processing---
- Terminal Operations Challenge Part 1 - Student Data Analysis---
- Enhancing Data Analysis: Advanced Terminal Operation Challenge Solution---
- Collecting Data in Java Streams, the Collect and Reduce operations---
- Advanced Stream Processing: Practical Applications of Collect and Reduce---
- Terminal Operations Part 2 - Advanced Data Aggregation Challenge---
- Java Optionals: Preventing NullPointerExceptions and Handling Missing Values---
- Mastering Stream Terminal Operations Find, Min, Max, Average, and Reduce in Java---
- Challenge: Advanced Stream Operations and Data Analysis on Student Engagement---
- Transforming Data Structures: Using flatMap to Stream Map Elements in Java---
- Comprehensive Streams Challenge: Applying Advanced Techniques in Java---
#18Java Core Fundamentals: Math, Randomization, BigDecimal, and Date/Time
- Revisiting Essential Java Core API Functionalities: Math and java.time---
- Mastering the Java Math Class: Preventing Overflow and Underflow Errors---
- Comprehensive Guide to Random Number Generation: Math.random and Random---
- Java Dice Rolling Game: Implementing Randomization and User Input Challenge---
- Advanced Dice Game: Implementing Scoring and Game Logic with Java Enums---
- Mastering BigDecimal for Financial Applications: Precision and Scale in Java---
- Advanced BigDecimal Operations: Controlling Rounding and Precision in Java---
- Comprehensive Introduction to Java Date and Time API (java.time package)---
- Working with LocalDate in Java: Creation, Manipulation, and Comparison---
- Mastering LocalTime and LocalDateTime in Java: A Comprehensive Guide---
- Understanding Instance, Period, Duration, and Time Zones in Java's Time API---
- Exploring Java Time Zones: ZoneId, Zone Offset, and Daylight Savings Time---
- Mastering Java Time: Instant, ZonedDateTime, Duration, Period, ChronoUnit---
- Introduction to Java Localization and the Locale Class: Concepts and Usage---
- Applying Localization in Java: Formatting Dates, Numbers, and Currencies---
- DateTime & Localization: Cross-Timezone Meeting Scheduler Challenge (10 Days)---
- Java Internationalization: Using ResourceBundle for Multi-Language Support---
- ResourceBundle in Java: Creating Multi-Language Applications (Part 2)---
#19Regular Expressions in Java: Mastering Pattern Matching and Text Manipulation
- Introduction to Regular Expressions: Practical Uses and Applications in Java---
- Demystifying Regular Expressions: Understanding Syntax, Usage, and Benefits---
- Decoding Regular Expressions: Literals, Character Classes, Quantifiers, Anchors---
- Using Regular Expressions with String and Scanner: split(), replaceAll(), etc.---
- Regular Expression Challenges: Applying Concepts through Practical Exercises---
- Advanced Regular Expressions with Pattern and Matcher: Compilation and Matching---
- Extracting Data with Matcher: find(), group(), Grouping, and Capturing in Java---
- Replacing Text Efficiently: Exploring Matcher's Replacement Methods in Java---
- In-Depth Review: Dissecting Complex Regular Expressions for Phone/HTML Tags---
- Crafting a Robust Email Validator: A Comprehensive Regular Expression Challenge---
#20Comprehensive Java Input/Output (I/O) and File Operations
- Java I/O Fundamentals: Resources, Operations, and Exception Handling Intro---
- Mastering Java Exceptions: Checked vs. Unchecked, Finally, and Best Practices---
- Efficient Resource Management: Mastering Try-with-Resources in Java I/O---
- Java I/O Essentials: File, Path, Files, and Paths - A Practical Guide---
- Practical File Operations in Java: Create, Delete, Write with File/Path---
- Exploring Path Methods and File System Interactions in Java NIO.2---
- Directory Listing Mastery: Exploring Files with list, walk, and find---
- Advanced File Tree Traversal: Implementing walkFileTree in Java---
- File Tree Navigation Challenge: Mastering Practical File System Tasks---
- Classic Java I/O: Reading Text Files Using FileReader and BufferedReader---
- Mastering the Scanner Class for Flexible Text Input Processing in Java---
- Character Sets, Encodings (UTF-8, ASCII), and NIO.2 Text File Reading---
- Challenge: Text Processing and Word Frequency Analysis in Java---
- Java Output: Writing Text Data to Files (Files.write, BufferedWriter)---
- Java Writers: BufferedWriter, FileWriter, PrintWriter - Features and Usage---
- Comprehensive File Writing in Java: Creating a JSON Data File Challenge---
- Mastering Java File Operations: Rename, Copy, Delete, and Move Files---
- Advanced File Copy and Delete: Recursive Directory Handling in Java---
- Practical Directory Navigation: Building and Indexing a File System---
- Deep Dive into Java's RandomAccessFile for Efficient Binary Data Handling---
- Implementing Advanced Data Retrieval: RandomAccessFile Indexing in Java---
- Random File Operations: Design a Program for Employee Data Management---
- Mastering Binary Data I/O: Utilizing DataOutputStream and DataInputStream---
- Introduction to Java Object Serialization: Persisting Objects to Files---
- Advanced Serialization: Version Control, Transient Fields and Customisation---
#21Mastering Java Concurrency and Multithreading
- Understanding Processes and Threads in Java: An Introductory Overview---
- Deep Dive into Java Thread States and Concurrent Thread Execution---
- Implementing Multithreading: Concurrent Thread Creation Best Practices---
- Managing and Manipulating Running Threads in Java: Sleep and Interrupt---
- Applying Thread Concepts: Build a Multi-Threaded Application in Java---
- Exploring Java's Memory Model: Heap vs. Thread Stack in Multithreading---
- Advanced Concurrency: Interleaving, Atomicity, Memory Consistency Explained---
- Implementing Synchronization: Mastering Synchronized Methods in Java---
- Advanced Synchronization: Deep Dive into Synchronized Blocks in Java---
- Building a Producer-Consumer Application in Java, Deadlock Exploration---
- Preventing Deadlocks in Java: Practical Techniques Using Wait and Notify---
- Producer Consumer Challenge: Build a Java Shoe Warehouse Fulfillment Center---
- Explicit Locking in Java Concurrency: Exploring java.util.concurrent.locks---
- Advanced Locking: Exploring the Benefits and Uses of ReentrantLock in Java---
- Thread Management with ExecutorService: SingleThreadExecutorService in Java---
- Efficient Thread Management: Exploring FixedThreadPool ExecutorService in Java---
- Advanced Thread Pools: Exploring Callable, Submit, and Future in Java---
- Practical Concurrency: ExecutorService Challenge in Java Development---
- Java Concurrency: Mastering ScheduledExecutorService for Task Scheduling---
- Java Concurrency: Exploring WorkStealingPool and ForkJoinPool Explained---
- Parallel Streams in Java: Enhancing Performance with Concurrent Data Processing---
- Deep Dive into Parallel Streams: Ordering, Reducing, and Collecting in Java---
- Mastering Thread Safety: Synchronized and Concurrent Collections in Java---
- Building Robust Applications: Thread-Safe Lists, Queues, and ArrayBlockingQueue---
- Implementing Consumer Tasks: Mastering ArrayBlockingQueue in Java Concurrency---
- Thread Contention: Understanding and Avoiding Deadlock, Livelock, Starvation---
- Concurrency Challenges: Understanding and Avoiding Livelock in Java---
- Preventing Thread Starvation: Implementing Fair Locks in Java Concurrency---
- Exploring Advanced Java Concurrency: Atomic Variables and WatchService---
- Implementing a File Watcher with Java's WatchService for Real-Time Monitoring---
#22Mastering Java Database Connectivity: Interactions, Queries, and Frameworks
- Introduction to Java Database Connectivity (JDBC) and Relational Databases---
- Step-by-Step MySQL Server and Workbench Installation Guide for Windows OS---
- Installing MySQL Server & Workbench: A Comprehensive Guide for Mac Users---
- Installing MySQL Server and Workbench on Linux: A Step-by-Step Guide---
- Understanding Databases: RDBMS, Schema, Tables, SQL, DDL, and DML Explained---
- Hands-On with MySQL Workbench: Creating, Importing, and Querying Databases---
- JDBC Fundamentals: Connecting Java Applications to Databases with Drivers---
- Establishing Database Connections in Java: DriverManager vs DataSource---
- Retrieving Data with JDBC: Crafting and Executing SQL SELECT Queries---
- Secure Coding with JDBC: Preventing SQL Injection and Using ANSI SQL Standards---
- Mastering Statement.execute vs. Statement.executeQuery for Database Operations---
- Comprehensive SQL Operations in Java: Updating, Deleting, & Inserting Data---
- Efficient Database Updates: executeUpdate, Transactions, Commits, Rollback, and---
- Creating the 'Store Front' Database: DDL Operations and SQL Exception Handling i---
- Hands-On JDBC: Building a Database Application with Transactions & Data Operatio---
- Preventing SQL Injection with Parameterized JDBC PreparedStatement Objects---
- Enhancing Database Efficiency: Batch Processing with PreparedStatements---
- Comprehensive JDBC Challenge: Transactions, Alter, Batch Processing Operations---
- Leveraging Stored Procedures in Databases Through JDBC CallableStatement---
- Mastering OUT and INOUT Parameters in JDBC with CallableStatement Objects---
- Executing Database Functions Using CallableStatement and JDBC Escape Sequences---
- Advanced JDBC Challenge: Calling Stored Procedures with IN and OUT Parameters---
- An Overview of Object-Relational Mapping, JPA Providers, and Jakarta Persistence---
- Implementing CRUD Database Operations in Java: Entity Lifecycle Management---
- Establishing Table Relationships and Managing Related Data with JPA Entities---
- Mastering Dynamic Data Retrieval with JPQL: Select, From, Where, and Joins---
- Mastering Advanced JPQL Queries: Joins, Named Parameters, and Tuple Results---
- Building Dynamic and Type-Safe JPA Queries: A Comprehensive CriteriaBuilder Guid---
- Comprehensive JPA Challenge: Build Entities, Relationships, JPQL Queries---
- Mastering JPA: Advanced CriteriaBuilder Queries with Dynamic Joins (Bonus)---
#23Mastering Java Network Programming: Sockets, NIO, and Modern Frameworks
- Java Networking Fundamentals: Internet, Networks, and Core Java API Overview---
- Essential Network Terminology: Hosts, Client-Server, Protocols, Ports & IP---
- Building a Basic Java Client-Server Application with ServerSocket (TCP/IP)---
- Enhancing Server Scalability: Implementing a Multi-Threaded Java Server---
- Comparing ServerSocket and ServerSocketChannel: Blocking vs. Non-Blocking IO---
- Deep Dive into Java NIO: Understanding Channels and Buffers for Networking---
- Practical Java NIO: ByteBuffer Operations, Capacity, Limit, and Position---
- Implementing Efficient Network Polling with Custom Java Channel Management---
- Java Networking: Building Scalable Servers using Event-Driven Selectors---
- Creating UDP Client and Server in Java using Datagram Sockets---
- Streaming Audio over UDP: Building a Datagram Client-Server Application in Java---
- Building an Asynchronous UDP Server in Java using DatagramChannel---
- Navigating Java's High-Level APIs: Understanding URIs, URLs and Connections---
- Decoding Relative vs. Absolute URIs and Converting to URLs in Java---
- Getting Started with HttpURLConnection for Making HTTP Requests in Java---
- Rapid Web Server Development: Setting Up a Simple Java HTTP Server---
- Sending Data with HTTP POST Requests Using Java's HttpURLConnection---
- Modern Java Networking: Transitioning to HttpClient for HTTP/2 and Beyond---
- Streamlining HTTP POST Requests and Responses with Java's HttpClient---
- Java Asynchronous HTTP Requests: Leveraging CompletableFuture with HttpClient---
- Exploring CompletableFuture: thenAccept, thenApply and thenRun methods---
- Executing Multiple Concurrent HTTP Requests Using Java's HttpClient---
- Challenge: Submitting multiple concurrent POST HTTP requests using HttpClient---
- Creating a Custom Thread Safe Body Handler for Java HttpClient Responses---
- Understanding WebSockets: Real-Time, Bidirectional Communication in Java---
- Build a Java WebSocket Chat Application: Client and Server Implementation---
#24Debugging and Testing in Java: A Comprehensive Guide
- Mastering the IntelliJ Debugger: A Practical Introduction---
- Advanced Debugging Techniques: Stepping, Watches & Control---
- Field Watchpoints, Debugging: Track Variable Changes---
- Mastering Smart Step Into, Set Value & Third-Party Source---
- Mastering Unit Testing Essentials & JUnit Framework in Java---
- Mastering Assertions: Essential Techniques for JUnit Testing---
- JUnit Assertions: Beyond the Basics & Exception Handling---
- Parameterized Tests: Efficient Data-Driven Testing in JUnit---
- Hands-On JUnit: Challenges to Hone Your Testing Skills - 1&2---
- Completing JUnit Challenges 3 to 7: Advanced Techniques---
- JUnit Final Challenges : Mastering Scenarios 8,9 and 10---
#25Comprehensive JavaFX UI Design
- Configuring JavaFX with JDK 11+: Setting Up Global Libraries---
- Step-by-Step Guide to Creating Your First JavaFX Application---
- JavaFX Fundamentals: MVC, Application Lifecycle, and Stages---
- Building a JavaFX "Hello World" Program: FXML vs. Code---
- Mastering JavaFX GridPane Layout: Positioning and Sizing Controls---
- Maximising space with the JavaFX Hbox layout---
- Mastering the JavaFX BorderPane Layout for Application Design---
- Exploring JavaFX Layouts: FlowPane, TilePane, and StackPane---
- Exploring JavaFX Controls: Buttons, Labels, and User Interaction---
- Implementing Radio Buttons & Checkboxes in JavaFX Applications---
- JavaFX User Input: Combo Box and Choice Box Controls Deep Dive---
- JavaFX Interactive Controls: Slider, Spinner, ColorPicker, DatePicker---
- JavaFX TitledPane and Accordion: Organizing UI Elements---
- Mastering JavaFX Event Handling: Responding to User Actions---
- Advanced JavaFX Event Handling: Parameters and Best Practices---
- Optimizing JavaFX Applications: Mastering the UI Thread and Event Handling---
- Concurrency in JavaFX: Implementing Background Tasks with Threads & Runnable---
- JavaFX Project: Creating a To-Do List Application & Data Model Setup---
- JavaFX ListView: Populating, Single Selection Mode & Event Handling Basics---
- JavaFX Event Handling: Adding a Change Listener for Dynamic UI Updates---
- JavaFX Date Formatting: Enhancing the User Interface with Date Formatting---
- Implementing Singletons: Best Practices for Java Application Development---
- JavaFX Disk Operations: Loading and Saving Data using the File System---
- JavaFX Dialogs: Building User Input Forms with DialogPane and GridPane---
- JavaFX Dialogs, Handling User Input and Displaying Program Output---
- Bug Fixing, Data Binding, and UI Updates in JavaFX ToDo List App---
- Data Binding Mastery: Implementing Observable Lists for Dynamic UI in JavaFX---
- JavaFX Cell Factories: Customizing ListView Display and Highlighting Items---
- JavaFX Context Menus: Implementing Right-Click Functionality for ListViews---
- Implementing Key Events and Toolbars for Enhanced Functionality---
- Enhancing JavaFX Applications Implementing Sorted Lists for Dynamic Data Display---
- Filtering Data in JavaFX: Utilizing FilteredList for Dynamic Content Management---
- Elevating Visuals: Enhancing Appearance with CSS Styling---
- JavaFX Transformations: Mastering Node Rotation, Scaling, and Visual Effects---
- Implementing File and Directory Choosers in JavaFX for Enhanced File Access---
- Leveraging SceneBuilder: A Visual Approach to JavaFX UI Design within IntelliJ---
- Installing and Setting up Scenebuilder on Windows---
- Installing SceneBuilder for macOS: Step-by-Step Setup and IntelliJ Integration---
- SceneBuilder Deep Dive: Exploring the Interface, Layouts, and Control Properties---
- Constructing a Basic UI Layout, using SceneBuilder for JavaFX Development---
- Deep Dive Into SceneBuilder's Code Section and CSS---
- Contacts Manager Project, Part One, Setting up Project---
- Contacts Manager Project, Part Two, Design and Layout---
- Contacts Manager Project, Part Three, Show Dialog, Button Press and Contact---
- Contacts Application: Enhancing Functionality with Edit and Delete Features---
- JavaFX Contact Deletion, Confirmation, and Table Resizing Implementation---
#26Deep Dive into the Java 9 Module System: JPMS Fundamentals
- Comprehensive Introduction to Java Modules: Concepts, Goals, and Structure---
- Mastering Java Module Declarations and Statements: Requires, Exports, and Opens---
- Exploring Java Module Types: Named, Unnamed, Automatic, Open, and Aggregator---
#27Migrating Existing Java Projects to Java 9 and the Module System
- Project Setup and Initial JDK 8 & 9 Compatibility Testing for Migration---
- Strategically Structuring a Java Project for Modularization in JDK 9---
- Creating the First Module (Common): Package Migration and Dependency Resolution---
- Module Descriptor File Creation and Resolution of JavaFX Runtime Errors---
- Creating the Second Module (Database): Dependency Management and Code Migration---
- Challenge: Create and Configure the UI Module, Resolving Dependencies---
- Understanding and Implementing Transitive Dependencies for Simplified Module---
#28Extra Information - Source code, and other stuff
- Source code for all Programs---
- Bonus Lecture and Information---