A modified JAVA(™) execution environment is described. The modified environment supports multiple JAVA(™) applications on a single JAVA(™) virtual machine (JVM). This modified environment provides significant memory and performance improvements when running multiple applications on a single computer system. Notably, no changes are needed to the source code of an application to take advantage of the modified environment. Further, embodiments of the invention may support shared access to base classes through the use of overlays. Additionally, system resource permissions can be enforced based upon the user permissions associated with a running application. Notably, embodiments of the invention allow multiple applications to share the abstract window toolkit (AWT) on a per display basis. Since only a single garbage collection routine is necessary, applications see improved performance relative to running in different JVMs. Further, the shared base classes eliminate significant... |
Referenced by|
| US7086060 | Feb 15, 2001 | Aug 1, 2006 | Sun Microsystems, Inc. | Method for programmatic representation and enforcement of resource controls | | US7194739 | Dec 16, 2002 | Mar 20, 2007 | Canon Kabushiki Kaisha | Multi-application execution system and method thereof | | US7216352 | Dec 12, 2002 | May 8, 2007 | Sun Microsystems, Inc. | Method of reducing interference among applications co-located in a process when using dynamic libraries | | US7328279 | Apr 4, 2005 | Feb 5, 2008 | Microsoft Corporation | System and method for adding hardware registers to a power management and configuration system | | US7810135 | Jan 3, 2008 | Oct 5, 2010 | International Business Machines Corporation | Apparatus for adopting authorizations | | US7882496 | May 31, 2005 | Feb 1, 2011 | International Business Machines Corporation | Method and system for metering execution of interpreted programs | | US7984483 | Apr 25, 2007 | Jul 19, 2011 | | System and method for working in a virtualized computing environment through secure access |
Claims1. A modified transportable byte code execution environment comprising: - a substantially unmodified transportable byte code virtual machine;
- a set of substantially unmodified base classes;
- one or more overlays to the set of substantially unmodified base classes, the one or more overlays enabling corresponding base classes to support shared access by one or more substantially unmodified transportable byte code applications;
- an unmodified primordial class loader for loading the system base classes as overlaid by the one or more overlays to the base classes;
- a security manager supporting multiple applications and for limiting access to system resources according to user permissions; and
- a dynamic class loader generator for creating a class loader for loading an application, the application classes and creating a thread group for the application;
- wherein in response to an object of a first application requesting a resource of a shared base class, the one or more overlays are configured to identify properties of the first application by:
- identifying a first class loader that loaded the object;
- if the object was loaded by a first class loader that was created for the application, using information in the first class loader and its associated namespace to identify the properties of the first application; and
- if the object was loaded by the primordial class loader, identifying a first thread group created for the first application and using information associated with the first thread group to identify the properties of the first application.
2. The modified transportable byte code execution environment of claim 1, wherein the application includes at least one of an application class loader and an application security manager. 3. The modified transportable byte code execution environment of claim 1, wherein the one or more overlays include overlays to file classes to limit access to system resources according to user permissions associated with the application. 4. The modified transportable byte code execution environment of claim 1, wherein the application includes one or more invocations of Abstract Window Toolkit (AWT) classes. 5. The modified transportable byte code execution environment of claim 1, wherein the one or more overlays support determining a calling application. 6. The modified transportable byte code execution environment of claim 5, wherein the determining a calling application comprises identifying the class loader of a calling method, and using the class loader to identify the application. 7. The modified transportable byte code execution environment of claim 5, wherein the determining a calling application comprises identifying the thread group for a calling method, and using the thread group to identify the application. 8. A method of supporting a number of applications in a single transportable byte code execution environment, the method comprising: - generating a class loader for each of the applications in the number of applications, the class loader providing a name space for each application, and a thread group for each application;
- overlaying one or more substantially unmodified base classes to support the number of applications;
- determining a calling application for a method; and
- limiting access by the number of applications to system resources according to user permissions; and
- in response to an object of a first application requesting a resource of a shared base class:
- identifying a first class loader that loaded the object;
- if the object was loaded by a first class loader that was created for the application, using information in the first class loader and its associated namespace to identify properties of the first application; and
- if the object was loaded by the primordial class loader, identifying a first thread group created for the first application and using information associated with the first thread group to identify the properties of the first application.
9. The method of claim 8, wherein at least one of the number of applications includes an application class loader. 10. The method of claim 8, wherein at least one of the number of applications includes an application security manager. 11. A computer data signal embodied in a carrier wave comprising: - a computer program for supporting a number of substantially unmodified transportable byte code applications on a substantially unmodified transportable byte code virtual machine, the transportable byte code virtual machine including a set of substantially unmodified base classes and a substantially unmodified primordial class loader, the program comprising:
- a first set of instructions for generating a class loader for each of the transportable byte code applications in the number of substantially unmodified transportable byte code applications, the class loader providing a name space for each application, and a thread group for each application, the first set of instructions further associating a user with each application;
- a second set of instructions for overlaying one or more substantially unmodified base classes to support the number of applications;
- a third set of instructions for determining a calling application for a method; and
- a fourth set of instructions for limiting access to a system resource by an application according to whether the user associated with the application has access to the system resource, wherein the application also has its own security management policies; and
- a fifth set of instructions for, in response to an object of a first application requesting a resource of a shared base class:
- identifying a first class loader that loaded the object;
- if the object was loaded by a first class loader that was created for the application, using information in the first class loader and its associated namespace to identify properties of the first application; and
- if the object was loaded by the primordial class loader, identifying a first thread group created for the first application and using information associated with the first thread group to identify the properties of the first application.
|