|This article needs additional citations for verification. (August 2010)|
A computing platform is, in the most general sense, whatever pre-existing environment a piece of software is designed to run within, obeying its constraints, and making use of its facilities. Typical platforms include a hardware architecture, an operating system (OS) and runtime libraries.
Binary executables have to be compiled for a specific hardware platform, since different central processor units have different machine codes. In addition, operating systems and runtime libraries allow re-use of code and provide abstraction layers which allow the same high-level source code to run on differently configured hardware. For example, there are many kinds of data storage device, and any individual computer can have a different configuration of storage devices; but the application is able to call a generic
write function provided by the OS and runtime libraries, which then handle the details themselves. A platform can be seen both as a constraint on the application development process — the application is written for such-and-such a platform — and an assistance to the development process, in that they provide low-level functionality ready-made.
Platforms may also include:
- Hardware alone, in the case of small embedded systems. Embedded systems can access hardware directly, without an OS.
- A browser 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.
- An application, such as a spreadsheet or word processor, which hosts software written in an application-specific scripting language, such as an Excel macro. This can be extended to writing fully-fledged applications with the Microsoft Office suite as a platform.
- Software frameworks that provide ready-made functionality.
- Cloud computing and Platform 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. The social networking sites Twitter and facebook are also considered development platforms.
- A virtual machine (VM) such as the Java virtual machine. Applications are compiled into a format similar to machine code, known as bytecode, which is then executed by the VM.
- A virtualized 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 to 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 for the Windows, Linux or Macintosh OS platforms. However, the JVM, the layer beneath the application, does have to be built separately for each OS.
Operating system examples
- BlackBerry OS
- Firefox OS
- Embedded Linux
- Palm OS
- Windows Mobile
- Windows Phone
- Adobe AIR
- Adobe Flash
- Adobe Shockwave
- Binary Runtime Environment for Wireless (BREW)
- Cocoa (API)
- Cocoa Touch
- Java platform
- Microsoft XNA
- Mozilla Prism, XUL and XULRunner
- .NET Framework
- Open Web Platform
- Oracle Database
- SAP NetWeaver
- Windows Runtime
Ordered roughly, from more common types to less common types:
- Commodity computing platforms
- Wintel, that is, Intel x86 or compatible personal computer hardware with Windows operating system
- Macintosh, custom Apple Computer hardware and Mac OS operating system, now migrated to x86
- ARM architecture used in mobile devices
- x86 with Unix-like systems such as BSD variants
- CP/M computers based on the S-100 bus, maybe the earliest microcomputer platform
- Video game consoles, any variety
- RISC processor based machines running Unix variants
- Midrange computers with their custom operating systems, such as IBM OS/400
- Mainframe computers with their custom operating systems, such as IBM z/OS
- Supercomputer architectures