The other unattainable goal (other than “thin client”) that Web services just might finally put to rest is the wrong-headed insistence on portable code. The idea of write once, run anywhere is no closer to reality today than it was when the first COBOL compiler was developed 40 years ago. It’s another one of those things that looks nice on paper but can’t possibly be implemented. Why? Because differing hardware capabilities, feature sets, and user interface customs result in code being written to the lowest common denominator. The resulting applications usually end up being portable…and irrelevant. Or the programs are so full of special cases and conditionally compiled code that they really aren’t portable, but rather separate programs that just happen to share some common functionality. All too often, the goal of portability is met at the cost of functionality and maintainability.
Portable code is not the answer to the problem of interoperability. The answer lies in defining a simple and flexible method for applications to share data. From where I sit, it looks like Web services are currently our best bet.