Sun's recent JavaOne show brought the usual crop of announcements. One of the most important is the release of Beta 2 of J2EE 1.4. With Java applications at the heart of many businesses, any new version of Sun's enterprise development framework will catch the attention of developers and application architects. Possibly the most important feature in this latest release is its support for the Web Services Interoperability Organisation (WS-I) Basic Profile specification.
Web services are an important component of modern application architectures. First popularised by Microsoft's .NET development framework, they use XML technologies to link applications. Sometimes described as "websites for machines", XML messages deliver requests and return responses to and from applications using familiar web technologies, while XML Schemas provide descriptions of data. Over the past three years, web services have become a feature of virtually every development framework and language - from Perl and Python to C++ and Java.
While Sun and Microsoft spend a lot of time competing, they're also part of an industry move to standard ise web services. The WS-I was set up by various web services vendors to provide standards for handling the exchange of messages between services. It plans to produce "generic protocols", which it describes as being independent of the messages they carry, only handling secure, reliable and efficient message delivery. The Basic Profile is the first major interoperability proposal to come out of the WS-I's work, and it contains rules for how applications should create the structures of web services XML messages and documents. That helps ensure that applications built using tools from competing vendors can work together.
Like the companies behind them, Java and .NET are often seen as competing technologies, and many businesses do see a choice between alternative approaches. There's little to separate the two technologies; both are answers to the same set of problems, and so implementation decisions are often made on the basis of available skills or existing software investment. In practice, Java applications are usually found on enterprise servers, with .NET deployed at a departmental level. With businesses demanding more control over departmental activities, it's not necessary to completely re-engineer business systems just to link their applications. As both technologies have web services support, integration is just a matter of adding extra functionality to existing applications, saving time and money.
Application server vendors have a large part to play in developing interoperable web service frameworks, and IBM and BEA are both founder members of the WS-I. As well as supporting interoperability standards, application servers often add their own proprietary features that extend the web services model. It's easy enough to see what's proprietary and what's part of the platform - the class libraries used by both .NET and Java mean that core classes all have standard naming conventions. If you need to produce portable code, work with the core libraries and avoid application server-specific functions.
Any business choosing a development platform needs to consider more than just the languages they're going to use, as any choice will be with them for many years. Platforms such as Java and .NET are layered solutions, and the frameworks of classes libraries and tools that surround them are there to speed up business application development, providing tools that handle common tasks. Instead of writing hundreds of lines of fresh code each time they need to connect applications to external databases, developers just choose the classes they want to use. Component development techniques also mean application vendors can provide integration tools for their applications that just plug into the existing frameworks.
Microsoft's Visual Studio.NET development environment makes it easy to work with registered components, adding them to its class libraries. It even uses them in its IntelliSense code completion tools. J2EE application servers and development tools take a similar approach. BEA's WebLogic Workshop uses third party plug-ins to add support of external applications, while Oracle's JDeveloper uses Business Components for Java to make working with Oracle's own applications easier, while offering team development features. Sun's Project Rave is intended to deliver a similar Java development environment. It's not just Java and .NET development that take advantage of the component approach; the component model at the heart of both technologies means Macromedia can deliver tools to link Flash to both .NET and J2EE applications.
BT is an enthusiastic adopter of web services using J2EE and .NET, and its Global Services division views them as a business opportunity. It is offering partners a managed web service transport layer. Web services are often viewed as a lowest common denominator tool for building distributed computing application, and many features required for critical business applications are missing. As interoperability standards evolve, they'll include these features, but for now the BT platform adds proprietary tools for managing web service provisioning, auditing and security.
As web services mature, tomorrow's advanced interoperability specifications will make it easier for businesses to connect their internal and external systems. There's a major cultural and technological shift happening here, with what have always been seen as discrete applications beginning to behave like components. Instead of thinking of individual applications, businesses will need to start developing service oriented architectures: web service linked systems that are aligned to business processes and supported by flexible infrastructures - systems that will be built around both J2EE and .NET.