So you’ve come up with a great idea for a new application that is sure to take the world by storm. You’ve sketched some GUI designs or maybe even written up an informal design document (if anything, putting thoughts down on the paper helps find any lurking flaws). However, there’s still one hitch in the plan - OS compatibility. Software that can run on a multitude of different systems is sure to have a wider appeal than one that is confined to a single OS, so you want your applicaiton to be cross-platform.
In this post I’ll discuss some general tips for developing cross-platform programs. The tips aren’t specific to any particular programming language, they can be helpful regardless of your design environment.
Use framework(s) and libraries
This is a rather obvious one. Many popular frameworks and modules/libraries/what have you are already cross-platform. Aside from the usual benefits of frameworks, using a framework will cut down on maintenance and testing costs. For example, if you implement your own image loaded class, you’ll have to ensure that it performs as expected on all target systems. On the other hand, a third-party library that claims portability will (usually) have already been tested on vairous platforms by its developers.
Stick to open standards
Often your application will need to store some data on the disk. Should you use one of the existing file formats, or invent your own? The answer is most certainly “don’t reinvent the wheel”. Well-known formats are more likely to be recognized by different OS’es and other software. For example, if you’re writing a CD/DVD backup tool, use the ISO format instead of MDF format or some other proprietary nastiness. Your users will appreciate the ability to use the file with other applications, too.
Avoid unnecessary optimization
Now, you might ask : “Okay, this is a good tip, but what does it have to do with cross-platform development?”
While avoiding unneeded optimization is generally recognized as good practice, it’s doubly as important when creating a cross-platform application. Making code portable usually means introducing some overhead, and it can be all too tempting to go to great lengths minimize this inefficiency.
However, it’s often not really needed. For example, an application written in C/C++ may be much faster than one created in an interpreted language, but the JavaScript-based Adobe Air platform would still be a better choice for a simple, network-bound RSS reader or a fancy Twitter client.
All of the above can be summarized as “look for existing solutions first”. Chances are that there is already a cross-platform way to do what you need, so check the ‘net before rolling your own. Otherwise you will get bogged down with ensuring compatibility very quickly.













