1. One or more non-transitory computer-readable media storing computer-executable instructions of an application, wherein the application has multiple components, and wherein the computer-readable instructions of the application are executable by one or more processors to perform acts comprising: maintaining a local manifest that indicates version information of current versions of the multiple components of the application, wherein the multiple components of the application includes an updater component, a main application component, one or more other executable components, and a component loader, wherein the application is executed within a virtual machine; executing the main application component to provide main functionality of the application; subsequent to executing the main application component, stopping the main application component to update one or more of the multiple components of the application; subsequent to stopping the main application component, loading, by the component loader, the updater component, and starting execution of the updater component; obtaining, by the updater component, a source manifest from a network-accessible storage service, wherein the source manifest indicates version information of available versions of the multiple components of the application; comparing, by the updater component, the version information of the local and source manifests to identify a component of the application for which an updated version is available from the network-accessible storage service; retrieving, by the updater component, the updated version of the identified component of the application from the network-accessible storage service to update the identified component of the application; subsequent to updating the identified component of the application, re-loading, by the component loader, the main application component to provide the main functionality of the application, wherein the main application component is not executed while the updater component performs the obtaining, comparing, and retrieving, wherein re-loading the main application component comprises: clearing an older version of the identified component of the application from a heap of the virtual machine, loading the updated version of the identified component of the application for execution in conjunction with the application, and storing the updated version of the identified component of the application in the heap of the virtual machine, wherein the component loader is configured to override a built-in Java class loader class associated with the virtual machine.