Achieving the 3rd Dimension of Java Freedom with Extreme Decoupling
In my last blog entry I introduced the concept of Technology Independence as the often overlooked Java freedom. The idea is to keep the core logic of an application decoupled from the technology that delivers it. Then as selected technologies change, in our case clients are demanding web over Swing, the bulk of an application, the business logic, may be brought forward to the new platform with minimal effort. To better explain the concept I will delve into my experience at ASIX, Inc. while writing the Java Business Framework.
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