The development of mobile applications presents several
challenges to programmers. The need for support in a range
of mobile hardware platforms available on the market (e.g.
cell phones, PDAs, smartphones, tablets, etc) is one of these
challenges. This requires the development and maintaining
of several versions of mobile systems in order to deal
with the particular features of each platform (e.g. display
size, key codes, power processing, APIs, etc).