You can think of a smartphone as a contemporary cellphone combined with a handheld computer you can use to develop apps that run on the underlying platform. A native app is one that's compiled for a specific platform's architecture. That's both a boon and a bane. On the one hand, you can create apps that are small, fast, and look like other apps on the device,
but you need different versions of the same app to support multiple platforms.