IP Library Granted Patent US 8,869,177
Granted Patent B2
US 8,869,177 · App. 11/851,164 · Granted Oct 21, 2014

Decoupling components of a software system at compile time and load time

Inventors: Thomas R. Gissel (Apex, NC); Marc E. Haberkorn (Raleigh, NC); Sai G. Rathnam (Raleigh, NC)
Assignee: International Business Machines Corporation
G06F8/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,869,177
App. No.
11/851,164
Granted
Oct 21, 2014
Kind
B2
Abstract

A method, system and computer program product for decoupling components of a software system at load/compile time to accelerate application startup times. In particular, a software components partitioning (SCP) utility pre-defines a number of (implementation) classes to initiate and facilitate the decoupling process. The SCP utility allows the method names and argument lists to be recorded from a remote interface into a local interface which emulates the remote interface. The local interface is augmented with an annotation to define the remote interface. Additionally, a pre-defined keyword is appended to the name of the local interface to enable the creation of a (pre-defined) classname. Furthermore, when the classname is loaded, an implementation (via a Java implementation class, for example) for the remote class is loaded, and the implementation is associated with a dynamic proxy that implements both the local and remote interfaces, on demand.

Claims (52)

1. In a data processing system with a Java platform, a method comprising:

pre-defining, at a load/compile time, a number of implementation classes required to facilitate a decoupling of software components, at the load/compile time, to accelerate application startup;

recording one or more method names and one or more argument lists from a required remote interface into a local interface;

augmenting the local interface to include a ProxiesTo annotation that defines the remote interface in order to alert a runtime process that the local interface emulates the remote interface;

initiating the creation of a dynamic proxy;

appending a predefined keyword to a name of the local interface to enable the generation of a new classname;

detecting when the new classname is loaded; and

in response to the new classname being loaded:

loading an implementation for a remote class associated with the remote interface; and

associating the implementation with the dynamic proxy that implements the local and remote interfaces when required by one of an action and a system action.

2. The method of claim 1 , wherein said pre-defining further comprises:

creating one or more classes that enable the remote interface to be defined by the ProxiesTo annotation; and

applying the ProxiesTo annotation as an augmentation to the local interface in the code development process.

3. The method of claim 1 , wherein said initiating further comprises activating a function that returns a dynamic proxy, given a specified class loader and a specified set of interfaces, which set of interfaces includes the remote interface and the local interface.

4. The method of claim 1 , wherein said enabling further comprises creating one or more classes and keywords that enable the generation of a classname to load an implementation for the remote class and to associate the implementation with the dynamic proxy.

5. A computer program product comprising:

a non-transitory computer readable storage medium; and

program source code on said computer readable storage medium that when executed within a data communication device, said program code provides the functionality of:

pre-defining at a load/compile time, a number of implementation classes required to facilitate a decoupling of software components at the load/compile time to accelerate application startup;

recording a set of method names and argument lists from a required remote interface into a local interface;

augmenting the local interface to include a ProxiesTo annotation that defines the remote interface in order to alert the runtime that the local interface emulates the remote interface;

initiating the creation of a dynamic proxy;

appending a predefined keyword to the name of the local interface to enable the generation of a new classname;

detecting when the new classname is loaded; and

in response to the new classname being loaded:

loading an implementation for a remote class associated with the remote interface; and

associating the implementation with the dynamic proxy that implements the local and remote interfaces when required by one of an action and a system action.

6. The computer program product of claim 5 , wherein said code for pre-defining further comprises code for:

creating one or more classes that enable the remote interface to be defined by the ProxiesTo annotation; and

applying the ProxiesTo annotation as an augmentation to the local interface in the code development process.

7. The computer program product of claim 5 , wherein said code for initiating further comprises code for:

employing a function which returns a dynamic proxy given a specified class loader and a specified set of interfaces which set comprises the remote interface and the local interface.

8. The computer program product of claim 5 , wherein said code for enabling further comprises code for, creating one or more classes and keywords that enable the generation of a classname to load an implementation for the remote class and to associate the implementation with the dynamic proxy.

9. A data processing system comprising:

a processor which executes a Java Platform software;

a memory system which stores the Java Platform;

a utility executing on the processor which enables the processor to:

pre-define, at a load/compile time, a number of classes required to facilitate a decoupling of software components at the load/compile time to accelerate application startup;

record a set of method names and argument lists from a required remote interface into a local interface;

augment the local interface to include a ProxiesTo annotation that defines the remote interface in order to alert the runtime that the local interface emulates the remote interface;

initiate the creation of a dynamic proxy;

append a predefined keyword to the name of the local interface to enable the generation of a new classname;

detect when the new classname is loaded; and

in response to the new classname being loaded:

load an implementation for a remote class associated with the remote interface; and

associate the implementation with the dynamic proxy that implements the local and remote interfaces when required by one of an action and a system action.

10. The system of claim 9 , wherein said pre-define function further comprises functions for enabling the processor to:

create one or more classes that enable the remote interface to be defined by the ProxiesTo annotation; and

apply the ProxiesTo annotation as an augmentation to the local interface in the code development process.

11. The system of claim 9 , wherein said functions that enabled the processor to initiate further comprises functions for the processor to:

employ a function which returns a dynamic proxy given a specified class loader and a specified set of interfaces which set comprises the remote interface and the local interface.

12. The system of claim 9 , wherein said functions that enable further comprises functions that enable the processor to create one or more classes and keywords that enable the generation of a classname to load an implementation for the remote class and to associate the implementation with the dynamic proxy.

Assignments (5)
RELEASE OF FIRST AMENDMENT TO PATENT SECURITY AGREEMENT BETWEEN ATLANTIC CITY COIN & SLOT SERVICE COMPANY, INC. AND WELLS FARGO NATIONAL ASSOCIATION, SII TO WACHOVIA BANK, NATIONAL ASSOCIATION, SII TO FIRST UNION NATIONAL BANK Recorded Mar 19, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: IGT
Reel/Frame 035226/0598 →
FIRST AMENDMENT TO PATENT SECURITY AGREEMENT Recorded Sep 30, 2008
From: ATLANTIC CITY COIN & SLOT SERVICE COMPANY, INC.
To: WACHOVIA BANK, NATIONAL ASSOCIATION (AS SUCCESSOR TO FIRST UNION NATIONAL BANK)
Reel/Frame 021603/0221 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2007
From: GISSEL, THOMAS R.; HABERKORN, MARC E.; RATHNAM, SAI G.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 019792/0763 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2007
From: SEELIG, JERALD C.; HENSHAW, LAWRENCE M.
To: ATLANTIC CITY COIN & SLOT SERVICE COMPANY, INC.
Reel/Frame 019720/0355 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2007
From: SEELIG, JERALD C.; HENSHAW, LAWRENCE M.
To: ATLANTIC CITY COIN & SLOT SERVICES COMPANY, INC.
Reel/Frame 019720/0558 →
Continuity (1)
Related Publication 20090070791A1 · Mar 12, 2009