Image Forming Apparatus Memory Isolation for Java and Native Interoperability
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
When using different programming languages for software development, errors in memory operations by one program can inadvertently affect the operation of another program, leading to issues such as data loss or system crashes, particularly when programs lack memory management automation.
Innovation Solution
The solution involves isolating the logical memory spaces of different programming environments within an image forming apparatus, ensuring that errors in memory operations do not cross boundaries by using a native server and client mechanism that operates independently, allowing programs developed in different languages to execute without interfering with each other's memory spaces.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If programs developed in different programming languages share a logical memory space to enable calling between them, then interoperability is improved, but memory operation errors can propagate across program boundaries reducing reliability
Solution Approach 1:
The patent divides the memory space into separate logical memory spaces for different programming languages (e.g., Java virtual machine memory space and native application memory space). This segmentation prevents memory operation errors from propagating across language boundaries while still enabling interoperability through controlled interfaces such as the native method interface that allows Java programs to call native applications without sharing the same logical memory space.
2Ease of operation
If automatic memory management is implemented to simplify programming, then ease of operation is improved, but programs lacking this feature cannot be developed in certain languages
Solution Approach 1:
The patent introduces a native method interface as an intermediary layer between programs with automatic memory management (Java virtual machine) and programs without it (native applications). This intermediary enables calling between different programming languages while maintaining their respective memory management characteristics, allowing Java programs to call native applications without requiring the native applications to implement automatic memory management.
Data Source
Figure 1~2
Figure 3
Figure 4
AI summary
A native client (331, 704) transmits, in accordance with a request from an image processing plugin application executed in a Java execution environment (330), a processing request for requesting execution of image processing using a native module (316, 703) executed in a C/C++ execution environment. A native server (315, 705) receives the processing request transmitted from the native client and executes the image processing by executing the native module in accordance with the received processing request. The native server is operated on a native control process (350) that uses a memory space independent of a memory space used in the Java execution environment.