Native or platform-dependent applications are designed to execute only inside a certain operating system.
For example, the native Windows application can run only on the Windows platform and the native iPhone application can work only on the iPhone.
Contrary to native applications, a platform-independent application such as Java does not need a centralized or specific environment and can work on Windows, Linux, iPhone, and Android.
Due to their specific nature and ability to better utilize the system hardware, native applications are usually very fast, robust, and secure and cannot be decompiled.
Native applications have tight control over typefaces, architecture, design, and layout. They have full access to the computer hardware and can use game controllers, USB devices, speakers, microphones, or webcams. You need specific tools for developing native applications and have to build new applications for each target platform.