Service orientation aims to close the chasm between many technology platforms. The problem is most mainstream platforms are ill-equipped to do just this. Most of this is on account of fending off competing technologies and ensuring the vendor lock-in so typical of the software industry, but fortunately times have forced many to rethink this strategy. Up next we will address what Project Tango holds for those using the Java platform and creating service-orientated designs.
From its inception, Java was heavily promoted as a network-aware platform with its various JVMs (Java Virtual Machines) capable of being deployed on different operating systems. However, much of its distributed power lied only when an end-to-end Java solution was achievable. At around the same time, many other camps pushed their own platforms, Microsoft backed COM/DCOM as its distributed platform while the Object Management Group along with other vendors pushed CORBA as the enterprise solution to distributed systems.
In these platform wars no consensus was ever reached and a testament to this was the enterprise messaging systems that emerged around the same time to alleviate the distributed communication headaches between these disparities. Then came along XML as a tipping point, achieving a true consensus in the manner data was exchanged between different platforms. Java applications could now produce and consume data that would be widely accepted by programs written in Visual Basic, C++,
At this juncture, the mere use of XML was enough for many organizations to glue disparate application together, but it soon became evident that XML required mechanisms to support the enterprise features relied upon by its backing platform or programming language. After all, if you were going to service-enable a Java application with XML it surely needed to be able to communicate the same requirements -- such as security and reliability -- irrespective of its communication partner's platform, Java or non-Java.
This last surge brought about what we know today as WS-* standards, an accompanying set of XML-related standards designed to deal with more elaborate XML service scenarios. With this last addition we come to our current crossroads, XML and its set of loosely grouped standards growing separately -- as a complement -- to the mainstream development platforms used in enterprise development.
So to effectively use XML and WS-* with today's current offerings we are left with two choices, traverse all application communication through a third party broker especially designed to deal with WS-* related issues, possible data transformation or routing requirements -- a broker which is currently known as an Enterprise Service Bus (ESB) -- or simply take a piecemeal approach to integrating WS-* features to our platform of choice. That is to say, work with an individual WS-* implementations designed for Java, .NET or whatever is your XML programming language choice.
Either way, there is no clear cut manner in which to structure full-fledged XML/WS-* enabled applications relying on an off-the-shelf Java package, a space Project Tango will now try to fulfill. The benefits behind a project like Tango -- an evolving step to Java's Web Services Interoperability Technologies (WSIT) -- is that it will provide a common footing on which to create service-oriented applications.
In essence, Tango is about bringing together all Java-XML related API's and infrastructure under one roof, issues ranging from core XML and WS-Reliability to others in WS-Security or WS-Policy. Its formal objective is to deal with these issues uniformly for the benefit of developer productivity, but in the greater scope of things, Project Tango also intends to make its own applications interoperate with another project named Windows Communication Foundation (WCF) from Microsoft.
As it turns out, WCF is a strikingly similar project to Tango. They both intend to unify XML-related technologies under one roof and make them an integral part of prevalent development platforms, but contrary to Tango, which is focused on Java, WCF is a creation from Microsoft's .NET initiative. I wrote an earlier column describing WCF called WCF: Microsoft's 'newest' services way .
What is most exciting about Tango's possibilities besides being a starting point for all things Java service related, is that a similar -- and perhaps more importantly -- interoperable architecture is being developed simultaneously by a vendor whose industry mindshare competes head-to-head with Java.
And of no less important value, this proposed model offered by Tango and WCF manages to push many of the current enterprise Web services issues currently dealt with through specialized middleware -- such as ESB's -- into the hands of core service developers to be dealt with at a greater comfort level, that of the programming platform.
While Project Tango will not spell an end to the many Java variants in use today to create services, it will usher a new way of creating services enabled applications, one which is more concise, backed by Java's creators and especially designed to interoperate with a competing platform suited for the same purpose.
About the author
Daniel Rubio is an independent technology consultant specializing in enterprise and Web-based software. He blogs regularly on these and other software areas at http://www.webforefront.com/.
This was first published in August 2006