Plug Into J2EE-.NET Interoperability
Call .NET Web services from J2EE.
by Tarak Modi
Posted June 28, 2004
There are two 800-pound gorillas in the software development world today: Microsoft .NET and the Java 2 Platform, Enterprise Edition (J2EE). As much as fanatics in one camp might want to pretend that the other camp does not exist or that the other camp is not relevant, the fact is both camps are equally prevalent today and will continue to be for the foreseeable future. Eventually all developers, regardless of camp affinity, are forced to face this reality and interoperate with the other camp.
Java quickly gained popularity when it first emerged in the mid-1990s. Some of this popularity was based on hype about Java's security. Others were drawn in by the allure of technologies, such as applets, that would later prove to be letdowns. Almost certainly the strongest pull was from the marketing slogan, "Write Once, Run Everywhere." In practice, this concept is never as straightforward as one would hope, but the slogan is not far from the truth. A more accurate slogan, however, would be, "Write Once, Test Everywhere."
The technical term for this capability is portability. Portability implies hardware and (to an extent) software independence. IT shops find portability invaluable because they can leverage their existing hardware. Software companies also love portability because they can develop their products on one set of software/hardware and then sell the products to a wide range of customers.
Today, as a direct result of new technologies, portability is less important. Instead, it has been replaced by another, more sophisticated capability called interoperability. Webopedia.com defines interoperability as "the ability of software and hardware on different machines from different vendors to share data." This definition certainly sums it up. One of the key reasons portability was so important in the past is that it was extremely difficult to achieve interoperability between software components, even on the same hardware platform, let alone different hardware platforms.
Don't get me wrong; portability is still useful. As a Java developer, I almost always develop and test code on my Dell-Windows XP laptop. When I am satisfied that it works (which is, unfortunately, never on the first try), I deploy it to the target platform, which is often some flavor of Unix on HP, Sun Microsystems, or IBM hardware. I could never have done this without Java's interoperability.
The reason interoperability is ultimately more significant than portability: Whereas portability guarantees that my Java code will work on another platform, it requires that all software be written in Java. Interoperability, on the other hand, guarantees I will be able to use or access other software regardless of what language it is coded in and what platform it is deployed on.
Back to top