1. A method comprising: receiving by a data processing device a list of tasks that define a patch for application at the data processing device; instantiating a virtual machine on the data processing device for use in applying the patch; determining whether a task declared in the list of tasks is unsupported by bytecode currently associated with the virtual machine; upon determining that a task is unsupported by the bytecode currently associated with the virtual machine, obtaining additional bytecode to implement the unsupported task; and executing the additional bytecode at the virtual machine to perform the unsupported task with other tasks in the list to apply the patch.