With the exploding popularity of smartphones and tablets, mobile application development is becoming a more and more popular medium of software creation. The creation of mobile applications draws much of its roots from traditional software development. The end result, however, is software intended to utilize the unique features and hardware of mobile devices. With desktop PC software development, programmers must create an application that can operate on a minimum set of hardware. The same goes for mobile applications, though the hardware variances in this instance are much more minimal. At the same time, the hardware on smartphones and tablets are nowhere near to the caliber of laptops and PCs, which means mobile apps must be designed to show optimum performance. For example, a gaming app would be limited in its graphical elements due to the limited graphics processors of mobile devices.
Mobile application development is similar to Web application development and has its roots in more traditional software development. One critical difference, however, is that mobile applications (apps) are often written specifically to take advantage of the unique features a particular mobile device offers. For instance, a gaming app might be written to take advantage of the iPhone's accelerometer. One way to ensure that applications show optimum performance on a given device is to develop the application (app) natively on that device. This means that at a very low level, the code is written specifically for the processor in a particular device. When an app needs to run on multiple operating systems, however, there is little -- if any -- code that can be reused from the initial development. The application must essentially be rewritten for each specific device.