Mastering Advanced Java
Master Advanced Java language features for writing highly efficient, elegant, and modular code.
Become a Complete Java Engineer!
Building on your strong Core Java foundations, this course will help you master advanced Java language features that are critical for building large, complex software. You will gain in-depth understanding of Generics, Concurrent, Database, Functional-style, and Modular programming, which will transform you into a truly Complete Java Engineer. The instructor-led bookmarking project will be expanded into a full-blown, industry-grade scalable Web application backed by MySQL database and utilizing Java EE technologies for the front-end.
The advanced skills and comprehensive Java EE project you undertake in this course will prepare you to seamlessly transition into any top engineering team.
We begin by building on your basic Generics knowledge, introducing advanced features like bounded wildcards and generic methods, which enable in creating more expressive APIs. Next, we explore Nested Classes and enums with best practices to enhance class design and program type safety. Through realistic examples, we next delve into advanced multithreading features like the Executors Framework, enabling you to build highly efficient and scalable concurrent programs.
Our journey continues with Database Design and Implementation, covering normalization, basic SQL, and JDBC programming, while extending our project to incorporate a MySQL database. Having mastered Object-Oriented programming, we then transition to Functional Programming paradigm, focusing on Java 8 features such as Lambdas, Method References, and Streams to create concise and readable code.
To give you a feel for Enterprise Java development, we cover Java EE (Servlets & JSTL) and Web Servers, further web-enabling our project into a scalable web application. Finally, we deep dive into Java Modularity (JPMS), learning how to create modular and space-optimized software.
A highlight of this course is the clear and simple explanation of complex concepts through well-thought-out, realistic examples and illustrations. The course also includes numerous design rules to ensure you develop advanced Java programming skills and professional-level proficiency.
You can also earn our Complete Java Engineer certification - our endorsement that you've mastered Java and are ready to write professional-level code. To achieve this certification, apart from completing all the course lectures, quizzes, and the instructor-led Java EE project, you must have already been certified as 'Core Java Engineer!' by completing our two Core Java courses.
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
Important Question on Type Inference & Invariance (+)
Bounded Wildcards: Motivation + Demo
Bounded Wildcards & More Expressive APIs*
Demo: Bounded Wildcards
Generics Restrictions
Conclusion - A Quick Summary
Chapter 19 Quiz
Important Q&A Discussions!
Chapter Introduction
Nonstatic Member Classes & Adapters + Demo
Note on Nonstatic Member Classes - From Java 16 Onwards (+)
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
Coding Exercise 14: Anonymous Class & Static Member Class Exercise
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
Bit of Brainstorming! (+)
Chapter 21 Quiz
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
Important Question on Atomic Variable (+)
Synchronization Best Practices*
Thread Cooperation & Management + Demo
Demo: wait & notify
Thread Interruption + Demo
Explicit Locks (Reentrant Lock) + Demo
Hijacked Signal: Single Condition Queue with signal notification (+)
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
Agenda
Background - epoch, UTC, Timezone ...
Legacy API - Date & Calendar Classes + Demo
New Date & Time API - Introduction
Demo: New Date & Time API
Coding Exercise 15: 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
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
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 with over half-a-dozen years of teaching experience with over 100k students globally. He has also been 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.