Virtual application
A virtual application is an application that has been optimized to run on virtual infrastructure. The application software along with just enough operating system (JeOS or "juice") is combined inside a virtual machine container in a manner that maximizes the performance of the application. By minimizing the system software to the smallest set of packages required to support the application, the maintenance and administration burden of the virtual application is greatly reduced.
By including Application streaming in the design of an application server capable of hosting a Virtual Application, no application specific code need reside on the server at all. Packages of code reside on the server, but the details on how they are to be invoked in order to create the functionality that adds up to the application, gets passed to the server as and when needed. In effect the application does not exist on the server at all. Though clients can still invoke it almost as if it did. The difference being that the incoming request must either include application logic ( exploiting the code packages on the server), or information on where to locate such logic in a repository.
Virtual appliances are a category of virtual applications which are further optimized for simplified setup and configuration by the customer and remote management by the application vendor.