Everyone is familiar with an application or app. We often do one or more of the following – install, run, update, remove. Very simply, an application software is a computer program that is designed to perform a user’s domain specific activity.
But what makes up an application? Here is a simplified look at it under the hood, in the context of a desktop C/C++ application.
It is necessary for an application to start or launch, and is the entry point for the program. Windows has the
.exe extension but is not typical on GNU/Linux.
Often referred to as dynamic libraries, these are run-time dependencies required for the executable to run. They are Dynamic Linked Libraries (
.dll) on Windows and Shared Object (
.so) on GNU/Linux. These can be broadly grouped into 3 categories.
Applications for software design reasons would have partitioned their source code to be built as libraries instead of one monolithic executable.
Third party libraries
Often an application may use third party libraries to leverage their specialization or expertise.
Invariably, system libraries are a must for any application as it provides low level functionality. A common dependency is on the C-RunTime (CRT),
msvcr*.dll on Windows and
libc.so on GNU/Linux.
Typically, these files embed data that is required for the application but kept external to it (as opposed to hard coding in the program) for flexibility. They could be text,
xml or other file formats.
They could be Windows batch (
.bat) files or GNU/Linux shell (
The collection of all these files (and additional information) are included in a Windows
Installer or GNU/Linux
Package referred to as a software distribution.