Runtime Module Loading for Application Customization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for customizing computer-executable applications, such as testing harnesses, require specifying functionality at compile or link time using static or dynamic link libraries, leading to overhead and potential inclusion of proprietary information when releasing customized versions.

Innovation Solution

The technology allows for runtime customization by splitting applications into a core and modular components, enabling the dynamic loading of modules at runtime to add or remove functionality, including language-level features and constructs, without prior specification, thus isolating proprietary features and reducing overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If static or dynamic link libraries are used for customization, then functionality can be extended, but the functionality must be known at compile or link time and creates overhead when releasing customized versions

Engineering Contradiction:
Improvefunctionality extensionVSAvoidcompilation overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements runtime loading of language modules, allowing the application to dynamically load and unload language implementations without recompilation. The core application maintains a registry of available languages and can load specific language modules at runtime based on user needs, transforming the static linking approach into a dynamic one that adapts to runtime requirements.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent segments the application into a core component and separate language modules. Each language is implemented as an independent module that can be loaded separately. This segmentation allows the core application to remain lightweight while language-specific functionality is distributed across separate loadable modules, reducing the overhead of including all languages by default.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If proprietary functionality is included in the testing harness, then developer-specific features are available, but releasing sanitized versions for third parties creates overhead and risk of accidental inclusion

Engineering Contradiction:
Improvedeveloper-specific functionalityVSAvoidproprietary information leakage
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent segments proprietary functionality into separate language modules that can be independently controlled. The core application contains only neutral, third-party-safe functionality, while proprietary features reside in optional language modules. This allows the distributor to release a sanitized core version to third parties while maintaining the ability to load proprietary language modules only when appropriate, eliminating the risk of accidental proprietary information leakage.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a module loading mechanism as an intermediary between the core application and language-specific functionality. This intermediary layer controls which modules are loaded and executed, providing a security boundary that prevents unauthorized access to proprietary functionality while still allowing it to be utilized when properly authorized.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If all language functionalities are included in the application, then complete language support is available, but the application size and loading time increase

Engineering Contradiction:
Improvelanguage support coverageVSAvoidapplication loading time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent implements dynamic module loading where language functionalities are loaded only when needed rather than being statically included. The core application starts with minimal dependencies and loads language modules on-demand based on user selection or system requirements, significantly reducing initial loading time while maintaining full language support coverage when required.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent loads only the necessary language modules required for the current task rather than loading all available language functionalities. This partial loading approach reduces memory consumption and loading time by loading exactly what is needed and leaving other language modules unloaded until they are required.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS9304762B2Automatically customizing a computer-executable application at runtime
Publication Date: 2016.04.05 APPLE INC
  • US9304762B2 patent drawing
  • US9304762B2 patent drawing
  • US9304762B2 patent drawing

AI summary

Disclosed is a method of automatically customizing a computer executable application, such as a test automation harness, based on currently installed modules. The functionality of the application can be split in multiple modules. At runtime, the application can automatically detect the presence or absence of a module. If a module is available, it can automatically be integrated with the application such that the functionality, such as language-level features and constructs, provided by the module is active and/or exposed. If the module is absent, the application can continue executing without the functionality provided by the module.