Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

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...

InventorsJürgen Kienhöfer, Ranjit Deshpande
Original AssigneeThe SCO Group, Inc.
Primary Examiner: Gregory Morse
Attorney: Madson & Metcalf
Current U.S. Classification717/118; 717/119; 717/166; 718/1; 719/316
International Classification: H04L009/00; G06F009/44

View patent at USPTO
Search USPTO Assignment Database

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7086060Feb 15, 2001Aug 1, 2006Sun Microsystems, Inc.Method for programmatic representation and enforcement of resource controls
US7194739Dec 16, 2002Mar 20, 2007Canon Kabushiki KaishaMulti-application execution system and method thereof
US7216352Dec 12, 2002May 8, 2007Sun Microsystems, Inc.Method of reducing interference among applications co-located in a process when using dynamic libraries
US7328279Apr 4, 2005Feb 5, 2008Microsoft CorporationSystem and method for adding hardware registers to a power management and configuration system
US7810135Jan 3, 2008Oct 5, 2010International Business Machines CorporationApparatus for adopting authorizations
US7882496May 31, 2005Feb 1, 2011International Business Machines CorporationMethod and system for metering execution of interpreted programs
US7984483Apr 25, 2007Jul 19, 2011System and method for working in a virtualized computing environment through secure access

Claims

1. 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.

Drawings