Monday, April 5, 2010

Application Portability

In this entry, we see an impressive example of application portability. The application runs on several platforms without any modifications to the code base. Portability is huge these days with the number of mobile devices on the market. How what is the best way to achieve optimal portability? Should this be the responsibility of the application or the platform on which it runs?

Interpreted programming languages like Java and Python attempt to solve the portability problem by producing hardware-independent byte code. This byte code is then executed by a executable interpreter. Here, it is the interpreter's responsibility to maintain portability. And they do a good job for the most part. But applications still aren't aren't fully platform agnostic.

So if all this hard work is done by the interpreter for dynamic programming languages, how do we achieve platform portability with compiled languages such as C++? Here we can use libraries that help developers with platform independence. For instance, Qt is a largely platform independent library. With compiled languages you have more control but the trade-off is that much more complexity is necessary for these applications to run on more than one platform. At least with the same code base.