Have Jini, will travel

Orbitz put Sun's technology at the core of the framework that powers its online reservation systems

Jini was still being marketed as a networking technology for consumer appliances such as DVD players and televisions when start-up Orbitz Inc. made the rather bold decision to build its business on the fledgling Java-based specification.

Forged in 2000 by five airlines, Chicago-based Orbitz had a blank technology slate when it elected to look beyond Sun Microsystems Inc.'s consumer hardware pitch and explore Jini's potential as a distributed computing framework for its online travel services. Orbitz architects knew that few companies were using Jini, but they were comforted to learn that one, Raytheon Co., was exploring the technology for systems on U.S. Navy destroyers.

"If it's good enough to protect lives and countries, maybe it's good enough to sell tickets on," says Leon Chism, Orbitz's eighth employee and now chief Internet architect.

A CORBA Alternative

Skilled in building large-scale systems based on the Common Object Request Broker Architecture, the Orbitz development team saw Jini as a CORBA alternative that would provide a mechanism for acknowledging the effect the network has on how a system is designed and runs in production, says Chism.

"You had a group of people that felt technically capable and qualified to make it work," adds Chief Technology Officer Chris Hjelm, who joined Orbitz from eBay Inc. in July 2003. "They've always been independent thinkers, and they wanted to control their own destiny."

Orbitz also considered using the emerging Enterprise JavaBeans (EJB) technology but soon scrapped that idea because of concerns about performance, management and cost. Company architects figured they wouldn't require the transactional capability of EJB and decided that dynamically networked Jini services would be a better fit.

"If you compare how to define and access an EJB remotely versus how to do that in Jini, it's orders of magnitude different in terms of lines of code and complexity of the code," says Chism.

"I think I can actually publish a Jini service in about three lines of code. And accessing it is probably two lines of code," says Steven Hoffman, principal software engineer at Orbitz. "Most of the people that actually know and need to know about the Jini infrastructure, you can count them on your hand. Everybody can focus on the real work at hand. The plumbing doesn't get in the way."

Building a service-oriented architecture to get disparate systems to interoperate isn't such a newfangled idea today, but at the time Orbitz decided to break up applications into services, its architects weren't familiar with the terminology. They just knew that customers would need to book flights, hotels and cars. To enable that, they needed to connect to a major mainframe-based global distribution system (GDS) for booking and ticketing flights and cars. For hotels, they had to link to a system from Pegasus Solutions Inc. And they knew they had to build a system that wouldn't go down.

Under the Orbitz architecture, a customer request to book an airline ticket passes to a Java servlet container -- the Jini client -- running on BEA Systems Inc.'s WebLogic application server. The Jini client uses the Jini discovery protocol to find a Jini lookup service, which sends a proxy back to the Jini client. Through the proxy, the Jini client uses the lookup service to find a Jini service that can do what it needs. The lookup service then delivers the Jini service proxy back to the Jini client, and the client uses the proxy to communicate directly with the Jini service.

Orbitz registers its 1,332 Jini services on multiple instances of lookup services for redundancy, so there's never a single point of failure in the event of a power supply or hard drive failure. It also builds redundancy into the servlet containers and the services themselves, scaling horizontally through Intel-based dual-processor PCs running Linux. The PCs act as servers in the Orbitz environment. "It's not just redundancy; it's also capacity," says Hoffman. "If you need today 10 boxes to service a particular request and your traffic doubles, we can just add 10 more, and it's not only handling twice the capacity but it's now twice as redundant as it was before."

It's also a less costly way to scale. "It's literally plugging a commodity PC with a minimal amount of purchased software and some open-source software into the network," says Hjelm. "It's less than $5,000 and continuing to come down."

Orbitz runs two types of services -- those that talk to other services and those that talk to third-party mainframe hosts. On the back end, Orbitz builds Java interfaces to the third-party mainframes, such as those of WorldSpan Technologies Inc. or Pegasus, transforming their content into Jini services that register with the lookup services. The Java virtual machine and the Jini service interfaces run on Orbitz servers. "All the carriers had to do was give us their custom protocols to communicate with their mainframes," says Chism. "We did the rest."

The company gains access to its non-Java low-fare search engine from ITA Software Inc. in Cambridge, Mass., in a similar fashion. Orbitz also books some hotel rooms and entertainment tickets through its own systems via allotments from the vendors.

To reduce GDS fees, Orbitz developed technology called Supplier Link to provide direct links to the internal reservations systems of participating airlines, including American Airlines, Alaska Airlines, America West Airlines, Continental Airlines, Northwest Airlines and US Airways. Customers booking tickets with those airlines are directed to the Orbitz Next-Generation Booking Engine, which uses Jini lookup services to find the optimal way to book the ticket.

Only if Supplier Link connections are down or the itinerary fails to meet specific criteria are they connected to GDS vendor WorldSpan, which gets a bigger cut of the transaction.

"Rule No. 1 is book the ticket. Rule No. 2 is book it on Supplier Link if you can," says Chism.

One benefit of the multilayered approach is that Orbitz can add more air services for a specific carrier, such as Alaska Airlines, without having to deploy a new instance of the overall application. The staff simply gets a new PC, installs Linux and Java on it and configures it as an instance of the Alaska Airlines service. The service is immediately registered with the Jini lookup service without Orbitz having to take down any part of the application.

"We literally turn on Alaska Air without the application layer even knowing," says Hjelm. "That's an enormous amount of flexibility. It really allows you to focus skills and the effort of your staff." Hjelm says less than 10% of the nearly 100 developers at Orbitz are responsible for working on the back-end Jini service interfaces and systems. The rest concentrate on the customer-facing Web applications.

"What you're trying to do is manage down the complexity of building applications and have those scale over time," says Hjelm. "One of the great questions is: Why do many development shops start to slow down as they get larger code bases and more and more people? The reason generally is that they don't follow good architectural practices."

Orbitz continues to create new customer offerings that essentially assemble or repackage existing products. For instance, it can aggregate air and hotel offerings into a dynamic service with no recoding required, according to Chism.

"All the discoveries are dynamic at runtime," he says. "You do your logic and you make the calls out when you need to, and it dynamically finds the services that it needs in the production environment."

Hidden Value

Jennifer Kotzen, who heads Jini marketing efforts at Sun, says the technology's main appeal for corporations has been its dynamic networking capability, wherein a distributed system can better accommodate change in the runtime environment.

"There's been a shift in our understanding of the value proposition with Jini," she says. "It's not just how to let devices talk to each other."

Kotzen says there have been a "good number" of deployments, particularly in the financial services industry. But many users decline to speak publicly about Jini, and Sun has no accurate way to track the number of installations, she says.

Jini also continues to be plagued by a number of lingering misconceptions, according to Kotzen. One is that all the code, services and clients need to be written in Java and that there needs to be a Java virtual machine everywhere. Kotzen says that's not true; Java-based interfaces to a legacy system and the Java virtual machine can run on a "surrogate" machine.

Another hurdle is that the independent software vendor community around Jini remains limited. Only eight vendors make commercial products targeted at Jini developers, according to Kotzen.

But Orbitz no longer frets over the lack of vendor backing. "I was worried when we started, but the community has been more than helpful," says Chism. "The guys who wrote the product are very accessible. You have questions, you have problems, they'll get back to you."

So why hasn't Jini caught on? Hjelm thinks it might have been too complex for the average software shop that's used to more simple tools. Chism says Sun mismarketed Jini to the hardware market when it should have been going after the software market. But where Orbitz is concerned, he has no regrets.

"I was very confident in the decision then, and I'm very confident in the decision now," says Chism. "I wouldn't change it. I don't think we'd be where we are today if it weren't for Jini."

5 tips for working with SharePoint Online
Shop Tech Products at Amazon