Platforms may also include: • Hardware alone, in the case of small
embedded systems. Embedded systems can access hardware directly, without an OS; this is referred to as running on "
bare metal". •
Device drivers and
firmware. • 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
application virtual machine (VM) such as the
Java virtual machine or
.NET CLR. 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 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. ==Operating system examples==