Mastering Core Java with Best Practices
In-depth Java course integrated with best practices & design principles along with an instructor-led project
eNroll for $50eNroll for ₹3500Learn Best Practices
Master design principles & best practices for writing well-designed, professional code
Master Java Language
Gain in-depth understanding of core Java with 40+ hours of high quality video lectures. Self-paced with 24x7 life-time access
Real-World Project
Gain real-world experience by implementing an instructor-led project using professional coding conventions
Course Overview
This course has been meticulously designed to help you in setting up a solid foundation in Java. Having realized the short-comings in the way programming is being currently taught, it takes a truly holistic approach in teaching the langauge. Apart from discussing every concept at a very in-depth level, it also teaches the best practices & design rules that are essential for building well-designed software. So, while learning the core language, you also get to learn the professional coding conventions that software engineers at top companies like Amazon & Google follow. You'll also implement an instructor-led project using professional coding conventions.
This is a wonderful course. The Instructor is highly competent. He is a world-class instructor ... Taking this course will definitely give you a tremendous appreciation for this great language.
Over 100k students from over 150 countries are learning from the lectures in this course. Many large multi-national companies are also utilizing these lectures in training their new hires. Over 20 million minutes of these lectures have been watched so far. This course has helped many students start their professional journey as confident Java programmers.
What you will learn
The course is very comprehensive covering everything from origins of Java to language basics, object-oriented concepts & design, JVM internals, exceptions, IO, collections framework, generics, and basics of multi-threading. An instructor-led project is also included and is built progressively as we learn new concepts.
Every concept is clearly explained with well thought out examples, nice illustrations and demonstrated in code with Eclipse as IDE. An excellent Eclipse tutorial is also included. Several challenging coding exercises & quizzes are included to validate what has been learned.
Finally, course also teaches several best practices & design principles that are essential for writing well-designed code. This is one of the main highlights of the course.
Mastering Core Java
Gain in-depth understanding of core Java including JVM internals. Includes several challenging coding exercises & quizzes to reinforce what you've learned.
Best Practices & Design Principles
Get a deep understanding of professional coding conventions and design rules that any good software engineer must know.
Implementing a Real-World Project
Get real-world experience by developing an instructor-led project that follows professional coding conventions.
Coding Exercises & Quizzes
Several challenging coding exercises & quizzes are included to validate what you have learnt
Quick Personalized Responses
Get in-depth personalized responses within 24 hours for all your questions. 10k+ questions have already been answered
Core Java Engineer Certification
Get certified as Core Java Engineer on completing the course. See FAQ below for more details. As the Java language evolves, the course will also be updated with any relevant new features.
Course Curriculum
-
Chapter Introduction - 3:08
-
What is Java & Who is Using It? - 6:42
-
Story behind Java's Creation ~ A Brief History - 7:36
-
Compilation - 9:51
-
Platform Dependency - 8:38
-
Interpreter - 7:50
-
Platform Independence in Java - 8:57
-
Java Virtual Machine - 14:01
-
An Overview of Java SE - 21:28
-
Java SE Release Cycles & Release History - 6:49
-
Installing JDK 17 on Windows - 22:58
-
Installing Java on Mac - 4:46
-
Installing Java on Linux - 6:52
-
Setting Classpath Environment Variable - 9:20
-
Writing First Java Program - 16:15
-
Conclusion - 2:40
-
Chapter Quiz
-
Important Q&A Discussions! (S)
-
Chapter Introduction - 3:19
-
Class & Objects - 12:32
-
Absolute Java Basics - 17:13
-
Variables: Introduction - 10:20
-
Declaring & Re-initializing Variables - 15:00
-
Assignment: Currency Converter - Creating a Class with Variables
-
Variables: Primitive Types - 2:00
-
Primitive Variables: Integers - 19:47
-
Question on Binary Representation of Negative Number
-
Other Integer Literal Formats - 10:33
-
Primitive Variables: Floating-point Numbers - 11:09
-
Floating-point Pitfalls* - 10:55
-
Primitive Variables: Character Data Type - 17:01
-
Alternate ways to initialize char variables - 6:25
-
Primitive Variables: Boolean Data Type - 5:57
-
Variable Kinds - 26:38
-
Multi-variable Declaration Statements - 9:31
-
Quiz: Variables
-
Variables: Type Casting - 19:25
-
Variables: Object References - 6:19
-
Statements - 7:40
-
Arrays - 27:35
-
Assignment: Currency Converter - Array Creation & Accessing it Elements
-
2D Arrays - 7:22
-
3D Arrays - 5:20
-
Use byte & short Variables Judiciously (S)
-
Methods: Introduction - 20:51
-
Method Types - 21:27
-
Summary on Accessibility of Members from Static & Instance Methods
-
Assignment: Currency Converter ~ Invoking Methods of an Object
-
How Data is Passed to Methods in Java? - 18:18
-
Method Overloading - 10:21
-
Methods: varargs - 8:39
-
Constructors - 22:07
-
Constructor Overloading - 24:47
-
Constructor Overloading ~ Alternate way of delegating - 3:58
-
Minor Note on Method Invocation & Implicit Narrowing Conversion (S)
-
this Reference - 14:35
-
Reinitializing Object References ~ More Brainstorming! - 20:00
-
Minor Note on Executing StudentTest
-
Coding Exercise 1: Arrays with Object References
-
Review of Exercise 1 Solution with Best Practices - 21:43
-
Conclusion - 3:38
-
Chapter Quiz
-
Important Q&A Discussions! (S)
-
Chapter Introduction - 3:32
-
Operators - 4:09
-
Arithmetic Operators - 22:13
-
Arithmetic Operation Rules - 8:55
-
Quiz: Arithmetic Operators
-
Note on Student Class
-
Comparison Operators - 14:45
-
Logical Operators - 28:13
-
Car Price Estimator ~ Coding Exercise for Comparison & Logical Operators - 19:48
-
Coding Exercise 2: Car Price Estimator ~ Putting Comparison & Logical Operators into Action
-
Car Price Estimator - Exercise Solution - 6:06
-
Bitwise Operators - 9:24
-
Quick Note on Bitwise Operators with Boolean Operands
-
Bit Shift Operators - 5:37
-
Quiz: Bitwise & Bit Shift Operators
-
Control-flow: if-statement - 18:05
-
Control-flow: switch - 18:04
-
When is switch Preferred? - 3:36
-
Quiz: switch Statement
-
Control-flow: Ternary - 7:25
-
Additional Notes on Ternary Operator
-
Control-flow: for Statement - 11:56
-
More for Statement ... - 21:54
-
for-each Statement* - 18:42
-
Variable Scope - 5:16
-
Exercise
-
Coding Exercise 3: Computing GPA ~ Putting Operators & Control-flow to Test
-
Control-flow: while Statement - 3:26
-
Control-flow: break Statement - 9:16
-
Control-flow: continue - 5:08
-
Recursion - 27:01
-
Minor Correction in Binary Search Code
-
Conclusion - 5:54
-
Chapter Introduction - 2:43
-
Strings: Introduction - 5:44
-
String Class - 19:46
-
Assignment: Calculating Term Frequency in a Document
-
String Pool & Interning - 15:51
-
String Immutability - 3:29
-
String Concatenation - 10:32
-
String Concatenation Performance* - 3:14
-
Escape Sequences - 4:50
-
Strings - Important Q&A Discussions! (S)
-
Coding Exercise 4: Sentiment Analysis: Mining Pros & Cons ~ Putting String Class to Test
-
Math Class - 20:14
-
Boxed Primitives & Static Factory Methods* - 14:15
-
Uses of Boxed Primitives - 15:23
-
Autoboxing - 4:25
-
Prefer Primitives over Boxed Primitives* - 11:36
-
Coding Exercise 5: Parsing API Response ~ Let's make use of Boxed Primitives & String class
-
Chapter Quiz
-
Chapter Introduction - 1:23
-
Information Hiding - Use Accessor Methods* - 10:58
-
Enhancing Student Example with Information Hiding - 12:26
-
Minimize Accessibility of Classes & Members* - 3:49
-
Coding Conventions: Naming Classes, Methods and Variables* - 10:04
-
Coding Conventions: Structuring Programs* - 7:31
-
Coding Conventions: Stylistic - 6:39
-
Coding Conventions: Comments - 13:12
-
Inheritance - 8:27
-
Access Modifiers & Inheritance + Demo - 12:27
-
Note on Recommended Order for Modifiers (S)
-
IS-A Test - 4:07
-
Coding Exercise 6: Hospital Management System (HMS) ~ Let's put Inheritance into practice!
-
Polymorphism + Demo - 12:20
-
Casting Objects & instanceof Operator + Demo - 9:49
-
Coding Exercise 7: Extending HMS with a Billing Component ~ Putting Polymorphism into Practice!
-
Type Safety - 7:27
-
Method Overriding + Demo - 14:49
-
Minor Correction in First Method Overriding Rule
-
Method Binding + Demo - 17:03
-
Question on Method Binding
-
What is Not Overridden? (final Method is one of them) + Demo - 14:17
-
Demo: Fields are Not Overridden - 3:03
-
Object Class + Demo* - 7:52
-
Constructor Chaining + Demo - 8:33
-
Preventing Inheritance - 5:30
-
Conclusion - 7:02
-
Chapter Quiz
-
New Requirement: thrill.io for Kids - 6:14
-
Note on Next Lecture on Abstract Classes
-
Abstract Classes & Methods + Demo - 6:27
-
Note on Abstract Classes & Constructors
-
Prefer Class Hierarchies over Tagged Classes* - 5:58
-
Coding Exercise 8: Computing Health Insurance Premium for Staff ~ Let's put Abstract Classes & Methods into practice!
-
New Requirement: Sharing Bookmarks - 5:20
-
Multiple Inheritance & Diamond Problem - 4:08
-
Interfaces - 18:44
-
More on Interfaces - 8:08
-
Note on Next Lecture on Interfaces
-
Demo: Interfaces - 11:23
-
Interfaces: A Conceptual View - 7:50
-
Prefer Interfaces over Abstract Classes* - 7:56
-
Refer Objects through their Interfaces* - 3:20
-
Coding Exercise 9: Computing Health Insurance Premium for Staff (Part 2) ~ Let's put Interfaces into practice!
-
Marker Interfaces - 6:44
-
Cloneable Interface + Demo - 6:03
-
default Methods (Java 8) + Demo - 18:51
-
Recap of default Methods - 4:17
-
default Methods: Other Benefits + Demo - 10:09
-
Static Methods in Interfaces + Demo - 11:48
-
Conclusion - 12:37
-
Chapter Quiz
-
Important Q&A Discussions!
-
Project Introduction - 3:58
-
MVC Architecture - 6:55
-
Implementing Entities - 12:04
-
Implementing Manager Classes - Demonstrates Singleton Pattern!! - 12:33
-
Implementing Constant Exporting Classes - 4:50
-
Implementing Data Store - 18:40
-
Implementing Dao Classes - 5:40
-
Launching the Application - 9:14
-
Implementing User Bookmarking Feature - 15:54
-
Implementing Kid-Friendly Eligibility Criteria Using TDD - 19:41
-
Marking Bookmarks as Kid-Friendly - 19:01
-
Minor Coding Correction in Previous Lecture
-
Implementing Sharing Feature: Part 1 (Implementing Shareable Interface) - 13:31
-
Troubleshooting StringUtils Compilation Issue
-
Implementing Sharing Feature: Part 2 (View, Controller and Manager) - 19:08
-
Introduction - 8:28
-
Lifetime of a Type - 8:32
-
Lifetime of a Type: Class Loading - 9:36
-
Lifetime of a Type: Linking - 10:07
-
Demo: Lifetime of a Type - 17:50
-
Quiz: Lifetime of a Type
-
Reflection - 7:55
-
Accessing Class Object - 6:20
-
Demo: Reflection - 12:44
-
Coding Exercise 10: Simulate a Basic Unit Testing Framework ~ Putting reflection into action!
-
Runtime Data Areas - 6:33
-
Method Area & Heap - 10:46
-
Method Table - 6:55
-
Garbage Collection: Introduction - 8:46
-
Garbage Collection Algorithms - 7:13
-
GC: Generational Collections - 10:08
-
Important Questions on GC Algorithm (S)
-
Demo: Tuning Heap & Analyzing GC Cycles - 7:43
-
Eliminate Obsolete Object References (aka Memory Leaks)* - 6:25
-
Stack - 5:48
-
Stack Frame - 6:03
-
Instruction Set: invokespecial & invokevirtual + Demo - 17:57
-
Conclusion - 8:04
-
Chapter Quiz
-
Chapter Introduction - 3:04
-
Demo: Exceptions & Exception Handling - 15:00
-
Demo: Multiple Exceptions & Polymorphically Referencing Exceptions!! - 9:40
-
Checked & Unchecked Exceptions + Demo - 10:08
-
Exceptions & Method Overriding
-
finally Block + Demo - 11:53
-
try-with-resources Statement + Demo - 15:09
-
Demo: Suppressed Exceptions - 7:23
-
Demo - Best Practices: Creating New Exceptions* - 12:49
-
Demo - Best Practices for Capturing Failure Information* - 9:20
-
Demo - Best Practice: Exception Translation & Chaining* - 7:13
-
Coding Exercise 11: Extending Compute GPA Exercise with Exceptions
-
Bit of Brainstorming! (S)
-
Exceptions: More Advice ...* - 6:22
-
Assertions - 10:07
-
Demo: Assertions - 9:19
-
Conclusion - 6:08
-
Chapter Quiz
-
Chapter Introduction - 6:32
-
Character Encoding + Demo (Prerequisite) - 19:40
-
Stream IO - 6:33
-
Byte Streams - 5:50
-
Reading Byte-Oriented Files Efficiently + Decorator Pattern + Demo - 19:56
-
Character Streams - 4:07
-
Reading & Writing Text Efficiently - 9: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 & Scanner - 9:38
-
The File Class + Demo - 14:39
-
Serializing Java Objects + Demo - 17:34
-
Deserialization & Versioning + Demo - 12:04
-
Demo: Decoding with Compatible Encoding Scheme - 3:35
-
Conclusion - 7:17
-
Chapter Quiz
-
Input-Output ~ Important Q&A Discussions! (S)
-
Chapter Introduction - 7:35
-
Collection Interface - 6:31
-
List Interface - 3:31
-
ArrayList - Introduction - 6:12
-
Demo: ArrayList - 16:16
-
Iterator + Demo - 19:18
-
List Iterator + Demo - 10:36
-
LinkedList - 10:38
-
Queue & Deque Interfaces - 9:36
-
ArrayDeque + Demo - 9:46
-
Coding Exercise 12: Flight Reservation System ~ Putting Lists & Queues into Action!
-
Hash Table - 9:36
-
Set Interface & HashSet + Demo + (Overriding hashCode & Equals)* - 14:51
-
LinkedHashSet + Demo - 5:21
-
SortedSet & NavigableSet - 9:04
-
TreeSet (Comparable & Comparator) + Demo - 18:03
-
Demo: More TreeSet ~ Exploring NavigableSet Methods - 9:46
-
Coding Exercise 13: TreeSet & Comparator Exercise
-
Map Interface - 8:32
-
Demo: HashMap + Excercise - 13:38
-
Demo: Beware of Creating Mutable Keys - 7:35
-
LinkedHashMap + Demo - 17:42
-
SortedMap, NavigableMap and TreeMap + Demo - 10:17
-
Demo: Arrays Class - 19:54
-
Further Clarification on Arrays.asList() Explanation
-
Demo: Arrays Class (Part 2) ~ Parallelized Operations from Java 8 - 8:22
-
Demo: Collections Class - 16:34
-
Best Practice: Return Empty Arrays or Collections* - 5:18
-
Conclusion - A Quick Summary - 8:34
-
Chapter Quiz
-
Collections ~ Important Q&A Discussions! (S)
-
Chapter Introduction ~ Motivation & Agenda - 8:12
-
Threads: Introduction - 7:52
-
Minor Correction on Thread States
-
Demo: Launching Threads and Making them to Sleep! - 14:40
-
Demo: Thread Naming, Prioritization and Joining (Avoid Thread Groups)* - 12:55
-
Race Condition + Demo - 13:28
-
Synchronization + Demo* - 10:49
Instructor Bio
Dheeru Mundluru is the instructor for this program. 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 an experienced online instructor and is also rated as one of the top instructors on Udemy. 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.
Writing well-crafted code that follows the best design practices is of utmost importance to him. He brings the same level of passion and completeness to his teaching.
Frequently Asked Questions
When does the course start and finish?
You can start & finish it anytime. For someone completely new to programming, it can take around 2 months of full-time effort to complete it in the right way. That would set you up for the rest of your career!
Is the course for beginners and any prerequisites?
Course is designed to help "absolute" beginners to truly master Java and use it professionally. Over half year of your self-study effort has been packed into 40+ hours. Only requirement is you need to put in lot of effort and work through the course patiently & systematically. So, no prerequisites.
What is Core Java Engineer certification? What are its requirements?
Core Java Engineer certification is a true validation of skills that you have mastered through this course. If you wish to receive this optional certificate, you'll have to complete all lectures and submit working code for all coding exercises and the instructor-led project. Once all your code and details are verified, you'll be given access to a mini-project, which you will have to successfully complete.
Is the course fee refundable?
No. To ensure the course is right fit for you, please review the preview videos, course description and curriculum carefully.
What they are saying about the course
"Absolutely amazing, complete and in depth course. I would recommend this course to everyone interested in Java and programming in general. Dheeru Mundluru is an exemplary and responsive instructor. ... due to this course I have fell in love with Java language and its ecosystem."
Muhammad
"I have bought so many courses but this course has been a game changer to me. It is in depth as the name says. It helped me pass a paid internship interview in a reputable company and now i am getting a job. ..."
Stephen
"This is a wonderful course. The Instructor is highly competent. He is a world-class instructor ... Taking this course will definitely give you a tremendous appreciation for this great language."