Java In-Depth: Become a Complete Java Engineer!

Comprehensive Java programming course integrated with design principles, best practices & instructor-led Java EE project

  • Dheeru Mundluru
  • 4.46
  • (20285 reviews)
  • 67 hrs
  • 377 lectures
  • Udemy
Java In-Depth: Become a Complete Java Engineer!

What you will learn?

  • Gain in-depth understanding of core & advanced features of 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 using technologies like JSP, Servlets and MySQL
  • Set firm foundation in Java for the rest of your career. That's a promise!
  • 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
  • Set yourself up to become an Oracle Certified Associate, Java SE 8 Programmer (1Z0-808)

Your trainer

Dheeru Mundluru

A passionate software engineer & educator, Dheeru has around 15 years of experience developing innovative software for start-ups in silicon valley and elsewhere. He holds a Ph.D. in Computer Science from University of Louisiana at Lafayette (USA). He is currently the CTO & Principal Instructor at his EdTech start-up, Semantic Square, through which he is involved in building World-class engineers. He is an experienced on-line instructor and has taught tens of thousands of students across the globe. In 2018, Udemy rated Dheeru as one of their top 10% most engaging instructors (from over 40k instructors). His engineering expertise includes developing complex Web data integration & mining software with Java as the main programming tool. Coming from start-up world, he also has extensive end-to-end experience in developing Web applications using technologies such as Spring, Hibernate, MySQL, and Solr.

377 lessons

Easy to follow lectures and videos covering subject details.

67 hours

This course includes hours of video material. Watch on-demand, anytime, anywhere.

Certificate of Completion

You will earn a Certificate of Completion at the end of this course.

Course curriculum

  • Why Yet Another Java Course?06:49
  • Course Structure & Guidance for Doing this Course19:34
  • Terms of Service & Copyright00:30
  • Chapter Introduction03:08
  • What is Java & Who is Using It?06:42
  • Story behind Java's Creation ~ A Brief History07:36
  • Compilation09:51
  • Platform Dependency + Demo08:38
  • Interpreter07:50
  • Platform Independence in Java + Demo08:57
  • Java Virtual Machine14:01
  • An Overview of Java SE21:28
  • Java SE Release Cycles & Release History06:49
  • Installing JDK 17 on Windows22:58
  • Installing Java on Mac04:46
  • Installing Java on Linux06:52
  • Setting Classpath Environment Variable09:20
  • Writing First Java Program + Demo16:15
  • Conclusion02:40
  • Chapter Quiz5 questions
  • Important Q&A Discussions!02:14
  • Chapter Introduction03:19
  • Class & Objects12:32
  • Demo: Absolute Java Basics17:13
  • Variables: Introduction10:20
  • Demo: Declaring & Re-initializing Variables15:00
  • Currency Converter - Creating a Class with Variables1 question
  • Variables: Primitive Types02:00
  • Primitive Variables: Integers + Demo19:48
  • Demo: Other Integer Literal Formats10:33
  • Primitive Variables: Floating-point Numbers + Demo11:09
  • Demo: Floating-point Pitfalls10:55
  • Primitive Variables: Character Data Type + Demo17:01
  • Demo: Alternate ways to initialize char variables06:25
  • Demo: Primitive Variables: Boolean Data Type05:57
  • Demo: Variable Kinds26:38
  • Demo: Multi-variable Declaration Statements09:31
  • Quiz: Variables7 questions
  • Variables: Type Casting + Demo19:25
  • Variables: Object References + Demo06:19
  • Statements + Demo07:40
  • Arrays + Demo27:35
  • Currency Converter - Array Creation & Accessing it Elements1 question
  • 2D Arrays07:22
  • 3D Arrays + Demo05:20
  • Methods: Introduction + Demo20:51
  • Method Types + Demo21:27
  • Summary on Accessibility of Members from Static & Instance Methods00:26
  • Currency Converter ~ Invoking Methods of an Object1 question
  • How Data is Passed to Methods in Java? + Demo18:18
  • Method Overloading + Demo10:21
  • Methods: varargs + Demo08:39
  • Constructors + Demo22:07
  • Constructor Overloading + Demo24:47
  • Demo: Constructor Overloading ~ Alternate way of delegating03:58
  • Demo: this Reference14:35
  • Demo: Reinitializing Object References ~ More Brainstorming!20:01
  • Minor Note on Executing StudentTest00:53
  • Arrays with Object References1 question
  • Review of Exercise 1 Solution with Best Practices21:43
  • Conclusion03:38
  • Chapter Quiz13 questions
  • Important Q&A Discussions!07:52
  • Chapter Introduction03:32
  • Operators04:09
  • Arithmetic Operators + Demo22:13
  • Arithmetic Operation Rules + Demo08:55
  • Quiz: Arithmetic Operators3 questions
  • Note on Student Class00:27
  • Demo: Comparison Operators14:45
  • Logical Operators + Demo28:14
  • Car Price Estimator ~ Coding Exercise for Comparison & Logical Operators19:48
  • Car Price Estimator ~ Putting Comparison & Logical Operators into Action1 question
  • Car Price Estimator - Exercise Solution Review06:06
  • Bitwise Operators + Demo09:24
  • Quick Note on Bitwise Operators with Boolean Operands00:48
  • Bit Shift Operators05:37
  • Quiz: Bitwise & Bit Shift Operators4 questions
  • Control-flow: Demo: if-statement18:05
  • Control-flow: switch + Demo18:04
  • When is switch Preferred?03:36
  • Quiz: switch Statement3 questions
  • Control-flow: Ternary + Demo07:26
  • Additional Notes on Ternary Operator00:32
  • Control-flow: for Statement + Demo11:57
  • Demo: More for Statement ...21:54
  • Demo: for-each Statement18:42
  • Variable Scope05:16
  • Exercise2 pages
  • Computing GPA ~ Putting Operators & Control-flow to Test1 question
  • Computing GPA - Exercise Solution Review21:28
  • Control-flow: while Statement03:26
  • Control-flow: break Statement + Demo09:16
  • Control-flow: continue + Demo05:08
  • Recursion + Demo27:01
  • Minor Correction in Binary Search Code00:25
  • Conclusion05:55
  • Chapter Introduction02:29
  • Java API09:21
  • Accessing Packages + Demo16:41
  • Creating Packages & Classpath Management + Demo29:39
  • Naming Packages04:18
  • Access Levels + Demo22:36
  • More on private Modifier + Demo10:27
  • Quiz: Packages4 questions
  • Strings: Introduction05:44
  • String Class + Demo19:46
  • Calculating Term Frequency in a Document1 question
  • String Pool & Interning + Demo15:51
  • String Immutability03:29
  • String Concatenation + Demo10:32
  • String Concatenation Performance03:15
  • Escape Sequences + Demo04:50
  • Sentiment Analysis: Mining Pros & Cons ~ Putting String Class to Test1 question
  • Information Hiding - Use Accessor Methods10:58
  • Demo: Enhancing Student Example with Information Hiding13:12
  • Minimize Accessibility of Classes & Members03:49
  • Conclusion07:02
  • Chapter Quiz6 questions
  • Important Q&A Discussions!01:19
  • Introduction02:56
  • Installing Eclipse06:05
  • Writing a Java Program in Eclipse14:40
  • Eclipse Build Process15:44
  • Short Note before Importing Demo Code00:29
  • Importing Demo Code04:31
  • Source Code Navigation11:40
  • Automatic Source Code Cleaning & Generation14:10
  • Shortcuts Cheat Sheet00:10
  • Chapter Introduction02:59
  • Note on Few Demos00:29
  • Demo: Math Class20:14
  • Initializers: Static & Instance + Demo07:44
  • Note on Instance Initialization Blocks00:33
  • final Variable + Demo09:44
  • Constant Variables + Demo10:22
  • Boxed Primitives & Static Factory Methods+ Demo14:15
  • Demo: Uses of Boxed Primitives15:23
  • Autoboxing + Demo04:25
  • Prefer Primitives over Boxed Primitives11:37
  • Parsing API Response ~ Let's make use of Boxed Primitives & String class1 question
  • Coding Conventions: Naming Classes, Methods and Variables10:04
  • Coding Conventions: Structuring Programs07:31
  • Coding Conventions: Stylistic + Demo06:39
  • Coding Conventions: Comments + Demo13:12
  • Conclusion06:31
  • Chapter Quiz4 questions
  • thrill.io ~ A Social Polymarking App!10:15
  • Case Study04:15
  • Inheritance08:27
  • Access Modifiers & Inheritance + Demo12:27
  • IS-A Test04:07
  • Hospital Management System (HMS) ~ Let's put Inheritance into practice!1 question
  • Polymorphism + Demo12:20
  • Casting Objects & instanceof Operator + Demo09:49
  • Extending HMS with a Billing Component ~ Putting Polymorphism into Practice!1 question
  • Type Safety07:27
  • Method Overriding + Demo14:49
  • Minor Correction in First Method Overriding Rule00:31
  • Method Binding + Demo17:03
  • What is Not Overridden? (final Method is one of them) + Demo14:17
  • Demo: Fields are Not Overridden03:03
  • Object Class + Demo07:52
  • Constructor Chaining + Demo08:33
  • Preventing Inheritance05:30
  • Conclusion07:02
  • Chapter Quiz11 questions
  • New Requirement: thrill.io for Kids06:14
  • Note on Next Lecture on Abstract Classes00:20
  • Abstract Classes & Methods + Demo06:27
  • Note on Abstract Classes & Constructors00:37
  • Prefer Class Hierarchies over Tagged Classes05:58
  • Computing Health Insurance Premium for Staff ~ Let's put Abstract Classes & Methods into practice!1 question
  • New Requirement: Sharing Bookmarks05:20
  • Multiple Inheritance & Diamond Problem04:08
  • Interfaces18:44
  • Update to Interfaces due to Java 900:26
  • More on Interfaces08:08
  • Note on Next Lecture on Interfaces00:20
  • Demo: Interfaces11:23
  • Interfaces: A Conceptual View07:50
  • Prefer Interfaces over Abstract Classes07:56
  • Refer Objects through their Interfaces03:20
  • Computing Health Insurance Premium for Staff (Part 2) ~ Let's put Interfaces into practice!1 question
  • Marker Interfaces06:44
  • Cloneable Interface + Demo06:03
  • default Methods (Java 8) + Demo18:51
  • Recap of default Methods04:17
  • default Methods: Other Benefits + Demo10:09
  • Static Methods in Interfaces + Demo11:48
  • Private Methods in Interfaces00:53
  • Conclusion12:37
  • Chapter Quiz7 questions
  • Important Q&A Discussions!01:59
  • Note on Reorganizing Eclipse Tutorial00:46
  • Using Eclipse Debugger17:35
  • JUnit & Debugging18:03
  • Shortcuts Cheat Sheet00:03
  • Project Introduction03:58
  • MVC Architecture06:55
  • Implementing Entities12:05
  • Implementing Manager Classes - Demonstrates Singleton Pattern!!12:33
  • Implementing Constant Exporting Classes04:50
  • Implementing Data Store18:40
  • Implementing Dao Classes05:40
  • Launching the Application09:14
  • Implementing User Bookmarking Feature15:54
  • Implementing Kid-Friendly Eligibility Criteria Using TDD19:41
  • Marking Bookmarks as Kid-Friendly19:01
  • Minor Coding Correction in Previous Lecture00:27
  • Implementing Sharing Feature: Part 1 (Implementing Shareable Interface)13:31
  • Troubleshooting StringUtils Compilation Issue00:23
  • Implementing Sharing Feature: Part 2 (View, Controller and Manager)19:08
  • Introduction08:28
  • Lifetime of a Type08:32
  • Lifetime of a Type: Class Loading09:36
  • Lifetime of a Type: Linking10:07
  • Demo: Lifetime of a Type17:50
  • Quiz: Lifetime of a Type4 questions
  • Reflection07:55
  • Accessing Class Object06:20
  • Demo: Reflection12:44
  • Simulate a Basic Unit Testing Framework ~ Putting reflection into action!1 question
  • Runtime Data Areas06:33
  • Method Area & Heap10:49
  • Method Table06:55
  • Garbage Collection: Introduction08:46
  • Garbage Collection Algorithms07:13
  • GC: Generational Collections10:08
  • Demo: Tuning Heap & Analyzing GC Cycles07:43
  • Eliminate Obsolete Object References (aka Memory Leaks)06:25
  • Stack05:48
  • Stack Frame06:03
  • Instruction Set: invokespecial & invokevirtual + Demo17:57
  • Conclusion08:04
  • Chapter Quiz6 questions
  • Chapter Introduction03:04
  • Demo: Exceptions & Exception Handling15:00
  • Demo: Multiple Exceptions & Polymorphically Referencing Exceptions!!09:40
  • Checked & Unchecked Exceptions + Demo10:09
  • Exceptions & Method Overriding00:27
  • finally Block + Demo11:53
  • try-with-resources Statement + Demo15:09
  • Demo: Suppressed Exceptions07:23
  • Demo - Best Practices: Creating New Exceptions12:49
  • Demo - Best Practices for Capturing Failure Information09:20
  • Demo - Best Practice: Exception Translation & Chaining07:14
  • Extending Compute GPA Exercise with Exceptions1 question
  • Exceptions: More Advice ...06:22
  • Assertions10:07
  • Demo: Assertions09:19
  • Conclusion06:08
  • Chapter Quiz6 questions
  • Exceptions ~ Important Q&A Discussions!01:26
  • Chapter Introduction06:32
  • Character Encoding + Demo (Prerequisite)19:40
  • Stream IO06:33
  • Byte Streams05:50
  • Reading Byte-Oriented Files Efficiently + Decorator Pattern + Demo19:56
  • Character Streams04:07
  • Reading & Writing Text Efficiently09:39
  • Project Extension: Reading User & Bookmark Data from Text Files (Demo)10:52
  • Project Extension: Downloading WebLinks & Writing to Disk (Demo)13:02
  • Demo: Reading User Input from Console using BufferedReader & Scanner09:38
  • The File Class + Demo14:39
  • Serializing Java Objects + Demo17:34
  • Deserialization & Versioning + Demo12:04
  • Demo: Decoding with Compatible Encoding Scheme03:35
  • Conclusion07:17
  • Chapter Quiz8 questions
  • Input-Output ~ Important Q&A Discussions!03:37
  • Chapter Introduction07:35
  • Collection Interface06:31
  • List Interface03:31
  • ArrayList - Introduction06:12
  • Demo: ArrayList16:16
  • Iterator + Demo19:18
  • List Iterator + Demo10:36
  • LinkedList10:38
  • Queue & Deque Interfaces09:36
  • ArrayDeque + Demo09:46
  • Flight Reservation System ~ Putting Lists & Queues into Action!1 question
  • Hash Table09:36
  • Set Interface & HashSet + Demo + (Overriding hashCode & Equals)14:51
  • LinkedHashSet + Demo05:21
  • SortedSet & NavigableSet09:04
  • TreeSet (Comparable & Comparator) + Demo18:03
  • Demo: More TreeSet ~ Exploring NavigableSet Methods09:46
  • TreeSet & Comparator Exercise1 question
  • Map Interface08:32
  • Demo: HashMap + Excercise13:38
  • Demo: Beware of Creating Mutable Keys07:35
  • LinkedHashMap + Demo17:42
  • SortedMap, NavigableMap and TreeMap + Demo10:17
  • Demo: Arrays Class19:54
  • Demo: Arrays Class (Part 2) ~ Parallelized Operations from Java 808:22
  • Demo: Collections Class16:34
  • Best Practice: Return Empty Arrays or Collections05:18
  • Conclusion - A Quick Summary08:34
  • Chapter Quiz12 questions
  • Collections ~ Important Q&A Discussions!06:20
  • Chapter Introduction ~ Motivation & Agenda12:24
  • Generic & Parameterized Types08:33
  • Demo: Creating Generic Types + Type Erasure Discussion15:55
  • Project Extension: Replacing Arrays with ArrayLists (Part 1)13:13
  • Project Extension: Replacing Arrays with ArrayLists (Part 2)09:49
  • End of Part 1 (Core Java) of the Course00:21
  • Bounded Type Parameter + Demo11:15
  • Avoid Raw Types in New Code12:14
  • Unbounded Wildcard + Demo10:10
  • Invariance + Demo + Prefer Lists to Arrays07:15
  • Generic Methods15:04
  • Demo: Generic Methods & Generic Constructors20:46
  • Bounded Wildcards: Motivation + Demo11:23
  • Bounded Wildcards & More Expressive APIs12:43
  • Demo: Bounded Wildcards15:26
  • Generics Restrictions04:45
  • Conclusion - A Quick Summary11:58
  • Chapter Quiz5 questions
  • Important Q&A Discussions!05:04
  • Chapter Introduction09:18
  • Nonstatic Member Classes + Demo17:08
  • Anonymous Classes + Demo & Function Objects21:56
  • Local Classes + Demo07:42
  • Fix in Previous Demo on Local Classes for Java 9 and above01:23
  • Static Member Classes (Favor them!) + Demo15:13
  • Variable Scope with Nested Classes04:36
  • Conclusion - A Quick Summary06:24
  • Anonymous Class & Static Member Class Exercise1 question
  • enums: Motivation & Introduction (Avoid int Constants)10:25
  • Enum Class + Demo12:33
  • enums with State & Behavior + Demo06:08
  • Nested enums + Demo04:16
  • Project Extension: Converting Constant Exporting Classes to Enums12:17
  • enums with Constant-specific Behavior + Demo11:10
  • Chapter Quiz7 questions
  • Chapter Introduction ~ Motivation & Agenda08:12
  • Threads: Introduction07:52
  • Minor Correction on Thread States00:44
  • Demo: Launching Threads and Making them to Sleep!14:40
  • Demo: Thread Naming, Prioritization and Joining (Avoid Thread Groups)12:55
  • Race Condition + Demo13:28
  • Synchronization + Demo10:49
  • Java Memory Model (JMM)10:44
  • Volatile Variables + Demo09:29
  • Atomic Variables + Demo17:54
  • Synchronization Best Practices08:40
  • Thread Cooperation & Management + Demo14:44
  • Demo: wait & notify21:54
  • Thread Interruption + Demo23:51
  • Explicit Locks (Reentrant Lock) + Demo25:59
  • Quiz: Concurrency Part 112 questions
  • Prefer Concurrency Utilities over wait & notify05:47
  • Executor Framework + Demo16:21
  • Executor Service & Future13:39
  • Demo: ExecutorService & Future10:18
  • Tasks with Time Limits + Demo11:41
  • Project Extension: Downloading Web Links Concurrently19:20
  • Project Extension: Implementing Background Job to Download Web Links21:03
  • Quiz: Concurrency Part 23 questions
  • Agenda01:55
  • Background ~ epoch, UTC, Timezone ...12:50
  • Legacy API ~ Date & Calendar Classes + Demo24:29
  • New Date & Time API ~ Introduction09:52
  • Demo: New Date & Time API22:43
  • Implementing Flight Booking Feature ~ Putting new Date & Time API into practice!1 question
  • Database Introduction & Chapter Agenda15:12
  • Installing MySQL Database & MySQL Workbench10:30
  • Database Design & Normalization24:31
  • Database Design using MySQL Workbench17:37
  • Project Ext.: Creating Database via CREATE & INSERT Queries + Storage Engines25:29
  • Installing JDBC Driver09:10
  • Writing SELECT Queries with Multiple Tables, GROUP BY, ORDER BY, etc.19:27
  • Project Extension: Loading Data from Database via JDBC API20:50
  • Project Extension: Saving Bookmarking Data via INSERT Queries14:04
  • Project Extension: ALTER Query & Saving Kid-Friendly Details via UPDATE Queries19:14
  • Useful Links to Some Tutorials00:05
  • Functional-style Programming: Motivation & Chapter Agenda08:44
  • Lambdas ~ Introduction13:40
  • Demo: Lambdas10:23
  • Demo: Capturing Variables from Lambdas ~ Closures!13:29
  • Quiz: Lambdas3 questions
  • Predicate, (Bi) Function, and Unary Operator Interfaces + Demo25:09
  • Demo: Consumer, Supplier, and Primitive Functional Interfaces14:33
  • Quiz: Functional Interfaces2 questions
  • Demo: Method References12:59
  • Demo: Constructor References08:52
  • Streams + Demo23:41
  • Stream Operations: An Overview07:03
  • Demo: Slicing a Stream18:49
  • Demo: Stream Matching Operations10:33
  • Demo: Stream Finding Operations & Optional Class18:27
  • Stream Reduction Operations + Demo23:10
  • Let's test our skills on reduce() operation1 question
  • Mutable Reduction with Collection Operations + Demo23:34
  • collect() with Collector10:52
  • Demo: Collecting Stream into List & Set12:01
  • Demo: Grouping Stream Elements18:32
  • Demo: Summarizing Groups & Generating Multi-level Groups25:16
  • Important Q&A Discussions!01:05
  • Motivation & Agenda07:42
  • Web Basics23:31
  • Java EE & Servlet Containers12:07
  • Installing Tomcat07:21
  • BooksAloha! ~ Creating & Deploying a Web Application using Servlets23:55
  • Very Minor Correction in the Previous Lecture00:28
  • Servlet Life Cycle13:35
  • Implementing BooksAloha! as MVC using JSP22:35
  • Using JSTL to Improve Presentation Layer13:44
  • Project Extension: Web-enabling thrill.io Project06:03
  • Project Extension: Implementing Browse Functionality28:55
  • Project Extension: Implementing Bookmarking & MyBooks Functionality29:19
  • Project Extension: Implementing Login Functionality with Session35:06
  • JAR Files - Introduction08:52
  • Demo: Creating & Manipulating JAR Files21:20
  • Closing Comments01:20
  • Big O Notation00:03
  • Java on Web: Websites & Social Media Groups to Follow00:36
  • Bonus: Follow-up Steps Towards Becoming a Full-Stack Java Developer!03:16
Online Courses

Learning Java doesn't have to be hard. Here is our curated list of recommended online courses that will guide you step-by-step in the learning process.

Learn more
Books

Are you an avid book reader? Do you prefer paperback, or maybe Kindle version? Take a look at our curated list of Java related books and take yourskills to the next level.

Learn more
YouTube videos

The number of high-quality and free Java video tutorials is growing fast. Check this curated list of recommended videos - there is no excuse to stop learning.

Learn more