Expanding your web application's capabilities may seem impossible during a recession, but think of it as vacationing in the off-season: While the competition accumulates technical debt, your IT shop can surge ahead. Adding click-to-call widgets, composite applications or XML data mashups to WebSphere 7.0 platforms is easier than ever thanks to a trio of optionally installable Feature Packs: Communications Enabled Applications (CEA), Service Component Architecture (SCA) and XML.
Operator, Can You Connect This App?
Imagine enabling customers to cobrowse a website with friends – without clunky browser plugins. Imagine two-way forms that help users complete gnarly virtual paperwork – without Java applets. Imagine a warehouse that phones suppliers when inventory is low – without intricate Session Initiation Protocol (SIP) message flows.
Released in July 2009, IBM's Feature Pack for CEA brings these capabilities to WebSphere customers through "the least intrusive mechanisms," says WebSphere architect Erik J. Burckart. "Most applications can benefit from integration with communications technologies, but before this Feature Pack, the barrier to entry was just too high." Open-source telecom solutions require telephony expertise, manual integration and detailed call provisioning, according to Burckart. Take JBoss Mobicents, an open-source SIP application server, often paired with Asterisk, an open-source voice communication server. "You have to fully understand how to provision Mobicents into your environment, since it inserts itself into the call path," he says. That complexity hinders broad adoption.
Taking advantage of Avaya, Cisco and Nortel gateways, among others, the CEA Feature Pack offers a simplified provisioning model that keeps the WebSphere deployment out of the real-time call path, avoiding pesky latency problems or PBX politics. Most importantly, the focus is on making it easier than ever to add communications capabilities to existing applications. Developers can integrate cobrowsing or click-to-call on a web page by adding one line of HTML after importing the CSS and Javascript. "If a developer does not want to utilize the CEA Web 2.0 widgets, we also provide REST-based and web services-based APIs," says Burckart.
Free Your Data
Although XML has been around for over a decade, most developers haven't been able to leverage the language to its fullest extent. Now the W3C has distilled that decade of field experience into three new standards — XQuery 1.0, XPath 2.0 and XSLT 2.0 — and the WebSphere Feature Pack for XML supports these standards, making a host of application scenarios easier than ever to achieve.
Designed for querying collections of XML data, XQuery 1.0 is "a whole new programming model in the XML space. It's what you want for semistructured data," says Andrew Spyker, WebSphere XML and performance architect. XQuery is the SQL of XML, allowing insight into of all kinds of stored information, from relational to object repositories to middleware data viewed as XML. And with middleware support of XQuery, you can join data between XML databases and other stores. An app of this ilk might be an application that grabs data in an XML database, dynamically injects new facts fresh from the interactive Web and then stores the results in a new database or serves up the new data as Web 2.0 feeds.
XPath 2.0, a subset of XQuery 1.0, is an expression language for navigating XML documents that also underlies XSLT 2.0. In its second version, the language has grown significantly and changed its model and type system. It also boasts new capabilities such as pattern matching syntax, date manipulation functions, and intersect and except operators, to name a few. "That makes life easier, because you don't have to write as much code or depend on proprietary extensions," Spyker explains.
Third in the trifecta Spyker dubs "X-* Version 2" is XSLT 2.0, which is a language for transforming XML into different presentation formats. In addition to new grouping capabilities and schema awareness and validation, performance has also improved, allowing simultaneous XSLT translations of a single data source in one processor run.
All this power is readily accessible in the Feature Pack's XML Transform and Query processor, which is optimized for performance and security in multi-threaded server environments. There's also a single Java API to utilize all three languages. "XPath 1.0 and XSLT 1.0 for Java grew up in open source and the Java Community Process. One came out before the other, and you ended up with some inconsistencies in the Java programming model across the two. There is another API for XQuery, XQuery for Java (XQJ), that adds the complexity of a third API and, in my opinion, isn't optimal for general XQuery programming. This API that we're providing is consistent across three XML languages, allowing them to be used together while leveraging existing Java logic," says Spyker.
Finally, the IBM Thin Client for XML with WebSphere Application Server is for those situations where, say, XML batch processing happens on the client and is then sent up to the server via messaging queue. Given it's a single jar file download, it also "makes it really easy to evaluate and understand the technology. You can get up and running with the thin client in about six minutes."
Seriously Service-Oriented
Another standards-based offering, the Feature Pack for SCA, is the third arrow in WebSphere's quiver. For those familiar with the service-oriented architecture concept, SCA makes the SOA programming model a reality without going back to blueprints: SCA helps developers build composite applications and compose coarse-grained services in a way that separates business logic from protocols. Initially proposed in 2005 by a coalition of software vendors including IBM, the SCA specification is a language-neutral model for connecting diverse services and components.
Yes, that means it's time to set your component holy war aside: No more debating the merits of Spring over EJB, or fretting over your choice of POJOs (plain old Java objects). "Spring and EJBs are both compelling fine-grained component models. SCA doesn't replace what they do, but rather compliments either as a coarse-grained composition model," explains Steve Kinder, SOA Foundation Architect for WebSphere. SCA is designed to boost your existing IT investment — nothing short of an economic imperative, today. "The point of SCA is to embrace what you have and extend your assets in a service-oriented way," Kinder evangelizes.
This loosely coupled model of composite applications allows simplified development and management of such things as a call center application where the business logic is spread across services within an enterprise SOA. WebSphere customers "really like the simplifications that the SCA default binding provides. The developer can focus on what services are required instead of the mechanics of how to get to them, because the SCA runtime figures out how to best get between services. This 'separation of concerns' better positions our customers for change," says Kinder.
While IBM's SCA technology is based on the open source Apache Tuscany implementation, the WebSphere implementation of SCA differs significantly, according to Kinder: "We have taken those aspects of Tuscany consistent with our customer's application needs and deeply integrated the SCA capability with WebSphere's administration and runtimes."
In other words, every aspect of IBM's SCA solution neatly dovetails with WebSphere, including qualities of service such as security and transactions. As an example, Kinder describes IBM's approach to end-point administration: "Each protocol opens up ports that are exposed to the outside. In the commercial world, customers need fine-grained administration and control of those ports. We've wrapped the open source implementation with the Websphere admin console integration, which allows customers to view, start and stop end-points and configure security related to the services provided in the SCA application."
Similarly, WebSphere has improved SCA deployment packaging by leveraging WebSphere 7.0 administration capabilities to deploy SCA JARs instead of requiring the developer to use JEE WARs or EARs, standard open-source fare.
Pick a Peck of Feature Packs
SCA is still an emerging standard, but early WebSphere adopters are already realizing the benefits. That's another example of how, with a WebSphere support subscription, IBM's Feature Packs place tested technology in the hands of developers without the customary migration migraines.
This is a two-way street for both customer and software vendor: "It gives us an opportunity to react immediately to our customers' needs. We're able to deliver a supported version of the SCA specification in a way that lets developers realize its benefits incrementally. In the past, it was difficult for organizations to adopt new technologies like SCA because of the need to migrate to new versions of the application server," says Kinder.
To further reduce that migration burden, IBM now offers "five plus three": Five years standard maintenance from general availability (GA) for the base application server, plus the option to buy extended service for the next three years. Essentially, customers can increase their return on investment by running a consistent app server level for up to eight years from GA. The tension between that stability and the desire for novelty equals the sweet spot for Feature Packs, which are an ideal mechanism to deliver new functionality to developers while minimizing risk to their production environments.
More Than Meets the Web
The Feature Packs are also a welcome boost now that there's little money for R&D. Instead of spending months in the lab, developers can customize the extensible CEA widgets and transform browser interactions into data-rich user experiences. "We send simple messages to the telephony infrastructure and ask them to make phone calls on our behalf, completely abstracting the complexity away from the application. So, instead of having to worry about tuning their application server to deal with real-time communications, developers can get the solution to market much more quickly," says Burckart.
All three of these Feature Packs are not only at the forefront of Web 2.0 technology, they set the stage for easy transitions to multicore and cloud computing. XML is a case in point: Declarative, XML-centric programming languages raise the level of abstraction so that developers need not worry about execution details, letting XML runtimes optimize for concurrency.
"When you start being very declarative — telling the processor what you want to do, not how to do it — you can optimize the runtime in interesting ways. Think streaming apps, where your data never terminates, as in reading data off a smart grid," enthuses Spyker. Furthermore, unlike the imperative model of Java code manipulating the DOM or JAXB APIs, declarative programming with XSLT and XQuery is functional and side-effect free, not to mention more portable.
Ultimately, the WebSphere team is hoping to see where developers will take these new technologies to create ever more compelling applications. In synch with his fellow Feature Pack architects, Spyker is psyched: "When you enable our users to do cool co-browsing or click-to-call, when you service-enable existing logic, and as we get more linked-in, I think of all the data that will be created — and about how much of that data we're going to query."