Platform overview (Android to Windows)
[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]
Learn about key similarities and differences between the Android and Windows platforms.
Windows 8 is available on various device types including desktops, tablets, and other form factors. Windows 8 has many similarities with Android from operating system architecture to app development concepts, tools, and software development kits (SDKs).
Android is built on top of the Linux kernel that is adapted for mobile devices. Kernel changes include efficient power management, increased security, new hardware support, improved performance of the flash file system, and improved error reporting. Because Android apps are hosted inside a Java virtual machine (JVM) at run time, they can use a subset of Java APIs that are at the core of the Java Development Kit (JDK). Android also provides Java bindings for platform-specific programming areas like power management, user interface, location-based programming, local storage, and cloud services integration.
Windows 8 kernel
Enhancements to the Windows 8 kernel include things like enhanced boot performance, System on a Chip (SoC) features, improved run-time power management of devices, performance enhancements to the user-mode driver framework (UMDF), and security enhancements to UMDF.
Windows 8 has a driver architecture that allows user-mode as well as kernel-mode drivers. User-mode drivers (such as those for cameras and printers) run in a low-privileged environment in user mode, which helps to prevent system crashes resulting from driver quality issues. The following figure shows all Windows 8 drivers running in kernel mode to show parallels between Android and Windows 8.
Typically, Android apps run inside a Dalvik virtual machine (VM) instance, which is a register-based JVM that is optimized for low memory and for devices with mobile-friendly processors. Java class files are converted into Dalvik Executable (.dex) files. These .dex files are interpreted, except when the runtime can just-in-time (JIT)-compile a hot trace. A subset of the Java libraries are included in the Android SDK. Native-coded Android libraries are available to the Java programming environment as language-specific bindings. These Android API calls from Java are sent to native code through the Java Native Interface (JNI).
Windows 8 runtime
The Android runtime equivalent in Windows 8 is the Windows Runtime, which runs Windows Store apps. Windows 8 supports two types of apps: desktop apps and Windows Store apps. Windows Store apps run separately from each other, a mechanism known as sandboxing, which tightly controls access to system resources. Permissions for accessing system resources (such as networks and the file system) must be explicitly requested by the app at development time. At run time, when the app tries to access a protected resource, the user must give permission through a consent UI. Additionally, Windows Store apps can only be installed from trusted sources like the Windows Store (which is similar to Google Play), or with signed certificates using a technique called sideloading.
In contrast, desktop apps on Windows 8 run with privileges that are implicitly inherited from the user that started the app. Desktop app code is completely trusted, so no discretionary permissions are required by users, unless the code started from a location like an external file share or from the Internet. Additionally, desktop apps can be installed from arbitrary sources.
The Windows 8 equivalent to the Android Dalvik VM is the Microsoft .NET common language runtime (CLR). Each Windows Store app instance creates a separate .NET CLR instance for running code that's written in .NET languages like C# and Microsoft Visual Basic.NET. .NET code gets deployed as Microsoft intermediate language (MSIL) bytecode that gets JIT-compiled into processor-specific instructions at run time. This is similar to compiling Java source code into .dex files and then interpreting these .dex files at run time in Android.
The Windows Runtime allows only a subset of .NET APIs to be used inside Windows Store apps. This includes I/O, language-integrated query (LINQ) collections, networking, HTTP object serialization, threading, Windows Communications Foundation (WCF), and XML. For more info, see .NET for Windows Store apps - supported APIs.
Windows Runtime APIs are a collection of native components implemented in COM that is familiar to most Windows programmers. For Android developers who are new to Windows, COM is a remote procedure call (RPC)-based technology that creates and manages programmatic object lifecycle through class factories and reference counting. The complexity of the COM part of the Windows Runtime APIs is hidden through programming language projections.
Similar to Android, the Windows Runtime has APIs for things like media playback, networking, file storage, and geolocation. Android libraries like SGL, libc, and Secure Sockets Layer (SSL) have equivalents in Windows 8 through an Extensible Application Markup Language (XAML) rendering engine, a C runtime, and an SSL implementation. Even though SQLite is not included in the Windows Runtime, there are open source libraries compatible with the Windows Runtime that enable developers to call SQLite databases from Windows Store apps.
Equivalent to WebKit on Android, HTML rendering is done through the Windows Internet Explorer "Trident" layout engine in Windows 8. Both platforms have a similarly-named class—WebView—for embedding web sites within apps.