0.8. History of dynamic proxies

From the book:

It is the year 2000. Our industry survived the Y2K bug. A “smartphone” can also tell the time. Java is a language without generics, lambdas, or type inference. Deploying our EAR files takes ages. EAR files? Yes, the Spring Framework is still years away from release. Real programmers use RMI and CORBA.

Tools generate buckets of infrastructure code. For example, Java Remote Method Invocation (RMI) uses the rmic tool to generate stub and skeleton classes to support remote proxies. (Remarkably, rmic lives on in the JDK/bin directory in modern Java distributions.)

In May 2000, Sun Microsystems ships Java 1.3 — and with it, dynamic proxies. Instead of a separate build step, new classes are created on the fly by specifying which interfaces they should implement. All method calls on these dynamic classes are routed through a single InvocationHandler. Infrastructure code uses dynamic proxies to create stub and skeleton classes in memory.