Omaha Steaks is an experienced mail-order firm that sold premium meats for years before the Internet existed. The company wasn't slow in recognizing the new medium's potential, and started advertising on AOL in the early '90s. Its Website went live several years ago. During 2000, about 10 percent of Omaha Steaks's annual revenues came from Internet sales, up from about 3 percent in 1999.
The growth of the company's online business created opportunities, but also problems. Although it cost less to take an order over the Internet than it did through its call center, Omaha Steaks found it couldn't provide the same level of service to its Internet customers.
Take delivery dates, for example. Much of Omaha Steaks's revenue comes from its gift business. Customers purchase meats to give as gifts, especially business gifts. Business peaks around the holidays and delivery times are critical. Customer service representatives at Omaha Steaks's call center could access the company's AS/400 minicomputers and tell a customer when an order would arrive, but there was no way to get a delivery date online. The Website, which was run by an ISP in another city, wasn't integrated into the business information system the way the call center was.
"When I'm ordering, I want delivery before Christmas, say," said Dan Watson, CEO of the eOne Group (the Omaha, Neb., company that provided the middleware). "At the call center, the representative could say, 'Yes, based on the workload, it can be delivered by Dec. 23.' On the Website, they couldn't guarantee anything."
That was particularly important because shifting customers to the Website from the call center would result in significant savings. According to a recent survey, it costs about to handle a customer inquiry through a customer service representative in a call center, but only a little more than to handle the same inquiry through a Website.
The obvious solution was to integrate business information into the Website so customers could get information on delivery dates and track orders, and do other important jobs, online. However, that was easier said than done because the data was in legacy applications on the AS/400. The fashionable, and expensive, solution would have been to move the entire business to a tightly integrated enterprise resource planning (ERP) package, such as SAP. But implementing ERP is not only expensive, it can take 2 years or more.
Besides, Omaha Steaks didn't want to recast its entire business in the ERP mold. It simply wanted to give online customers the same information and services that the call center provided. A more cost-effective solution would have been to let the applications on the Web server exchange information with those on the legacy systems.
The ultimate answer was to bring the Website in-house and integrate it with the AS/400 applications. The tools for the job were Linux, XML, and Java. An inexpensive Linux Web server and a suite of XML-based Java applications based on EJBs were created to mediate between the legacy systems and the Web server.
"Now when I'm on the Website, I can enter a date I want my order delivered," said Watson. "It can tell me, for instance, that we can't make that date with regular mail, but we can if we ship by Federal Express, and here's how much more it will cost." In addition, the customer receives an email confirming receipt of the order, and another when the order is shipped. This makes customers more independent and helps ease the call center's burden.
Linux wins on price performance
A three-tiered architecture (data on the back end, middleware to translate, and a Web server to present it) is one reason Linux is becoming increasingly accepted in the corporate world. The architecture doesn't absolutely require Linux, but it doesn't require anything else either. Each level of the architectural wedding cake is conceived and executed as a separate modular system. Designers can mix and match operating systems instead of having to use the same operating system in the front and middle layers that they use in the back end. That level playing field opens the door for Linux to compete in the things it does best, such as price performance.
That's what happened at Omaha Steaks: an inexpensive Linux server won hands down over much more expensive systems. "Before we went live, we brought in an RS/6000 M80 (an IBM server running IBM's AIX version of Unix) and two AS/400s," Watson said. "There was one four-way model 170 and IBM brought in a 270. [Both are AS/400s.] Then [Omaha Steaks] brought in a Dell Intel box. We did a load test and stress test on all of them, and basically the moral of the story was that the ,000 Linux machine was performing as well as the RS/6000 M80, which is a 00,000 machine, and the AS/400 was a distant second."
That isn't an uncommon result. Although eOne's middleware suite is designed to run on any platform that supports Java and XML, it often runs on Java. Keith Winton, eOne's vice president of Java technology, said, "Linux is our favorite platform to implement on. It's the fastest, it's robust, and it's low-maintenance. We don't push it, but if the customer doesn't care, we tell them they ought to look at Linux.
"Our customers don't need to know Linux per se. If they want to know anything, they can use the graphical tool, like KDE, that comes with Linux. It's just a great black box that runs everything faster and more robustly than anything else."
Mixing Java, Linux, and XML
Companies like Omaha Steaks can treat Linux as a black box because eOne's software is written in Java and XML, two other technologies used for universality. Universality is especially important for companies, like eOne, that have to quickly adapt software to many different configurations.
eOne is a tightly focused company. It provides realtime data integration between order fulfillment systems and the customer's Website. Since the specifics of every installation are different, eOne's jCommerce software has to be highly adaptable. And getting the system up and running is critical, so it has to involve a minimum of new code.
eOne's software uses EJBs liberally. "Beans" is Java-ese for software components designed to be reused and shared by multiple applications. If you're familiar with Windows programming, you can think of beans as ActiveX controls that can run on multiple operating systems. EJBs are beans designed to run in distributed environments, where a bean and the resources it calls might be on different machines.
One advantage of EJBs is that they encapsulate the logic of a process while leaving the details of implementation to the wrapper. "Our product doesn't know where 'inventory on hand' lives," Watson explained. "It just knows that it has a bean out there that says 'product available.' We just change the wrapper on the bean and it looks in [the right place in the company's] database."
XML provides a method of abstracting information from an existing system and presenting it to another system in an easy-to-read format. Unlike HTML, XML isn't a data format language, per se -- it is a set of rules and constructs for writing formatting languages easily and quickly. Using XML, a developer can define not only a tag's name and contents, but also how the tag relates to other tags. That makes it easy to standardize the data and is a big help with translating the business process.
The combination of Java, XML, and Linux is a powerful tool for software development, especially Web-related software that has to tie to legacy back ends.
"We chose to write our application in Java so it runs everywhere and can run in each computer on a different operating system and hardware if you choose to," Winton said. "The middleware is especially fun to write in Java. With it, you can talk to any database and you can talk to any system."
Java has a mixed reputation among Linux enthusiasts. Although the "Write Once, Run Anywhere" model fits nicely with the open source philosophy, Sun's efforts to maintain control over Java don't. More significantly, Java tools have been relatively slow to show up on Linux. That was a special problem in the early days of Java, when tools were scarce for everyone and the language was developing explosively.
The situation has improved greatly in the last couple of years. Not only have open source versions of Java arrived for Linux, such as the one from the Blackdown group, but many commercial and freeware tools have been ported to Linux as well. Also, Sun has declared Linux a major platform for Java, along with Windows and its own Solaris.
According to Winton, the tools are now available to do this kind of middleware development on Linux as effectively as on most other platforms. Java's performance has also improved significantly with the release of Java compilers and optimizing interpreters.
"It really is true that we find [developing in Java] takes about one-third of the time it takes to develop a given set of functions in C++," Winton said. "The language itself helps you track down and get most of the bugs out of the code at programming time instead of at deployment time. The code has about half as many bugs in it when you release the first version."
Write once (on Windows), run anywhere (including Linux)
Ironically, eOne does its development on Windows NT, even though its servers run Linux. The reason, according to Winton, is the availability of office applications and other tools. "If we switched we couldn't support our customers," Winton said. "For us, it's not the Java tools, it's the office stuff."
While there are many tools that let Linux developers work in Java, many popular office applications don't exist in Java. That makes it harder to exchange information -- especially complex, formatted information -- with Windows-based offices. (It doesn't help that Microsoft has an irritating habit of changing file formats with nearly every release of its office applications so that even the older versions of Microsoft products barf on their successors.)
For eOne, the actual development tool is JBuilder from Borland, which is also available for Linux.
The other major development tool at eOne isn't a piece of software, but a methodology. eOne is strongly committed to using software patterns, which try to abstract as much information as possible without losing generality. The idea is to speed design and minimize the amount of coding that has to be done for each new application of the pattern.
Patterns are especially important for applications like jCommerce because the company doesn't know in advance what kind of constructs the database and other back-end applications will use. While they will likely be similar, the names and details will almost certainly be different with every client.
Winton has some advice for developers who want to work in Java. "Make sure you really understand the things that make Java unique as compared to C or C++," he said. "You could write Java to look a lot like C or C++, but you'd be missing out on the things that give it a lot of its power. The power of interfaces versus inheritance, for instance."
"I'd advise [new Java developers] to really get into the Java design pattern books," Winton said. "It's such a huge wonderful way to think about software and applications via design patterns. Use that as the way to get into Java and you'll be doing great."
Learn more about this topic
- Omaha Steaks
- eOne Group
- For more on Enterprise JavaBeans, start with Sun's FAQ
- There are a lot of good books and Web sources on design patterns in software development. For example, "Implementing Basic Design Patterns in Java," from Doug Lea's "Concurrent Programming in Java," at
- Borland JBuilder
- You'll find numerous informative XML-related articles in the Java and XML section of our Topical Index
- Discuss XML, Java, and other cutting-edge technologies in the XML & Java discussion
- If you're a Java beginner, you're sure to benefit from our Java 101 series
- Tony Sintes Java Q&A series addresses reader's most pressing Java questions, including beginner-level issues and Java certification
- Have beginner questions? Please visit the Java Beginner discussion, moderated by Geoff Friesen
- Sign up for the JavaWorld This Week free weekly email newsletter and keep up with what's new at JavaWorld