What is Java & Who is Using It?
Story behind Java's Creation ~ A Brief History
Platform Dependency + Demo
Platform Independence in Java + Demo
Java SE Release Cycles & Release History
Installing JDK 17 on Windows
Setting Classpath Environment Variable
Writing First Java Program + Demo
Important Q&A Discussions!
Demo: Absolute Java Basics
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: Multi-variable Declaration Statements
Variables: Type Casting + Demo
Variables: Object References + Demo
Currency Converter - Array Creation & Accessing its Elements
Methods: Introduction + 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
Constructor Overloading + Demo
Demo: Constructor Overloading ~ Alternate way of delegating
Demo: Reinitializing Object References ~ More Brainstorming!
Minor Note on Executing StudentTest
Arrays with Object References
Review of Exercise 1 Solution with Best Practices
Important Q&A Discussions!
Arithmetic Operators + Demo
Arithmetic Operation Rules + Demo
Quiz: Arithmetic Operators
Demo: Comparison Operators
Car Price Estimator ~ Coding Exercise for Comparison & Logical Operators
Car Price Estimator ~ Putting Comparison & Logical Operators into Action
Car Price Estimator - Exercise Solution Review
Quick Note on Bitwise Operators with Boolean Operands
Quiz: Bitwise & Bit Shift Operators
Control-flow: Demo: if-statement
Switch Statement: Introduction
Restaurant Order Price Calculator using Switch Statement
Arrow Labels in Switch (Java 14)
Switch Expressions (Java 14)
Restaurant Order Price Calculator using Switch Expression
Control-flow: Ternary + Demo
Additional Notes on Ternary Operator
Control-flow: for Statement + Demo
Demo: More for Statement ...
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
Minor Correction in Binary Search Code
Accessing Packages + Demo
Creating Packages & Classpath Management + Demo
More on private Modifier + Demo
Calculating Term Frequency in a Document
String Pool & Interning + Demo
String Concatenation + Demo
String Concatenation Performance
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
Important Q&A Discussions!
Initializers: Static & Instance + Demo
Note on Instance Initialization Blocks
Constant Variables + Demo
Boxed Primitives & Static Factory Methods+ Demo
Demo: Uses of Boxed Primitives
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
Access Modifiers & Inheritance + Demo
Hospital Management System (HMS) ~ Let's put Inheritance into practice!
Casting Objects & instanceof Operator + Demo
Extending HMS with a Billing Component ~ Putting Polymorphism into Practice!
Minor Correction in First Method Overriding Rule
What is Not Overridden? (final Method is one of them) + Demo
Demo: Fields are Not Overridden
Constructor Chaining + Demo
Note on Constructor Inheritance
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
Update to Interfaces due to Java 9
Note on Next Lecture on 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!
Cloneable Interface + Demo
default Methods (Java 8) + Demo
default Methods: Other Benefits + Demo
Static Methods in Interfaces + Demo
Private Methods in Interfaces
Important Q&A Discussions!
Implementing Manager Classes - Demonstrates Singleton Pattern!!
Implementing Constant Exporting 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)
Lifetime of a Type: Class Loading
Lifetime of a Type: Linking
Simulate a Basic Unit Testing Framework ~ Putting reflection into action!
Garbage Collection: Introduction
Garbage Collection Algorithms
GC: Generational Collections
Demo: Tuning Heap & Analyzing GC Cycles
Eliminate Obsolete Object References (aka Memory Leaks)
Instruction Set: invokespecial & invokevirtual + Demo
Demo: Exceptions & Exception Handling
Demo: Multiple Exceptions & Polymorphically Referencing Exceptions!!
Checked & Unchecked Exceptions + Demo
Exceptions & Method Overriding
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 ...
Exceptions ~ Important Q&A Discussions!
Character Encoding + Demo (Prerequisite)
Reading Byte-Oriented Files Efficiently + Decorator Pattern + Demo
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
Serializing Java Objects + Demo
Deserialization & Versioning + Demo
Demo: Decoding with Compatible Encoding Scheme
Input-Output ~ Important Q&A Discussions!
Flight Reservation System ~ Putting Lists & Queues into Action!
Set Interface & HashSet + Demo + (Overriding hashCode & Equals)
TreeSet (Comparable & Comparator) + Demo
Demo: More TreeSet ~ Exploring NavigableSet Methods
TreeSet & Comparator Exercise
Demo: HashMap + Excercise
Demo: Beware of Creating Mutable Keys
SortedMap NavigableMap and TreeMap + Demo
Demo: Arrays Class (Part 2) ~ Parallelized Operations from Java 8
Best Practice: Return Empty Arrays or Collections
Conclusion - A Quick Summary
Collections ~ Important Q&A Discussions!
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
Demo: Generic Methods & Generic Constructors
Bounded Wildcards: Motivation + Demo
Bounded Wildcards & More Expressive APIs
Conclusion - A Quick Summary
Important Q&A Discussions!
Nonstatic Member Classes + Demo
Minor Note on Nonstatic Member Classes from Java 16
Anonymous Classes + Demo & Function Objects
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
Chapter Introduction ~ Motivation & Agenda
Minor Correction on Thread States
Demo: Launching Threads and Making them to Sleep!
Demo: Thread Naming Prioritization and Joining (Avoid Thread Groups)
Volatile Variables + Demo
Synchronization Best Practices
Thread Cooperation & Management + Demo
Thread Interruption + Demo
Explicit Locks (Reentrant Lock) + Demo
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
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!
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
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
Functional-style Programming: Motivation & Chapter Agenda
Demo: Capturing Variables from Lambdas ~ Closures!
Predicate (Bi) Function and Unary Operator Interfaces + Demo
Demo: Consumer Supplier and Primitive Functional Interfaces
Quiz: Functional Interfaces
Demo: Constructor References
Stream Operations: An Overview
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
Demo: Collecting Stream into List & Set
Demo: Grouping Stream Elements
Demo: Summarizing Groups & Generating Multi-level Groups
Important Q&A Discussions!
Java EE & Servlet Containers
BooksAloha! ~ Creating & Deploying a Web Application using Servlets
Very Minor Correction in the Previous Lecture
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
Demo: Creating & Manipulating JAR Files
Note on Rest of the Section
Important Resources for Features Not Discussed in Course
Introduction to Version Control System (VCS)
Java on Web: Websites & Social Media Groups to Follow
Bonus: Follow-up Steps Towards Becoming a Full-Stack Java Developer!