
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore how the JVM sees Java code, and dive into generics, the reflection API, and dynamic proxies, then understand how Spring dependency injection works to deepen your mastery.
This video explains what basic setup is needed in Intellij for annotation processor creation and how basic annotation is made
Explain abstract syntax trees (AST) and how Lombok modifies AST to generate code, illustrated by creating a worker class and a say hello from AST method.
Lombok interacts with compiler internals using an API not meant for outside use, risking code breaking across compiler updates and Java versions; nevertheless, this video shows how Lombok works.
Explore how the Java virtual machine views generic types by inspecting bytecode with the javap disassembler, using terminal commands like javap, -h, -cp, and -v to reveal class file details.
Learn how to read a class's structure from bytecode with javap, exploring type erasure and how the class file disassembler reveals constant pool entries, flags, methods, and attributes.
Explore erasure constructor with javap and how the compiler generates a super object constructor. Analyze bytecode details such as operand stack, locals, constant pool, and invokespecial.
Explore how the JVM executes the main method, tracks an operand stack and locals, handles generics through type erasure, and uses constructors, checkcast, and print line via javap inspection.
The lecture shows how Java generics undergo type erasure, replacing unbound types with object and bounded ones with their bound, then adding casts and bridge methods.
Apply the PECS principle—producer extends and consumer super—to decide when to read from or write to a generic list, using extends for reads and super for writes.
Explore reading from a source, transforming with a function, and collecting into a destination using Java generics and the PECS principle, with examples from integers to strings.
Explore how to use reflection to inspect a class's fields and methods, access private members, read and modify values, and invoke methods at runtime to reveal internal behavior.
Learn how Spring dependency injection scans a base package using a resource pattern resolver and metadata reader to identify concrete classes annotated as components and produce bean blueprints.
Explore how Spring manages beans by generating unique bean names, registering bean definitions in a default listable bean factory, and wiring dependencies with an autowired post processor during runtime.
Are you an intermediate Java developer who uses powerful frameworks like Spring, Hibernate, or Mockito, but doesn't fully understand the "magic" that makes them work?
Have you ever wondered how @Autowired injects a dependency or how @Transactional manages a database session?
If you're ready to move beyond just using frameworks and want to master the deep, powerful mechanics of the Java platform itself, then this course is your next step. This is not just another "Core Java" course. This is a deep dive into the advanced, "under-the-hood" concepts that separate senior developers from the crowd.
By the end of this course, you will be able to:
Master Advanced Generics: Go beyond List<String> and conquer complex topics like PECS (? extends T vs. ? super T), self-referential patterns for fluent APIs, and the subtle but critical implications of type erasure.
Harness the Power of the Reflection API: Learn to inspect classes, invoke methods, and manipulate fields at runtime to build truly dynamic and flexible applications.
Create Dynamic Proxies: Understand the core mechanism behind AOP (Aspect-Oriented Programming) by creating proxies that can intercept method calls to add logging, security, or caching—without touching the original code.
Build Your Own Spring IoC Container: Demystify @Autowired by re-implementing Spring's core dependency injection mechanism from scratch. You'll manage the entire bean lifecycle, from classpath scanning and bean definition to final instantiation and injection.
Dissect Java Bytecode: Use the Java Class File Disassembler (javap) to see what the compiler is really doing with your code, giving you a profound understanding of the JVM.
Break the Lombok Illusion: Discover how Lombok uses compiler plugins and AST transformations to rewrite your source code on the fly. You’ll trace annotation processing step by step and understand the real cost, limitations, and trade-offs of Lombok in production systems.
This course is a direct, hands-on journey into the heart of the Java platform. You won't just learn theory; you will build practical examples that demystify these advanced topics and give you the confidence to use them in your own projects.
If you are ready to stop being a magician's audience and start becoming the magician, this course is for you.
Enroll today and take the next major step in your journey to becoming a senior Java expert!