Interoperability or Portability - When Networks converges with Computers.
Portability or Interoperability Can one helping the other?
Portability is the ability to move a program or programing logic from one system to another system, usually with minimal overhead, or in the case of Java, virtually no overhead. Interoperability is the ability of systems to seamlessly communicate with each other. Where is the connection between Portability and Interoperability? In today's architecture, the connections are few, but as programs and services become more and more distributed, and as network speeds approach computer bus speeds,... the network becomes the computer, Portability starts embracing Interoperability issues and Interoperability can start gleaning the benefits of Portability. Method invocations may precipitate a series of Network messaging, and/or messages that are received may be routed into servlets or a JAIN SLEE event Service Building Block. As this computing paradigm becomes more prevalent, Interoperability becomes an issue for the developer.
In today's architecture, Interoperability is Service Portability's distant cousin. Portability not only applies to Programs on top of Virtual Machines or Operating Systems, but also applies to programs passing control to other libraries or programs, or Java Parlance, a method invocation. If the class being called in not local, then either an RMI call is made, or some form of proxy SOAP, WSDL, or direct translation to a protocol is made to communicate to the underlying functionality. Portability starts looking like interoperability.
On the flip side, Interoperability is when a system can seamless communicate with another system. In the simplest sense, Interoperability is where two or more systems are connected together and all the message permutations are made between the systems to make sure all the systems talk the same language. Interoperability becomes more complex when timing, time-outs, interruptions, congestion, and other non-deterministic behavior is introduced into the network. If this kind of behavior is captured and represented to the programs running on the systems, Interoperability starts looking like Portability.
On the portability side, there are many good solutions, Java being one of the best since Java is synonymous with Portability. The Computer industry has evolved nicely making portability one of cornerstones of every system. Incompatible programs of the past have burnt enough bridges to make all current and new programs either compatible with Windows or a Unix based system Linux or Solaris.
Unfortunately the same cannot be said about interoperability. The only success story is the Internet, where vendors either adhere to the standard or do not play. This is not the case with other networks such as Telephony with SS7 and even with newer protocols such as SIP for Voice of IP. There is no enforcing agency for these networks, and the communications industry is not as economically driven as the IP Network to drive companies to a a single standard. Consequently, vendors participate in 'Interoperability Events'. This is where vendors get to test their gear against their competitors to make sure they are close to speaking the same language. The results of the events help drive companies to correct the inconsistencies in existing product. The advantage of a strong standard up front is the standards are often built into the product ahead of time, saving time and money.
While the Java and the Networking industry is not overtly pushing Java down the path of Interoperability, certain constructs and standards are being introduced into Java that are accelerating the acceptance of Interoperability as a Portability issue. For example:
- Standard classes for SOAP and WSDL such as the JAX suite make the transition from programming interface to message interface fairly ubiquitous.
- The JAIN SIP family of APIs allow for rapid standard session control that bring networking applications like Instant Messaging and Phone Calls very close to standard Java constructs.
- The latest round of J2EE JSRs 235, 236, and 237 introduce data stores,timers, and work flows that begin to model Networking behavior
- JAIN SLEE is a container that puts non-deterministic events at the core of its processing.
The huge advantage Java brings to interoperability is a strong, well define, standard and an excellent process to maintain and enforce the standards. The Java Community Process, the Technology Compatibility Kits, and the Reference Implementations provide the tools to maintain and enforce portability. In today's network, the only driving force behind http interoperability is the ability to do business and communicate. Other protocols must resort to interoperability fairs and venues to encourage, not even police interoperability. As the lines blur between Portability and Interoperability, or as the 'Network becomes the Computer', the benefits gleaned from Java will readily pour into the
short comings in today's interoperability testing.