Java Agent for Inter-Module Access Check Override

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The majority of Java applications still rely on Java version 8 or prior due to concerns about adding complexity, despite the advantages of Java version 9's module system, which introduces complexity in managing module permissions and access restrictions.

Innovation Solution

A Modular Java Manager (MJM) is introduced that acts as a Java agent, providing an audit trail of changes needed for Java 9+ compliance, allowing for automated policy scripting and monitoring module activities to prevent production failures, and generating notifications for access check failures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If Java version 9 module system is implemented, then module access control and security are improved, but system complexity increases

Engineering Contradiction:
Improvemodule access controlVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an agent as an intermediary component that mediates between the Java application and the module system. The agent intercepts module access requests, determines whether they should be allowed based on configured policies, and enforces the decisions. This mediator approach maintains the security benefits of Java 9 modules while abstracting away the complexity from the application code, as the agent handles the intricate module resolution and access control logic centrally rather than requiring complex annotations and configurations throughout the application.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If strict module access restrictions are enforced, then security and encapsulation are improved, but application functionality may be broken

Engineering Contradiction:
ImproveencapsulationVSAvoidapplication functionality
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements dynamic access control policies that can adapt based on the specific context of each module access request. Rather than applying static, rigid restrictions, the agent evaluates each request against configurable policies that can allow access under certain conditions while blocking it under others. This dynamic approach enables the system to maintain strict encapsulation where needed while automatically permitting necessary inter-module communications, thus preserving application functionality without compromising security.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If Java 9+ compliance is enforced, then modernization benefits are achieved, but migration complexity increases

Engineering Contradiction:
ImproveJava version compatibilityVSAvoidmigration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent employs preliminary action by having the agent analyze module access patterns and generate compliance reports before full Java 9+ enforcement is implemented. The agent can identify potential compliance issues, suggest necessary module exports and opens statements, and allow developers to progressively migrate their codebase. This preliminary analysis and gradual migration approach reduces the complexity of Java 9+ adoption by providing a clear roadmap and automated guidance rather than requiring complete rewriting of module structures at once.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11436030B2Modular Java manager performing capturing and overriding of access check failures for inter-module operations between Java modules by an agent using inserted instrumentation
Publication Date: 2022.09.06 CISCO TECHNOLOGY INC
  • US11436030B2 patent drawing
  • US11436030B2 patent drawing
  • US11436030B2 patent drawing

AI summary

In one embodiment, an agent inserts instrumentation into a Java Platform Module System in which a plurality of Java modules of an application is executed. The agent captures, using the instrumentation, an access check failure for an inter-module operation between the Java modules. The agent overrides, using the instrumentation, the access check failure. The agent reports the captured access check failure to a user interface.