Java Class Loading via Dependency Probability Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current class loading mechanisms, such as Websphere caching and JIT compilation, are inefficient due to the initial bulk loading of Java classes and failure to consider source code content for caching decisions.

Innovation Solution

A method that retrieves Java class files, identifies class dependencies, determines a probability for caching based on these dependencies, and loads files into a cache accordingly, prioritizing high-probability files for initial loading.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a large number of JAVA classes are loaded into cache at one time (Websphere class loading caching), then the classes are available for reuse in subsequent loading, but the initial loading process becomes time consuming

Engineering Contradiction:
Improveclass availability for reuseVSAvoidinitial loading time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the class loading process by dividing classes into different categories (system classes, application classes, library classes) and loading them at different times and with different priorities. This allows the system to load only essential classes initially rather than all classes at once, reducing initial loading time while ensuring critical classes are available for reuse.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary analysis of class dependencies and usage patterns before the actual loading process. By identifying which classes are most likely to be used based on source code analysis and dependency graphs, the system pre-loads only those high-probability classes into cache, avoiding the time cost of loading all classes while ensuring the right classes are available.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If JIT compilation dynamically translates source code to byte code, then classes are cached for later use, but the system ignores source code content that could determine which JAVA classes to cache

Engineering Contradiction:
Improveclass cachingVSAvoidsource code content analysis
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The patent performs preliminary static analysis of source code to identify class dependencies, import statements, and usage patterns before runtime. This preliminary action extracts valuable information from source code content that JIT compilation would otherwise ignore, enabling the system to make informed decisions about which classes to cache and in what order.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements a feedback mechanism where the system continuously monitors class usage patterns and updates its caching strategy accordingly. By analyzing source code content and actual runtime behavior, the system adjusts which classes are loaded into cache, creating a closed-loop system that learns from both static analysis and dynamic execution data.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9703578B2Providing class loading for JAVA™ applications
Publication Date: 2017.07.11 RED HAT INC
  • US9703578B2 patent drawing
  • US9703578B2 patent drawing
  • US9703578B2 patent drawing

AI summary

A mechanism for providing class loading for a JAVA application is disclosed. A method of the invention includes retrieving, by a processing device, a JAVA class file. The method also includes identifying, by the processing device, a class dependency for the JAVA class file. The method also includes determining, by the processing device, a probability that the JAVA class file is to be loaded into a cache based on the identified class dependency. The method further includes loading, by the processing device, the JAVA class file into the cache based on the probability determined for the JAVA class file.