Some of the higher-level components of Android in the Application Layer (described next) interact directly with the libraries just described. Other parts of the Application Layer interact with the libraries via the Android Runtime. Android software is primarily written in Java, using Google-developed and specific Java libraries. That software runs on the Android Runtime, comprised of some additional core libraries running on top of a special virtual machine called Dalvik. The core libraries provide most of the functionality of Java. Dalvik performs just-in-time (JIT) compilation and is optimized for mobile devices.