Contents Up Previous Next

The need for portability

Not so long ago, it seemed as though Microsoft was on course to take over the desktop for good with the Windows range of operating systems. Unix was retreating to server territory and had all but given up the fight against NT. Apple was sickening (in the non-derogatory sense of the word!) and it seemed almost common sense that the quirky Mac had had its day.

At the start of the new century, the picture has changed quite dramatically. Linux is advancing from its position of strength in the server market and is poised to make inroads on the desktop, where the high price of Windows gives it an advantage. Apple has made an impressive comeback and is revamping its own operating system. The embedded market continues to explode and has given rise to new niches for specialist operating systems. The keyword now is diversity, when the best guess of a few years was that Microsoft would conquer all. More than ever, application developers need to keep their options open and targeting one platform only can be a recipe for commercial (or open source) disaster.

In the light of this change in the computing landscape, cross-platform development (or multiplatform development as we call it in this book) has become quite a hot and sometimes bitterly controversial topic. There are a number of ways to achieve the goal of portability, and many tools and languages to choose from. However, it is still generally agreed wisdom that C++ is the language of choice for desktop applications that depend on speed, ease of delivery and compatibility with billions of lines of existing code. Plus, there are many hundreds of thousands of developers now experienced in C++ programming.

The purpose of this book is to give you (the developer or interested manager) a solid grounding in one increasingly popular multiplatform solution: wxWindows. wxWindows is an open source GUI toolkit that has been on the scene since 1993 and has reached a high degree of stability and functionality. It is available for Linux (and most other Unix variants), all desktop versions of Microsoft Windows, and Mac. Other ports are in progress.