Home > Articles > Programming > C/C++

Why Standards Alone Won't Get You Portable Software and How to Make Open-Source Middleware Work for You

  • Print
  • + Share This
Need to develop portable and efficient software across a wide range of operating system platforms? Doug Schmidt and Steve Huston describe a unique open-source solution: The ADAPTIVE Communication Environment (ACE).
Douglas C. Schmidt and Stephen D. Huston are the authors of C++ Network Programming, Volume 1: Mastering Complexity Using ACE and Patterns (Addison-Wesley, 2001, ISBN 0-201-60464-7).
Like this article? We recommend


The need to write portable software that runs on a variety of computing platforms becomes more obvious every day. Leading mainstream computer vendors such as IBM, HP, Compaq, and Dell offer a mix of Windows, Linux, and UNIX operating systems across their hardware platforms. Likewise, as people become ever more connected and mobile, many computer vendors are also supporting embedded and handheld systems.

As an IT professional, it's your job to develop software that enables your company to gain competitive advantage. The key to that advantage often lies in creating portable software that runs on multiple operating system (OS) platforms, and versions of platforms. If you believe the talk in some software development circles, you might think that de facto standards such as Windows, or de jure standards such as POSIX and UNIX98, are all you need to make your applications portable across the growing variety of computing platforms outlined above. Unfortunately, the old adage that "the nice thing about standards is that there are so many to choose from" is even more applicable today than it was a decade ago. Dozens of different OS platforms are used in commercial, academic, and government projects, including real-time, embedded, and handheld systems; personal and laptop computers; an assortment of various-sized UNIX or Linux systems; and "big iron" mainframes and even supercomputers. Moreover, the number of OS permutations grows with each new version and variant.

In theory, the idea behind standards is sound: If many vendors (or one über-vendor) implement a standard, code adhering to the standard will work on all platforms that implement that standard. In practice, however, standards evolve and change, just like software. Moreover, vendors often choose to implement different standards, or versions of standards, at different times. It's therefore likely that you'll work on multiple computing platforms that implement different standards in different ways at different times.

Since your customers pay you to solve their business needs—not to wrestle continuously with portability details—it's worthwhile to consider how to ensure that standards work for you, rather than against you. To assist you in this quest, this article describes some difficulties you're likely to encounter when relying on standards—OS standards in particular—for portability. It then describes some of the ways that middleware and open-source software models can help you develop portable networked applications more quickly and easily.

  • + Share This
  • 🔖 Save To Your Account