Dynamic Proxies in Java
Don't repeat yourself. The mantra of the effective Java programmer. Dynamic proxies get us there quicker.
Of all the things that we could learn this month, why dynamic proxies?
Back in 1996, we could learn the entire Java ecosystem in a week with Bruce Eckel's "Thinking in Java".
Fast-forward to 2020 and the volume of information is overwhelming.
Java is still quite easy to learn, especially if we focus on the most essential tools. Start with the syntax, then object-orientation, flow control, collections and Java 8 streams. Design patterns hold everything together.
But there is more, much more.
To become a true Java Specialist, we need to also master the underpinnings of this great platform. How else can we develop systems that take advantage of the power of Java?
Dynamic proxies are such a tool. We can save thousands of lines of repetitive code with a single class. By taking a thorough look at how they work, we will recognize good use cases for them in our systems.
Dynamic proxies are not an everyday tool. They may come in handy only half a dozen times in our career. But when they fit, they save us an incredible amount of effort. I once managed to replace over half a million code statements with a single dynamic proxy. Powerful stuff.
This course is for intermediate to advanced Java programmers who want to get to "guru" status. It is not suitable for beginners in Java.
Every section has tough exercises for us to solve, together with walkthroughs.
We hope you enjoy this course as much as I enjoyed creating it for you!
Let the dynamic proxy games begin!
Heinz
Course Curriculum
-
Preview0.1. Why I wrote this book (and course) (3:05)
-
Preview0.2. Hearty welcome (2:12)
-
Preview0.3. Course author (1:23)
-
Preview0.4. Comfort and Learning (1:30)
-
Preview0.5. How to ask questions (1:25)
-
Preview0.6. Exercises (1:57)
-
Preview0.7. Exercises in IntelliJ 2020.1 (or later) (2:12)
-
Preview0.8. History of dynamic proxies (2:13)
-
Preview0.9. Big Win (3:10)
-
Preview0.10. Infrastructure Code (1:01)
-
Preview0.11. Risk of dynamic proxies (3:22)
-
Preview0.12. What will we learn? (0:59)
-
Preview0.13. Java version (1:17)
-
Preview0.14. Shallow vs deep reflection (2:25)
-
Preview0.15. Book sample code (1:10)
-
Preview0.16. How code is modularized (2:28)
-
Preview0.17. Enjoy! (0:21)
-
Preview0.18. Exercise 0.1 (2:13)
-
Preview1.0. Design Patterns Cousins (0:36)
-
Preview1.0.1. Christopher Alexander and Design Patterns (2:42)
-
Preview1.0.2. What's in a name? (3:10)
-
Preview1.0.3. Four Cousins (1:14)
-
Preview1.1.1. Proxy Intent (1:32)
-
Preview1.1.2. Proxy Structure (1:20)
-
Preview1.1.3. Proxy Variations (1:31)
-
Preview1.1.4. Proxy Exercises (1:04)
-
Preview1.2.1. Adapter Intent (1:24)
-
Preview1.2.2. Adapter Structure (2:25)
-
Preview1.2.3. Object Adapter vs Proxy (1:31)
-
Preview1.2.4. Adapter Exercises (0:23)
-
Preview1.3.1. Decorator Intent (3:18)
-
Preview1.3.2. Decorator Structure (1:18)
-
Preview1.3.3. Decorator OutputStream (2:27)
-
Preview1.3.4. OutputStream Objects (1:00)
-
Preview1.3.5. OutputStream Code Samples (3:24)
-
Preview1.3.6. Decorator vs Proxy (1:13)
-
Preview1.3.7. Decorator Exercises (0:32)
-
Preview1.4.1. Composite Intent (0:50)
-
Preview1.4.2. Composite Structure (0:59)
-
Preview1.4.3. Composite vs Proxy (0:25)
-
Preview1.4.4. Merging and reducing return values (0:24)
-
Preview1.4.5. (Ab)using dynamic proxies to implement all four cousins (0:16)
-
Preview1.4.6. Composite Exercises (0:30)
-
Preview1.5.1. Chain of Responsibility Intent (0:58)
-
Preview1.5.2. Chain of Responsibility Sample Code (2:31)
-
Preview1.5.3. Chain of Responsibility Summary (0:28)
-
Preview1.5.4. Chain of Responsibility Pitfalls (0:19)
-
Preview1.5.5. Chain of Responsibility Exercises (0:17)
Your Instructor
Heinz Kabutz is the author of The Java Specialists’ Newsletter, a publication enjoyed by tens of thousands of Java experts in over 150 countries. He has been a Java Champion since 2005.