Course Highlights
  • An industry-vetted, comprehensive curriculum to help you master Core & Advanced Java including JVM internals
  • Master design principles, best practices and coding conventions for writing well-designed, professional Java code
  • Get real-world experience by developing an instructor-led Java EE-based Web application
  • Set firm foundation in Java for the rest of your career. It is akin to a Master's Program in Java.
  • If entire course is done systematically, your Java skills will be on par with engineers at top companies like Google
  • Master Object-Oriented Programming concepts by using a real-world application as a case study
  • Master Exceptions, IO, Collections Framework, Generics, Multi-threading, Databases, etc. with best practices
  • Solid understanding of Functional-style Programming using Java 8 constructs like Lambdas & Streams
Curriculum

4 Topics
Why Yet Another Java Course?
Course Structure & Guidance for Doing this Course
Schedule for College Students
Terms of Service & Copyright

18 Topics
Chapter Introduction
What is Java & Who is Using It?
Story behind Java's Creation ~ A Brief History
Compilation
Platform Dependency + Demo
Interpreter
Platform Independence in Java + Demo
Java Virtual Machine
An Overview of Java SE
Java SE Release Cycles & Release History
Installing JDK 17 on Windows
Installing Java on Mac
Installing Java on Linux
Setting Classpath Environment Variable
Writing First Java Program + Demo
Conclusion
Chapter Quiz
Important Q&A Discussions!

42 Topics
Chapter Introduction
Class & Objects
Demo: Absolute Java Basics
Variables: Introduction
Demo: Declaring & Re-initializing Variables
Currency Converter - Creating a Class with Variables
Variables: Primitive Types
Primitive Variables: Integers + Demo
Demo: Other Integer Literal Formats
Primitive Variables: Floating-point Numbers + Demo
Demo: Floating-point Pitfalls
Primitive Variables: Character Data Type + Demo
Demo: Alternate ways to initialize char variables
Demo: Primitive Variables: Boolean Data Type
Demo: Variable Kinds
Demo: Multi-variable Declaration Statements
Quiz: Variables
Variables: Type Casting + Demo
Variables: Object References + Demo
Statements + Demo
Arrays + Demo
Currency Converter - Array Creation & Accessing its Elements
2D Arrays
3D Arrays + Demo
Methods: Introduction + Demo
Method Types + Demo
Summary on Accessibility of Members from Static & Instance Methods
Currency Converter ~ Invoking Methods of an Object
How Data is Passed to Methods in Java? + Demo
Method Overloading + Demo
Methods: varargs + Demo
Constructors + Demo
Constructor Overloading + Demo
Demo: Constructor Overloading ~ Alternate way of delegating
Demo: this Reference
Demo: Reinitializing Object References ~ More Brainstorming!
Minor Note on Executing StudentTest
Arrays with Object References
Review of Exercise 1 Solution with Best Practices
Conclusion
Chapter Quiz
Important Q&A Discussions!

38 Topics
Chapter Introduction
Operators
Arithmetic Operators + Demo
Arithmetic Operation Rules + Demo
Quiz: Arithmetic Operators
Note on Student Class
Demo: Comparison Operators
Logical Operators + Demo
Car Price Estimator ~ Coding Exercise for Comparison & Logical Operators
Car Price Estimator ~ Putting Comparison & Logical Operators into Action
Car Price Estimator - Exercise Solution Review
Bitwise Operators + Demo
Quick Note on Bitwise Operators with Boolean Operands
Bit Shift Operators
Quiz: Bitwise & Bit Shift Operators
Control-flow: Demo: if-statement
Switch Statement: Introduction
Switch Restrictions
Restaurant Order Price Calculator using Switch Statement
Arrow Labels in Switch (Java 14)
Switch Expressions (Java 14)
Restaurant Order Price Calculator using Switch Expression
Quiz: switch Statement
Control-flow: Ternary + Demo
Additional Notes on Ternary Operator
Control-flow: for Statement + Demo
Demo: More for Statement ...
Demo: for-each Statement
Variable Scope
Exercise
Computing GPA ~ Putting Operators & Control-flow to Test
Computing GPA - Exercise Solution Review
Control-flow: while Statement
Control-flow: break Statement + Demo
Control-flow: continue + Demo
Recursion + Demo
Minor Correction in Binary Search Code
Conclusion

23 Topics
Chapter Introduction
Java API
Accessing Packages + Demo
Creating Packages & Classpath Management + Demo
Naming Packages
Access Levels + Demo
More on private Modifier + Demo
Quiz: Packages
Strings: Introduction
String Class + Demo
Calculating Term Frequency in a Document
String Pool & Interning + Demo
String Immutability
String Concatenation + Demo
String Concatenation Performance
Escape Sequences + Demo
Sentiment Analysis: Mining Pros & Cons ~ Putting String Class to Test
Information Hiding - Use Accessor Methods
Demo: Enhancing Student Example with Information Hiding
Minimize Accessibility of Classes & Members
Conclusion
Chapter Quiz
Important Q&A Discussions!

8 Topics
Introduction
Installing Eclipse
Writing a Java Program in Eclipse
Eclipse Build Process
Importing Demo Code
Source Code Navigation
Automatic Source Code Cleaning & Generation
Shortcuts Cheat Sheet

19 Topics
Chapter Introduction
Note on Few Demos
Demo: Math Class
Initializers: Static & Instance + Demo
Note on Instance Initialization Blocks
final Variable + Demo
Constant Variables + Demo
Boxed Primitives & Static Factory Methods+ Demo
Demo: Uses of Boxed Primitives
Autoboxing + Demo
Boxed Primitives & Immutability
Prefer Primitives over Boxed Primitives
Parsing API Response ~ Let's make use of Boxed Primitives & String class
Coding Conventions: Naming Classes Methods and Variables
Coding Conventions: Structuring Programs
Coding Conventions: Stylistic + Demo
Coding Conventions: Comments + Demo
Conclusion
Chapter Quiz

2 Topics
thrill.io ~ A Social Polymarking App!
Case Study

19 Topics
Inheritance
Access Modifiers & Inheritance + Demo
IS-A Test
Hospital Management System (HMS) ~ Let's put Inheritance into practice!
Polymorphism + Demo
Casting Objects & instanceof Operator + Demo
Extending HMS with a Billing Component ~ Putting Polymorphism into Practice!
Type Safety
Method Overriding + Demo
Minor Correction in First Method Overriding Rule
Method Binding + Demo
What is Not Overridden? (final Method is one of them) + Demo
Demo: Fields are Not Overridden
Object Class + Demo
Constructor Chaining + Demo
Note on Constructor Inheritance
Preventing Inheritance
Conclusion
Chapter Quiz

27 Topics
New Requirement: thrill.io for Kids
Abstract Classes & Methods + Demo
Demo: Constructors in Abstract Classes
Prefer Class Hierarchies over Tagged Classes
Computing Health Insurance Premium for Staff ~ Let's put Abstract Classes & Methods into practice!
New Requirement: Sharing Bookmarks
Multiple Inheritance & Diamond Problem
Interfaces
Update to Interfaces due to Java 9
More on Interfaces
Note on Next Lecture on Interfaces
Demo: Interfaces
Interfaces: A Conceptual View
Prefer Interfaces over Abstract Classes
Refer Objects via Interfaces
Computing Health Insurance Premium for Staff (Part 2) ~ Let's put Interfaces into practice!
Marker Interfaces
Cloneable Interface + Demo
Deep Cloning of Objects
default Methods (Java 8) + Demo
Recap of default Methods
default Methods: Other Benefits + Demo
Static Methods in Interfaces + Demo
Private Methods in Interfaces
Conclusion
Chapter Quiz
Important Q&A Discussions!

4 Topics
Note on Reorganizing Eclipse Tutorial
Using Eclipse Debugger
JUnit & Debugging
Shortcuts Cheat Sheet

15 Topics
Project Introduction
MVC Architecture
Implementing Entities
Implementing Manager Classes - Demonstrates Singleton Pattern!!
Implementing Constant Exporting Classes
Implementing Data Store
Implementing Dao Classes
Launching the Application
Implementing User Bookmarking Feature
Implementing Kid-Friendly Eligibility Criteria Using TDD
Marking Bookmarks as Kid-Friendly
Minor Coding Correction in Previous Lecture
Implementing Sharing Feature: Part 1 (Implementing Shareable Interface)
Troubleshooting StringUtils Issue
Implementing Sharing Feature: Part 2 (View Controller and Manager)

23 Topics
Introduction
Lifetime of a Type
Lifetime of a Type: Class Loading
Lifetime of a Type: Linking
Demo: Lifetime of a Type
Quiz: Lifetime of a Type
Reflection
Accessing Class Object
Demo: Reflection
Simulate a Basic Unit Testing Framework ~ Putting reflection into action!
Runtime Data Areas
Method Area & Heap
Method Table
Garbage Collection: Introduction
Garbage Collection Algorithms
GC: Generational Collections
Demo: Tuning Heap & Analyzing GC Cycles
Eliminate Obsolete Object References (aka Memory Leaks)
Stack
Stack Frame
Instruction Set: invokespecial & invokevirtual + Demo
Conclusion
Chapter Quiz

18 Topics
Chapter Introduction
Demo: Exceptions & Exception Handling
Demo: Multiple Exceptions & Polymorphically Referencing Exceptions!!
Checked & Unchecked Exceptions + Demo
Exceptions & Method Overriding
finally Block + Demo
try-with-resources Statement + Demo
Demo: Suppressed Exceptions
Demo - Best Practices: Creating New Exceptions
Demo - Best Practices for Capturing Failure Information
Demo - Best Practice: Exception Translation & Chaining
Extending Compute GPA Exercise with Exceptions
Exceptions: More Advice ...
Assertions
Demo: Assertions
Conclusion
Chapter Quiz
Exceptions ~ Important Q&A Discussions!

17 Topics
Chapter Introduction
Character Encoding + Demo (Prerequisite)
Stream IO
Byte Streams
Reading Byte-Oriented Files Efficiently + Decorator Pattern + Demo
Character Streams
Reading & Writing Text Efficiently
Project Extension: Reading User & Bookmark Data from Text Files (Demo)
Project Extension: Downloading WebLinks & Writing to Disk (Demo)
Demo: Reading User Input from Console using BufferedReader & Scanner
The File Class + Demo
Serializing Java Objects + Demo
Deserialization & Versioning + Demo
Demo: Decoding with Compatible Encoding Scheme
Conclusion
Chapter Quiz
Input-Output ~ Important Q&A Discussions!

30 Topics
Chapter Introduction
Collection Interface
List Interface
ArrayList - Introduction
Demo: ArrayList
Iterator + Demo
List Iterator + Demo
LinkedList
Queue & Deque Interfaces
ArrayDeque + Demo
Flight Reservation System ~ Putting Lists & Queues into Action!
Hash Table
Set Interface & HashSet + Demo + (Overriding hashCode & Equals)
LinkedHashSet + Demo
SortedSet & NavigableSet
TreeSet (Comparable & Comparator) + Demo
Demo: More TreeSet ~ Exploring NavigableSet Methods
TreeSet & Comparator Exercise
Map Interface
Demo: HashMap + Excercise
Demo: Beware of Creating Mutable Keys
LinkedHashMap + Demo
SortedMap NavigableMap and TreeMap + Demo
Demo: Arrays Class
Demo: Arrays Class (Part 2) ~ Parallelized Operations from Java 8
Demo: Collections Class
Best Practice: Return Empty Arrays or Collections
Conclusion - A Quick Summary
Chapter Quiz
Collections ~ Important Q&A Discussions!

19 Topics
Chapter Introduction ~ Motivation & Agenda
Generic & Parameterized Types
Demo: Creating Generic Types + Type Erasure Discussion
Project Extension: Replacing Arrays with ArrayLists (Part 1)
Project Extension: Replacing Arrays with ArrayLists (Part 2)
End of Part 1 (Core Java) of the Course
Bounded Type Parameter + Demo
Avoid Raw Types in New Code
Unbounded Wildcard + Demo
Invariance + Demo + Prefer Lists to Arrays
Generic Methods
Demo: Generic Methods & Generic Constructors
Bounded Wildcards: Motivation + Demo
Bounded Wildcards & More Expressive APIs
Demo: Bounded Wildcards
Generics Restrictions
Conclusion - A Quick Summary
Chapter Quiz
Important Q&A Discussions!

10 Topics
Chapter Introduction
Nonstatic Member Classes + Demo
Minor Note on Nonstatic Member Classes from Java 16
Anonymous Classes + Demo & Function Objects
Local Classes + Demo
Fix in Previous Demo on Local Classes for Java 9 and above
Static Member Classes (Favor them!) + Demo
Variable Scope with Nested Classes
Conclusion - A Quick Summary
Anonymous Class & Static Member Class Exercise

7 Topics
enums: Motivation & Introduction (Avoid int Constants)
Enum Class + Demo
enums with State & Behavior + Demo
Nested enums + Demo
Project Extension: Converting Constant Exporting Classes to Enums
enums with Constant-specific Behavior + Demo
Chapter Quiz

24 Topics
Chapter Introduction ~ Motivation & Agenda
Threads: Introduction
Minor Correction on Thread States
Demo: Launching Threads and Making them to Sleep!
Demo: Thread Naming Prioritization and Joining (Avoid Thread Groups)
Race Condition + Demo
Synchronization + Demo
Java Memory Model (JMM)
Volatile Variables + Demo
Atomic Variables + Demo
Synchronization Best Practices
Thread Cooperation & Management + Demo
Demo: wait & notify
Thread Interruption + Demo
Explicit Locks (Reentrant Lock) + Demo
Quiz: Concurrency Part 1
Prefer Concurrency Utilities over wait & notify
Executor Framework + Demo
Executor Service & Future
Demo: ExecutorService & Future
Tasks with Time Limits + Demo
Project Extension: Downloading Web Links Concurrently
Project Extension: Implementing Background Job to Download Web Links
Quiz: Concurrency Part 2

6 Topics
Agenda
Background ~ epoch UTC Timezone ...
Legacy API ~ Date & Calendar Classes + Demo
New Date & Time API ~ Introduction
Demo: New Date & Time API
Implementing Flight Booking Feature ~ Putting new Date & Time API into practice!

11 Topics
Database Introduction & Chapter Agenda
Installing MySQL Database & MySQL Workbench
Database Design & Normalization
Database Design using MySQL Workbench
Project Ext.: Creating Database via CREATE & INSERT Queries + Storage Engines
Installing JDBC Driver
Writing SELECT Queries with Multiple Tables GROUP BY ORDER BY etc.
Project Extension: Loading Data from Database via JDBC API
Project Extension: Saving Bookmarking Data via INSERT Queries
Project Extension: ALTER Query & Saving Kid-Friendly Details via UPDATE Queries
Useful Links to Some Tutorials

23 Topics
Functional-style Programming: Motivation & Chapter Agenda
Lambdas ~ Introduction
Demo: Lambdas
Demo: Capturing Variables from Lambdas ~ Closures!
Quiz: Lambdas
Predicate (Bi) Function and Unary Operator Interfaces + Demo
Demo: Consumer Supplier and Primitive Functional Interfaces
Quiz: Functional Interfaces
Demo: Method References
Demo: Constructor References
Streams + Demo
Stream Operations: An Overview
Demo: Slicing a Stream
Demo: Stream Matching Operations
Demo: Stream Finding Operations & Optional Class
Stream Reduction Operations + Demo
Let's test our skills on reduce() operation
Mutable Reduction with Collection Operations + Demo
collect() with Collector
Demo: Collecting Stream into List & Set
Demo: Grouping Stream Elements
Demo: Summarizing Groups & Generating Multi-level Groups
Important Q&A Discussions!

15 Topics
Motivation & Agenda
Web Basics
Java EE & Servlet Containers
Installing Tomcat
BooksAloha! ~ Creating & Deploying a Web Application using Servlets
Very Minor Correction in the Previous Lecture
Servlet Life Cycle
Implementing BooksAloha! as MVC using JSP
Using JSTL to Improve Presentation Layer
Project Extension: Web-enabling thrill.io Project
Project Extension: Implementing Browse Functionality
Project Extension: Implementing Bookmarking & MyBooks Functionality
Project Extension: Implementing Login Functionality with Session
JAR Files - Introduction
Demo: Creating & Manipulating JAR Files

3 Topics
Record: Introduction
Records with Explicit Constructors
Restrictions on Records

8 Topics
Closing Comments
Note on Rest of the Section
Important Resources for Features Not Discussed in Course
Introduction to Version Control System (VCS)
Introduction to Git
Big O Notation
Java on Web: Websites & Social Media Groups to Follow
Bonus: Follow-up Steps Towards Becoming a Full-Stack Java Developer!

  Write a Review

Java In-Depth: Become a Complete Java Engineer!

Go to Paid Course