- Engineering Complexity
- Birth of Murphy for Java
- People = Problems
- Education Through Pain Management
- The Twenty-Cent Solution
- Fraternal Clones
- "We Lost the Napkin"
- The Devil in Blue Jeans
- Jack and the Beanstalk
- The Slashdot Effect
- The Funhouse Microphone
- That "New Car" Smell
- If I Can See It, It Must Be Wrong
- The Ugly American
- Murphy's Law
- Use Egg Cartons
- Conclusion
Fraternal Clones
Law: No two computers are exactly alike. Especially if the computers are running Windows.
Q: What platforms are being targeted?
Obvious examples of platforms are Unix, Apple, and Windows operating systems. Less obvious definitions of different platforms include various processor speeds, version of operating system, and even screen resolution. For example, a Windows 98 setup should be considered separately from the same type of computer with NT or XP.
Java introduces a new problem: the Java Virtual Machine (JVM). Although the JVM makes it possible to treat most platforms equally, there are slight variations between JVM implementations. The variations are small, but they affect your ability to truly create platform-independent code.
Of course, there are other problems, such as the interference of installed accessories and software. The key is to understand that there is no such thing as two identical computers, especially when talking about personal computers. For success, test as many different configurations as you can and look for the best performance.
Low Risk
Platforms have the same release of Java and the same manufacturer of JVM.
All targeted platforms are available for in-house benchmarks and testing throughout development and the product's lifecycle.
Released on only one platform at a time.
High Risk
Targeting Internet users (no platform consistency).
Platforms are not tested.
Old machines (may not have horsepower or memory for Java).
User platforms are old or rare.
Testing takes place only on new hardware.
Risk Management
Use the most up-to-date versions of Java on all platforms. Newer is better because more bugs are fixed and applications run faster.
Use only platforms for which support can be made available in-house.
Buy vendor-based Java support services to resolve platform issues quickly.
Use Java Foundation Classes (JFC) to reduce user interface inconsistencies.
Use Java plug-in technology for Internet.
Reduce functionality if the app is on a marginal platform.
Target your application for 100% Java branding. Keeping to the 100% Java standard will decrease platform-specific problems.