Extreme Programming was developed from the concept that if a practice is good (such as testing) then doing it all the time (Test Driven Development) is better. My focus is on decoupling, which tells us that we should separate out pieces of code that should change independently. Packages and visibility are ways that Java enforces decoupling. If we agree that decoupling in our code is good then decoupling our code from the technology that we wrap it in for delivery is better. Let’s call it Extreme Decoupling.
Java is all about freedom. The JVM gives us freedom from being stuck on a particular operating system or a hardware platform. The JCP gives us freedom from being tied to a particular vendor by allowing many implementation choices certified for each approved specification. What most developers miss is that the Java language is capable of giving us the long-term freedom to move from one specification to another with minimal effort. I urge you to not abandon your principals by tying your code to current technologies. Find a way to stay free and make use of the full benefits of the Java platform.