Environment in which a piece of software is executed
Acomputing platform,digital platform,[1] orsoftware platform is the infrastructure on whichsoftware is executed. While the individual components of a computing platform may be obfuscated under layers ofabstraction, thesummation of the required components comprise the computing platform.
Sometimes, the most relevant layer for a specific software is called a computing platform in itself to facilitate the communication, referring to the whole using only one of its attributes – i.e. using ametonymy.
For example, in a single computer system, this would be the computer'sarchitecture,operating system (OS), andruntime libraries.[2] In the case of anapplication program or a computervideo game, the most relevant layer is the operating system, so it can be called a platform itself (hence the termcross-platform for software that can be executed on multiple OSes, in this context). In a multi-computer system, such as in the case of offloading processing, it would encompass both the host computer'shardware,operating system (OS), andruntime libraries along with other computers utilized forprocessing that are accessed viaapplication programming interfaces or aweb browser. As long as it is a required component for the program code to execute, it is part of the computing platform.
Hardware alone, in the case of smallembedded systems. Embedded systems can access hardware directly, without an OS; this is referred to as running on "bare metal".
Abrowser in the case of web-based software. The browser itself runs on a hardware+OS platform, but this is not relevant to software running within the browser.[3]
An application, such as a spreadsheet or word processor, which hosts software written in an application-specificscripting language, such as anExcel macro. This can be extended to writing fully-fledged applications with theMicrosoft Office suite as a platform.[4]
Cloud computing andPlatform as a Service. Extending the idea of a software framework, these allow application developers to build software out of components that are hosted not by the developer, but by the provider, with internet communication linking them together.[5] The social networking sitesTwitter andFacebook are also considered development platforms.[6][7]
Avirtualized version of a complete system, including virtualized hardware, OS, software, and storage. These allow, for instance, a typical Windows program to run on what is physically a Mac.
Some architectures have multiple layers, with each layer acting as a platform for the one above it. In general, a component only has to be adapted to the layer immediately beneath it. For instance, a Java program has to be written to use the Java virtual machine (JVM) and associated libraries as a platform but does not have to be adapted to run on the Windows, Linux or Macintosh OS platforms. However, the JVM, the layer beneath the application, does have to be built separately for each OS.[8]