CN106980516A - 信息处理装置及资源管理方法 - Google Patents
信息处理装置及资源管理方法 Download PDFInfo
- Publication number
- CN106980516A CN106980516A CN201710028352.1A CN201710028352A CN106980516A CN 106980516 A CN106980516 A CN 106980516A CN 201710028352 A CN201710028352 A CN 201710028352A CN 106980516 A CN106980516 A CN 106980516A
- Authority
- CN
- China
- Prior art keywords
- class
- storehouse
- path
- app
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种信息处理装置及资源管理方法。根据本发明,作为用于启动装置的处理的一部分或者在安装应用的情况下,确定在类路径的设置中是否存在多个库,并且如果确定设置了多个库,则将设置的库扩展并且将扩展的库整合为新库,之后将新创建的库设置为类路径。
Description
技术领域
本发明涉及一种对在类路径中设置的库进行管理的信息处理装置以及资源管理方法。
背景技术
在Java(注册商标)执行环境中,通过类加载器对类(执行中需要的代码)进行加载。通过库中的JAR(Java归档)格式的类文件来定义类。通过多个类的类文件来构成库,并且通常按特定功能来划分库。注意,需要预先在Java(注册商标)执行环境中设置指示库的位置的路径作为类路径。这是供类加载器在加载类时,在设置在类路径中的库中搜索要被加载的类。在此,为了参照库并且搜索类,类加载器使用文件描述符,因此,所使用的文件描述符作为资源被消耗。在Java(注册商标)执行环境中,为了提高性能或者为了防止由于参照被丢弃的库而导致的运行不稳定,参照曾经被参照过的库直到在执行环境中运行的程序结束。因此,为了使类加载器参照库而消耗的文件描述符将会被持续消耗直到程序结束。
利用嵌入式设备,用作应用执行环境的信息处理装置可用的资源是有限的。文件描述符也是一种类型的资源,并且可用的文件描述符的数量是有限的。因此,执行以下操作。首先,开发者定义关于应用使用的资源量的上限。然后,当用户管理员启动应用时,应用管理框架基于上限来检查未超出信息处理装置可用的资源量。
就传统技术而言,存在如下技术:检测根本未被使用的类,并删除具有在类路径中未被使用的类的库(例如,日本特开2005-293084号公报(专利文件1))。
日本特开2005-293084号公报留下具有在类路径中被使用的类的库。换言之,当存在大量的具有在类路径中被使用的类的库时,将会消耗大量的文件描述符。因此,当超出可用的文件描述符的数量时,结果使启动处理受影响。尤其是,当库的数量由于软件更新或功能扩展而持续增加时,被消耗的文件描述符的数量将会增加。
发明内容
鉴于以上内容,即使当使用的库的数量增加时,本发明也能够抑制文件描述符的消耗。
本发明的第一方面提供了一种信息处理装置,其消耗的资源量取决于打开的库的数量,该信息处理装置包括:确定单元,用于确定包括针对安装程序而设置的类的库的数量是否是两个或更多个;整合单元,用于在确定库的数量为两个或更多个的情况下,将库中包括的类整合为数量比所述库的数量小的库。
本发明的第二方面提供了一种信息处理装置的资源管理方法,所述信息处理装置消耗的资源量取决于打开的库的数量,所述资源管理方法包括:确定包括针对安装程序而设置的类的库的数量是否是两个或更多个;在确定库的数量为两个或更多个的情况下,将库中包括的类整合为数量比所述库的数量小的库。
根据本发明,能够抑制伴随库的增加而导致的文件描述符的增加。
通过下面参照附图对示例性实施例的描述,本发明的其他特征将变得清楚。
附图说明
图1是图像形成装置的构造图。
图2是图像形成装置的硬件构造图。
图3是在第一实施例的图像形成装置中的应用执行环境的构造图。
图4A和图4B是第一实施例中的启动选项配置文件的构造图。
图5A、图5B和图5C是第一实施例中的应用配置文件的构造图。
图6是示出在图像形成装置100内的库布置的图。
图7A和图7B是示出第一实施例中的库内的类文件的布置的图。
图8A、图8B和8C是示出由第一实施例中的图像形成装置进行的处理的流程的流程图。
图9是在第二实施例的图像形成装置中的应用执行环境的构造图。
图10A和10B是第二实施例中的启动选项配置文件的构造图。
图11是第二实施例中的应用配置文件的构造图。
图12是示出在第二实施例中的整合库内的类文件的布置的图。
图13A-1、图13A-2和图13B是示出由第二实施例中的图像形成装置进行的处理的流程的流程图。
图14A和图14B是示出由第三实施例中的图像形成装置进行的处理的流程的流程图。
具体实施方式
下面,将使用附图描述用于执行本发明的实施例。
第一实施例
图1中给出的是示出本发明的第一实施例的整体系统的构造的图。图像形成装置100是在其中实施本实施例的信息处理装置的示例,并且,例如是多功能外围设备(MFP)。信息处理装置101管理图像形成装置100。网络120将图像形成装置100和信息处理装置101相连。为了经由网络120使用图像形成装置100而使用信息处理装置101。应用A 110是在图像形成装置100上运行的应用的一个示例。应用B 111是类似地在图像形成装置100上运行的应用的另一个示例。此外,应用C 112是类似地在图像形成装置100上运行的应用的其他示例。可以在图像形成装置100上运行一个或更多个应用。在此,示出三个应用。此后,表达方式“应用11n”表示由应用A 110、应用B 111和应用C 112代表的一个或更多个应用。一般用户或管理员可以使用图像形成装置100、应用11n和用于管理图像形成装置100和应用11n的资源管理装置的基本功能。在这种使用中,可以直接地操作图像形成装置100或经由网络120通过信息处理装置101 来操作图像形成装置100。
图像形成装置的硬件构造
图2是图像形成装置100的硬件构造的模块化图。核单元200是包括处理器、存储器等的控制单元,并且作为处理器和存储器共同工作以执行程序的结果,核单元200控制连接到核单元200的各种设备。并且,实现应用执行环境并执行已安装的应用。用户接口单元201、存储设备202、用于连接到网络120的网络接口单元203、扫描器单元204、打印机单元205、整理器单元206等连接到核单元200作为外围设备。核单元200控制这些设备并且经由用户接口单元201或者网络120向用户以及应用提供其功能。
应用执行环境
图3是用于在本实施例的图像形成装置100上执行应用11n的应用执行环境。
启动模块300是用于启动应用执行环境的模块。当用户开启图像形成装置100时,系统开始运行并且启动模块300命令Lib管理模块304进行用于创建整合库的作为用于本实施例的处理。Lib管理模块304是用于实施本实施例的模块,并且重新创建在类路径中设置为一个整合库的库。在用于创建整合库的处理结束之后,启动模块300启动应用执行平台301。应用执行平台301是Java(注册商标)执行环境,并且例如是Java(注册商标)VM(虚拟机)。类加载器302是用于加载类的模块。当执行应用或系统程序并在其中使用类时,由类加载器302从包含由类路径指定的类的库中将类动态地加载。
在加载类之前命令执行类的处理的情况下,类加载器302在设置在类路径中的库中搜索被命令执行的类。类是用于应用执行平台301执行命令的可执行代码,并且类路径是指示包含类的库的位置的路径信息。类路径包括第一类路径和第二类路径,第一类路径中包括系统所需的类,第二类路径中包括用于各个应用11n的类。系统被狭义地定义为操作系统,但是在该示例中还可以表示除应用之外的、包括操作系统的软件模块。第一类路径是为了加载系统的类所需的路径,并且包括引导类路径和系统类路径二者或者至少其中之一。引导类路径是指示包含为了启动Java(注册商标)执行环境所需的类的库的位置的路径。系统类路径是指示包含为了启动应用执行平台301和app管理框架303所需的类的库的位置的路径。此处,“app”是应用的缩写。第二类路径是指示包含应用的类的库的位置的app类路径(或者应用类路径)。当启动模块300启动应用执行平台301时,将第一类路径传递到应用执行平台301作为启动选项。应用执行平台301注册传递给它的第一类路径。第二类路径是app管理框架303从应用中包括的app配置文件(例如图5A中所示的app配置文件502)读取的类路径(图5B中所示的应用类路径514),并且,app管理框架303仅针对正在启动的应用在第二类路径中设置读取类路径。因此,即使将其称为第二类路径,用于各个不同的应用11n的第二类路径全部是完全不同的类路径。在本实施例中,app配置文件是Java(注册商标)的清单文件。
在类加载器302在类路径中设置库中的搜索类并且在库中找到搜索的目标类的情况下,类加载器302从库加载类。然后,应用执行平台301执行已加载的类。在没有找到目标类的情况下,通过诸如控制台画面或浏览器画面等的用户接口单元201提醒用户没有找到目标类。当从图像形成装置100的系统开始运行直到图像形成装置100被用户关闭,执行未被加载的类时,由类加载器302进行这种类加载处理。此外,开发者预先给类命名空间,使具有相同名称的类不会冲突。库是通过将一个或更多个类压缩为JAR(Java存档)文件而获得的文件。为了防止库中的类冲突,通常在JAR文件中配置与命名空间对应的目录层次,并在其中布置类的文件。还将利用具有在内配置命名空间的目录层次的库的示例描述本实施例。
app管理框架303是管理应用11n的安装、卸载、执行和终止的框架,并且例如是OSGi。使用app管理框架303以在应用执行环境内对应用11n进行安装和执行。管理员向app管理框架303请求安装和启动应用11n 的结果是,app管理框架303进行app安装处理和app启动处理。此时,app管理框架303参照该应用的app配置文件(例如,图5A中所示的app配置文件502),并确定其中所声明的资源上限(例如,图5B中的资源上限513)是否适合当前应用执行环境内的用于资源的自由空间。如果自由空间不足,然后app管理框架303中断应用的启动。
下面是对用于执行本实施例的特殊构成元件的描述。
Lib管理模块304是用于创建整合库305的模块。启动模块300命令Lib管理模块304进行整合库的创建处理。Lib管理模块304提取启动选项配置文件(例如,图4A中的启动选项配置文件400)的在第一类路径(例如,图4A中的类路径402)中设置的所有库,和app配置文件(例如,图5A中的app配置文件502)的在第二类路径(例如,图5B中的类路径514)中设置的所有库。然后,Lib管理模块304将提取的和扩展的类再次压缩为JAR文件格式作为新的整合库305。在创建整合库之后,Lib管理模块304改变启动选项配置文件(例如,图4A中的启动选项配置文件400)中的第一类路径(例如,图4A中的类路径402)的设置,使其仅留下新创建的整合库305。此外,Lib管理模块304删除app配置文件(例如,图5A中的app配置文件502)的在第二类路径(例如,图5B中的类路径514)中设置的库的描述。收集了设置为第一类路径或第二类路径的多个库中的类组的整合库305是在第一类路径中设置的唯一的库,并且类加载器能够简单地通过查找整合库而搜索需要的类。整合库305是由Lib管理模块304创建的库。如前所述,整合库305是通过将在第一类路径或第二类路径中设置的多个库的类组压缩成JAR文件格式而获得的。一旦类加载器加载了类,则可以通过应用执行平台301、app管理框架303和应用11n来执行整合库305中包括的类。
启动选项配置文件的示例
图4A和图4B是说明描述本实施例的启动选项设置的典型文件内容的图。
图4A是示出未被本实施例中的Lib管理模块304改变的启动选项配置文件400的图。启动选项配置文件400是Lib管理模块304创建整合库并改变文件内容之前的启动选项配置文件。路径401是指示用于启动应用执行平台301的执行文件位置的位置信息。路径402是指示库的位置的位置信息并且对应于第一类路径。库403是关于设置为第一类路径的库的位置信息。在第一类路径402中设置的库403包括应用执行平台301、app管理框架303等执行处理所需的类组。主程序404是应用执行平台301为了启动app管理框架303所需的主程序的位置信息。
图4B是示出被本实施例中的Lib管理模块改变后的启动选项配置文件410的图。启动选项配置文件410是Lib管理模块创建了整合库并改变了文件内容之后的启动选项配置文件。例如,启动选项配置文件410是通过改变启动选项配置文件400获得的。启动模块300读取启动选项配置文件410的内容,并将读取的内容用作应用执行平台301的启动选项。整合库411是设置为第一类路径的整合库305的位置信息。创建整合库之后,Lib管理模块304将整合库的路径添加到启动选项配置文件400的类路径设置中,并且将除整合库之外的库的路径从第一类路径402中删除。
应用文件示例
图5A是说明构成本实施例中的应用11n的典型文件内容的图。应用11n保存多种类型的文件。app可执行代码文件500是包括诸如应用的可执行代码的信息的文件。app嵌入库501是执行应用的处理所需的库。在执行应用11n的处理中,由于在第一类路径402中设置的库403中的特定类不足而无法实现功能的情况下,开发者为应用准备了库作为app嵌入库501。app配置文件502是在其中描述应用ID和其他基本信息、应用将使用的资源上限以及第二类路径的文件。app配置文件502是由开发者预先描述的,并且与app可执行代码文件500和app嵌入库501一起包括在应用11n中。
图5B是示出在设置在第二类路径514中的库的描述被Lib管理模块304删除之前,app配置文件502中描述的项目示例的图。应用名称511 是应用11n的名称。在图像形成装置100等的用户接口单元201上显示应用名称511。应用ID 512是为使app管理框架303唯一地识别各个应用11n而配设的识别信息。资源上限513是应用11n利用的资源的上限。为每个资源定义资源上限513。开发者预先测量应用11n可能利用的资源的上限,并且在app配置文件502中将测量的上限声明为资源上限513。当安装和启动应用11n时,app管理框架303参照该资源上限513。然后,app管理框架303确定资源上限513是否适合当前应用执行环境内的资源的自由空间。如果自由空间充足,则app管理框架303启动app,并且如果自由空间不足,则app管理框架303中断app的启动。第二类路径514是指示当执行应用11n的处理时所需的app可执行代码文件500或app嵌入库501的位置的信息。路径515是关于在第二类路径中设置的app可执行代码文件500或app嵌入库501的位置的信息。在图5B中,为了简化,用相对路径设置app可执行代码文件500的路径但是用绝对路径对其进行描述。此外,通常app嵌入库501不是设置在第一类路径402中的库,因此需要在第二类路径514中示出位置。
图5C是示出Lib管理模块304将在第二类路径514中设置的库的描述删除之后,app配置文件502中描述的项目示例的图。当启动模块300命令Lib管理模块304执行用于创建整合库305的处理时,Lib管理模块304参照app配置文件502中的第二类路径514。然后,Lib管理模块304提取其内设置的app嵌入库501并将在第一类路径402中设置的库内的类和app嵌入库501内的类压缩成JAR文件格式作为整合库305。之后,Lib管理模块304仅将第一类路径402改变为整合库305。由于该改变,获得第一类路径411。然后,Lib管理模块304将在app配置文件502的第二类路径514中设置的库的描述删除。app配置文件520是将第二类路径514中设置的库的描述删除之后的app配置文件。app可执行代码文件500的路径是在从中删除了库的描述的第二类路径521中设置的唯一路径。路径522是关于在第二类路径中设置的app可执行代码文件500的位置信息。由于用路径515设置的库被Lib管理模块304在启动选项配置文件的第一类路径411中设置为整合库305,Lib管理模块304将库的设置从app配置文件中删除。注意,在本实施例中,启动选项配置文件和app配置文件可以被统称为配置文件。
库的布置的示例
图6是树形显示的图像形成装置100内的库布置的示例的结构图。文件夹601是用于布置在第一类路径402中设置的库的文件夹。图6中,库601保持在图像形成装置100内部,即在“设备”下的“系统”文件夹内,并且以与启动选项配置文件400内描述的第一类路径所示出的文件夹结构相同的文件夹结构被保存和维持。但是,为了减少用于存储的资源,Lib管理模块304在将库403从第一类路径402的设置中删除之后,删除库601。整合库602是由Lib管理模块304创建的库。Lib管理模块304在创建整合库602之后,在第一类路径411中设置该库602的路径。文件夹603是用于布置图像形成装置100内已安装的应用11n的文件夹。当安装应用11n时,app管理框架303将app嵌入库501从应用11n移出并将app嵌入库501布置在应用存储文件夹603中。为了简化,在本实施例中,图6给出了库被应用收集和布置的示例,但是只要作为启动选项的第一类路径402和411与第二类路径514一致,可以将库布置在任意位置。在图6中,例如,libpa1.jar等作为名为PreviewApp的应用的app嵌入库501被布置在名为PreviewApp的文件夹下。
类文件的布置的示例
图7A和图7B是示出树形的本实施例的库内的类文件的布置示例的结构图。图7A是示出Lib管理模块304为了收集和压缩类文件而提取的库的内部的图。库701至704是在第一类路径402中设置的库,并且示出了所述库中包括的类文件及其布置。库705和706是在第二类路径514中设置的库,并且示出所述库中包括的类文件及其布置。
图7B是示出Lib管理模块304提取库之后,通过压缩所有类文件而创建的整合库305的内部结构的图。库710是在第一类路径411中设置的整合库,并且示出该库中包括的类文件及其布置。由于图7A中表示的类文件全部布置在整合库内部,类加载器302能够简单地通过在该整合库中搜索所需的类找到执行处理所需的类。此外,在图7A和图7B的示例中,整合前后,库内部的相对路径没有改变。
图像形成装置的应用相关处理
图8A是示意性的表示本实施例的从用户开启图像形成装置100到关断电源的处理流程的流程图。通过核单元200以及特别是核单元200中包括的处理器执行图8A中的流程。该流程由操作系统启动,并且各个软件模块在各阶段运行。在下面的描述中,假设软件是其代理,但是软件是处理的虚拟代理,实际代理是执行软件的处理器或处理器核。
当用户开启图像形成装置100时,操作系统开始运行以及启动第一启动模块300,并且,在步骤S8101,启动模块300命令Lib管理模块304进行用于创建整合库的处理。将参照图8B描述由Lib管理模块304进行的用于创建整合库的处理。当Lib管理模块304完成整合库创建处理时,在步骤S8102,启动模块300利用启动选项配置文件400的内容作为启动选项来启动应用执行平台301。当应用执行平台301启动时,主程序404的处理被执行并进行处理。类加载器302作为应用执行平台301的一部分监督类的加载。在步骤S8105,类加载器302确定类是否已被加载。在步骤S8105,当类加载器302确定应用执行平台301、app管理框架303或应用11n在主程序执行期间已经执行类生成处理,则处理进行到步骤S8103,并且在未执行类生成处理的情况下,处理进行到步骤S8104。在步骤S8103,类加载器302进行类加载处理。类加载处理结束后,应用执行平台301、app管理框架303或应用11n在步骤S8106生成类,并且处理进行到步骤S8104。在步骤S8104中,应用执行平台301确定,在基于例如来自操作系统等的通知而启动主程序之后,用户是否已经关闭图像形成装置。如果应用执行平台301确定电源已被关断,则应用执行平台301进行用于关闭图像形成装置100的处理并且图像形成装置100的系统结束。如果电源未被关断,应用执行平台301继续执行主程序。
以这种方式,应用执行平台301在被启动之后在步骤S8105至S8104 的环中监督类的生成和断电。当类被生成时,应用执行平台301加载类并在电源被关断时进行断电处理。
用于创建整合库的处理
图8B是步骤S8101的详细流程图并示意性的表示在由启动模块300命令而进行创建整合库的处理时,Lib管理模块304进行的本实施例的处理流程。在步骤S8201,Lib管理模块304确定在第一类路径402和第二类路径514中设置的库的总数是两个还是更多个。Lib管理模块304通过参照关于第一类路径的启动选项配置文件400和关于第二类路径的app配置文件502,能够获得那些关于这些类路径的内容。在被设置的库的数量是一个的情况下,Lib管理模块304不进行用于创建整合库的处理而结束该处理。在多个库被设置的情况下,处理进行到步骤S8202。在步骤S8202,Lib管理模块304读取启动选项配置文件400并确定在第一类路径402中是否设置有多个库。如果在第一类路径402中设置有多个库,则处理进行到步骤S8203,并且如果没有设置多个库,则处理进行到步骤S8204。在步骤S8203中,Lib管理模块304提取在第一类路径402中设置的所有库403。此时,Lib管理模块304以与描述库的顺序相反的顺序进行库的提取。例如,在图4A的描述性内容的情况下,Lib管理模块304以Libsystem003.jar、Libsystem002.jar和Libsystem001.jar的顺序提取库。以这种方式,在由于偶然出现的在相同的命名空间内存在具有相同名称的类而发生冲突的情况下,可以通过以与描述相反的顺序提取库来利用较晚提取的类文件覆盖较早提取的类文件。通常,在相同的命名空间内具有相同名称的类相冲突的情况下,加载其类路径设置较早的类文件。因此,在发生类冲突的情况下,可以通过利用其描述出现较早的类文件即较晚提取的类文件覆盖来保留在典型环境中最初期望被加载的类。在步骤S8204,Lib管理模块304确定是否存在已在图像形成装置100中安装的应用11n。如果不存在已安装的应用,则处理进行到步骤S8206,并且如果存在已安装的应用,则处理进行到步骤S8205。在步骤S8205,Lib管理模块304提取在第二类路径514中设置的所有app嵌入库501。此时,Lib管理模块304以与库被描述的顺序相反的顺序进行库的提取。该操作的原因如上所述。当提取app嵌入库501的处理结束时,处理进行到步骤S8206。在步骤S8206,Lib管理模块304将在步骤S8203和步骤S8205中提取的所有类文件压缩为一个JAR文件作为整合库305。整合库305的示例性结构如图7B所示,并且在图7A所示的整合之前的所有类文件被整合。在步骤S8207,然后Lib管理模块304将在步骤S8206中压缩和创建的整合库305添加到第一类路径402的设置中。在添加整合库之后,在步骤S8208,Lib管理模块304将除在第一类路径402中设置的整合库之外的库的描述删除。该示例在图4B中示出并且具有与启动选项配置文件400类似的描述性内容。这里,为了用于存储的资源,在从第一类路径402的设置中删除除整合库之外的描述之后,Lib管理模块304可以删除保留在图像形成装置100内部的库601。在改变启动选项配置文件的描述性内容之后,Lib管理模块304结束用于创建整合库305的处理。
库加载处理
图8C是步骤S8103的详细流程图,并示意性的表示在主程序执行期间生成类时,由类加载器302进行的本实施例的处理的流程。
在步骤S8301,类加载器302确定未被加载的类是否被正在运行的主程序执行。如果类已被加载,则类加载处理结束,并进行主程序的处理。如果存在未被加载的类,则处理进行到步骤S8302。在步骤S8302,类加载器302确定整合库305是否已经打开。如果确定整合库305是打开的,则处理进行到步骤S8304,并且如果确定整合库305没有打开,则处理进行到步骤S8303。在步骤S8303,类加载器302贷款在第一类路径411中设置的整合库305。此时,消耗了取决于打开的库的数量的资源量。具体而言,由于打开一个文件,类加载器302消耗仅一个文件描述符。然后处理进行到步骤S8304。在步骤S8304,类加载器302确定整合库305中是否存在期望加载的类。如果找到了期望加载的类,则在步骤S8305,类加载器302从整合库305加载该类,并且类加载处理结束。如果没有找到期望加载的类,则在步骤S8306,通过诸如控制台画面或浏览器画面的用户接口单元201提示用户没有找到类。然后类加载处理结束。
如上所述,在本发明的第一实施例中,在启动应用执行平台301之前,Lib管理模块304创建整合库305并且在第一类路径411中仅设置该整合库305。结果,整合库305中包括了所有类文件,并因此在启动应用执行平台301之后类加载器302查找类的情况下,类加载器302能够通过仅在整合库305内搜索找到类。即,由于类加载器302仅打开一个库,可以将使用的文件描述符的数量保持为1。因此,类加载器302为了打开库而使用的文件描述符的数量保持为1,与在第一类路径402中设置的库的数量和在第二类路径514中设置的库的数量无关。
此外,一旦创建整合库305,当接下来启动图像形成装置100时,在步骤S8201,Lib管理模块304确定在第一类路径中设置的库的数量为1(仅一个整合库)。因此,仅当第一次启动图像形成装置100时需要进行创建整合库305的处理。此外,甚至在系统更新或应用程序安装、并且启动选项配置文件410或app配置文件502更新的情况下,在接下来启动图像形成装置100时,Lib管理模块304进行整合库的创建处理。由于更新和安装应用和系统程序而更新配置文件的结果是,可能在第一类路径或第二类路径中设置多个库。当存在多个库时,当接下来启动图像形成装置100时,在步骤S8201,Lib管理模块304能够检测到这些库并且重建整合库。此外,例如当应用执行平台301监测到新应用的安装和配置文件的更新并确定存在更新时,Lib管理模块304可以执行图8B中的处理。
注意,本实施例中仅有整合库被设置在第一类路径中,但是只要图像形成装置100中可用的文件描述符的上限未被超出,可以仅将一些库创建为整合库。例如,Lib管理模块304仅提取在第一类路径402中设置的库并且将提取的类文件压缩为整合库。然后,Lib管理模块304将整合库添加到第一类路径并仅删除对第一类路径中设置的被提取的库的描述。由于Lib管理模块304的整合库创建处理减少,这能够提高性能。因此,在存在多个库的情况下,包括在那些库中的类被整合到比那些库的数量更少(本实施例中为1)的库内。只要整合后库的数量少于整合前库的数量,就解决了减少消耗的资源量的任务。
第二实施例
接下来,将利用图描述本发明的第二实施例。
在第一实施例中,将在第一类路径402和第二类路径514中设置的库内的所有类压缩为一个整合库305。这里,当将给定应用110的第二类路径中设置的库的类压缩为一个整合库时,可以从其他应用(例如111)执行所述类。然而,当进行未授权的操作的应用或恶意应用执行其他应用的类时,图像形成装置100的操作可能变得不稳定。注意,通常将类路径分为引导类路径、系统类路径、应用类路径等,并且设置可利用各个类路径执行的类的范围。从而可以防止进行未授权的操作的应用和恶意应用执行其他应用的类,但是不能防止由于库的数量增加而使被消耗的文件描述符数量的增加。在第二实施例中,通过针对各个范围的类整合类,使可访问的类的限制与消耗的文件描述符数量的抑制相平衡。
示出本发明的第二实施例的装置的构造的图与图1中给出的类似。并且,本实施例的图像形成装置的硬件构造与图2中所示的类似。
图9示出了用于在本实施例的图像形成装置100上执行应用11n的应用执行环境。app类加载器组900是收集app管理框架303针对各个应用生成的app类加载器901的app类加载器组。app类加载器901是用于对app嵌入库501的类进行加载的类加载器。当启动应用11n时,app管理框架303针对要被启动的应用11n生成app类加载器901。因此,生成与各个应用11n对应的app类加载器901。就各种类型的类加载器的操作而言,在执行未被加载的类时,首先类加载器302在设置在引导类路径1011和系统类路径1012(二者均在图10B中示出)上设置的库中搜索要被加载的类。在第一实施例中,将引导类路径和系统类路径统称为第一类路径,但是在后面的实施例中,在实施例的描述中分别地称为引导类路径和系统类路径。并且,在第一实施例中将app类路径称为第二类路径,但是在后面的实施例中,在实施例的描述中称为app类路径。在从引导类路径1011和系统类路径1012中设置的库中能够找到类的情况下,类加载器302从库对类进行加载。如果不能找到类,则启动app类加载器组900。然后,与正在执行处理的应用11n对应的app类加载器901从在app类路径1101中设置的库搜索要被加载的类。如果因此可以找到类,app类加载器901对类进行加载。如果app类加载器901也不能找到类,则通过诸如控制台画面或浏览器画面等的用户接口单元提醒用户没有找到类。
此外,可以利用引导类路径1011、系统类路径1012和针对各个应用11n的app类路径1101的设置而执行的类的范围各自不同。
整合库组902是收集由Lib管理模块304创建的整合库的库组。本实施例的整合库组902包括引导类路径整合库组903、系统类路径整合库组904和app类路径整合库组906。与app类加载器901类似,整合与各个应用11n对应的类的app类路径整合库905作为app类路径整合库组906的整合库存在。
由Lib管理模块304创建该整合库组902。在被启动模块300命令进行整合库创建处理之后,Lib管理模块304首先提取在引导类路径1001中设置的所有库。然后Lib管理模块304将提取的和扩展的类压缩成JAR文件格式作为新的引导类路径整合库903。
在创建引导类路径整合库903之后,Lib管理模块304改变启动选项配置文件1000中的引导类路径1001的设置,使得仅留下新创建的引导类路径整合库903。
接下来,Lib管理模块304提取在系统类路径1002中设置的所有库(稍后参照图10A讨论)。
然后,Lib管理模块304将提取的和扩展的类压缩成JAR文件格式作为新的系统类路径整合库904。之后Lib管理模块304改变启动选项配置文件1000中的系统类路径1002的设置,使得仅留下新创建的系统类路径整合库904。
最后,Lib管理模块304进行针对已安装的每个应用11n进行app类路径整合库创建处理。作为app类路径整合库创建处理,首先Lib管理模块304提取在app类路径1101中设置的所有库(稍后参照图11讨论)。然后Lib管理模块304将提取的和扩展的类压缩成JAR文件格式作为新的app类路径整合库905。在创建新的app类路径整合库905之后,Lib管理模块304改变app配置文件502中的app类路径514中的库的设置,使得仅留下新创建的app类路径整合库905。当在所有已安装的应用11n上进行了到现在为止描述的处理时,则完成了由Lib管理模块304进行的用于创建app类路径整合库的处理。
通过这种方式,Lib管理模块304利用设置为引导类路径、系统类路径和app类路径的多个库内的类组创建整合库作为各自的整合库,并且为创建的整合库设置各自的类路径。通过针对各种类型的类路径设置整合库,可以根据各自类路径的范围设置可被执行的类的范围。
示例性启动选项配置文件
图10A和10B是说明本实施例中的描述启动选项设置的典型文件的内容的图。
图10A是示出本实施例中的被Lib管理模块304改变之前的启动选项配置文件1000的图。启动选项配置文件1000是Lib管理模块304改变启动选项配置文件的内容之前的描述性内容。引导类路径1001是用于指示为了启动Java(注册商标)执行环境所需的库的位置的引导类路径。系统类路径1002是用于指示为了启动应用执行平台301和app管理框架303所需的库的位置的系统类路径。
图10B是示出本实施例中的被Lib管理模块304改变之后的启动选项配置文件1010的图。启动选项配置文件1010示出Lib管理模块304改变了该文件之后的描述性内容。在本实施例中,启动模块300读取启动选项配置文件1010的内容并将读取的内容用作应用执行平台301的启动选项。引导类路径1011是指示引导类路径整合库903的位置的类路径。在创建引导类路径整合库903之后,Lib管理模块304将引导类路径整合库添加到启动选项配置文件1000的类路径设置中,将其设置为新的引导类路径并将除整合库之外的库从引导类路径1001中删除。系统类路径1012是指示系统类路径整合库904的位置的类路径。在创建系统类路径整合库904之后,Lib管理模块304将系统类路径整合库添加到启动选项配置文件1000的类路径设置,将其设置为新的系统类路径1012并将除整合库之外的库从系统类路径1002中删除。
示例性app配置文件
图11是示出Lib管理模块304将设置在app类路径514中的库的描述删除之后,在app配置文件502中描述的项目的示例的图。当启动模块300命令Lib管理模块304执行用于创建整合库的处理时,Lib管理模块304参照app配置文件502的app类路径514。Lib管理模块304提取其内设置的app嵌入库501并将提前的类重新压缩为JAR文件格式作为app类路径整合库905。之后,Lib管理模块304改变app类路径514使得仅留下新创建的app类路径整合库905,并将除设置在app类路径514中的整合库之外的库的描述删除。app配置文件1100代表Lib管理模块304删除了库的描述之后的app配置文件。app类路径1101是在其中设置了app整合库905的app类路径。位置信息1102是关于app可执行代码文件500或在app类路径中设置的app类路径整合库的位置的信息。
整合库组的示例性配置
图12是示出Lib管理模块304已经提取各个类路径的库之后,通过将每个类路径的类文件压缩而创建的各个整合库的内部的图。即,图12示出了整合库组902的内容。引导类路径整合库1201是在引导类路径1011中设置的引导类路径整合库903内的类文件的布置。系统类路径整合库1202是在系统类路径1012中设置的系统类路径整合库904内的类文件的布置。类路径整合库1203至1205是在各个已安装的应用11n的app类路径1101中设置的app类路径整合库905内的类文件的布置。
在每个类路径中设置的库的类文件全部布置在整合库内。因此类加载器302和app类加载器901能够在执行处理时简单地通过在这些整合库中搜索类而找到所需的类。
整合库生成处理
图13A-1至13A-2示出步骤S8101的详细流程图,并示意性地表示在本实施例中,当启动模块300命令进行用于创建整合库的处理时Lib管理模块304的处理流程。注意,图8A中的过程对于本实施例和第一实施例是共用的。从图像形成装置100被开启直到电源被关断的处理流程与第一实施例类似。
在步骤S13101,Lib管理模块304读取启动选项配置文件1000并确定在引导类路径1001中是否设置有多个库。如果在引导类路径1001中设置有多个库,则处理进行到步骤S13102,如果没有设置有多个库,则处理进行到步骤S13110。在步骤S13102,Lib管理模块304提取在引导类路径1001中设置的所有库。此时,Lib管理模块304以与描述库的顺序相反的顺序进行库的提取。例如,在图10A的描述性内容的情况下,Lib管理模块304以Libsystem002.jar和Libsystem001.jar的顺序提取库。以这种方式,在由于偶然出现的在相同的命名空间内存在具有相同名称的类而发生冲突的情况下,可以通过以与描述相反的顺序提取库来利用较晚提取的类文件覆盖较早提取的类文件。通常,在相同的命名空间内具有相同名称的类相冲突的情况下,加载其类路径设置较早的类文件。因此,在发生类冲突的情况下,可以通过利用其描述出现较早的类文件即较晚提取的类文件覆盖来保留在典型环境中最初期望被加载的类。在步骤S13103中,Lib管理模块304将在步骤S13102提取的所有类文件压缩为一个JAR文件作为引导类路径整合库903。在步骤S13104,Lib管理模块304将在步骤S13103中压缩和创建的引导类路径整合库添加到引导类路径1001设置中。之后,在步骤S13105,Lib管理模块304将除在引导类路径1001中设置的引导类路径整合库之外的库的描述删除(描述性内容变得与启动选项配置文件1011相似)。这里,为了减少用于存储的资源,在步骤S13105之后,Lib管理模块304可以删除保留在图像形成装置100内部的设置为引导类路径1001的库。当Lib管理模块304改变启动选项配置文件的描述性内容时,处理进行到步骤S13110。
在步骤S13110,Lib管理模块304读取启动选项配置文件1000并确定在系统类路径1002中是否设置有多个库。如果在系统类路径1002中设置有多个库,则处理进行到步骤S13111,如果没有设置多个库,则处理进行到步骤S13120。在步骤S13111,Lib管理模块304提取在系统类路径1002中设置的所有库。此时,Lib管理模块304以与描述库的顺序相反的顺序进行库的提取。例如,在图10A的描述性内容的情况下,Lib管理模块304以Libsystem004.jar和Libsystem003.jar的顺序提取库。以这种方式,在由于偶然出现的在相同的命名空间内存在具有相同名称的类而发生冲突的情况下,可以通过以与描述相反的顺序提取库来利用较晚提取的类文件覆盖较早提取的类文件。通常,在相同的命名空间内具有相同名称的类相冲突的情况下,加载其类路径设置较早的类文件。因此,在发生类冲突的情况下,可以通过利用其描述出现较早的类文件即较晚提取的类文件覆盖来保留在典型环境中最初期望被加载的类。在步骤S13112,Lib管理模块304将在步骤S13111提取的所有类文件压缩为一个JAR文件作为系统类路径整合库904。在步骤S13113,然后Lib管理模块304将压缩和创建的系统类路径整合库添加到系统类路径1002的设置中。之后,在步骤S13114,Lib管理模块304将除在系统类路径1002中设置的系统类路径整合库之外的库的描述删除(描述性内容变得与启动选项配置文件1011相似)。这里,为了减少用于存储的资源,在步骤S13114之后,Lib管理模块304可以删除保留在图像形成装置100内部的设置为系统类路径1002的库。当Lib管理模块304改变启动选项配置文件的描述性内容时,处理进行到步骤S13120。
在步骤S13120,Lib管理模块304重复步骤S13121至S13125的处理与图像形成装置100中已安装的应用11n的个数相同的次数。如果未安装应用11n,当被命令进行用于创建整合库的处理时,Lib管理模块304的处理结束。
在步骤S13121,Lib管理模块304读取启动选项配置文件502并确定在app类路径514中是否设置有多个库。如果在app类路径514中设置有多个库,则处理进行到步骤S13122,如果没有设置多个库,没有其他已安装的应用,则Lib管理模块304结束用于创建整合库的处理。
如果存在其他已安装的应用,则Lib管理模块对该应用进行步骤S13121至S13125的处理。在步骤S13122,Lib管理模块304提取(或扩展)在app类路径514中设置的所有库。此时,Lib管理模块304以与描述库的顺序相反的顺序进行库的提取。例如,在图5B的描述性内容的情况下,Lib管理模块304以Libpa005.jar、Libpa004.jar...和Libpa001.jar的顺序提取库。以这种方式,在由于偶然出现的在相同的命名空间内存在具有相同名称的类而发生冲突的情况下,可以通过以与描述相反的顺序提取库来利用较晚提取的类文件覆盖较早提取的类文件。通常,在相同的命名空间内具有相同名称的类相冲突的情况下,加载其类路径设置较早的类文件。因此,在发生类冲突的情况下,可以通过利用其描述出现较早的类文件即较晚提取的类文件覆盖来保留在典型环境中最初期望被加载的类。在步骤S13123,Lib管理模块304将在步骤S13122提取的所有类文件压缩为一个JAR文件作为app类路径整合库905。在步骤S13124,Lib管理模块304将在步骤S13112压缩和创建的app类路径整合库添加到app类路径514的设置中。之后,在步骤S13125,Lib管理模块304将除在app类路径514中设置的app类路径整合库之外的库的描述删除(描述性内容变得与app配置文件1100相似)。这里,为了减少用于存储的资源,在步骤S13114之后,Lib管理模块304可以删除保留在图像形成装置100内部的设置为app类路径514的库。当关于安装在图像形成装置100中的应用11n完成步骤S13121至S13125的处理时,Lib管理模块304结束用于创建整合库的处理。
类加载处理
图13B是步骤S8103的详细流程图,并示意性地表示在执行主程序期间本实施例的类加载器302和app类加载器901的处理流程。
在步骤S13200,当应用执行平台301和app管理框架303或它们中的一者执行类的生成时,应用执行平台301和app管理框架303或它们中的一者命令类加载器302进行用于加载生成的类的处理。当应用执行类生成处理时,app类加载器组900中的用于该app的、准备生成类的app类加载器,命令类加载器302进行用于加载生成的类的处理。在步骤S13200,当命令类加载器302进行类加载处理时,处理进行到步骤S8301。在步骤S8301,类加载器302确定正在运行的主程序是否执行未被加载的类。在确定存在这样的未被加载的类的情况下,处理进行到步骤S13201。在步骤S13201,类加载器302确定引导类路径整合库903是否已经打开。如果确定引导类路径整合库903是打开的,则处理进行到步骤S13203,并且如果确定引导类路径整合库903未打开,则处理进行到步骤S13202。在步骤S13202,类加载器302打开在引导类路径1011中设置的引导类路径整合库903。然后处理进行到步骤S13203。在步骤S13203,类加载器302确定在引导类路径整合库903中是否存在期望加载的类。如果找到期望加载的类,则在步骤S13204,类加载器302从引导类路径整合库903对类进行加载,并结束类加载处理。如果没有找到期望加载的类,则处理进行到步骤S13210。
在步骤S13210,类加载器302确定系统类路径整合库904是否已经打开。如果确定系统类路径整合库904是打开的,则处理进行到步骤S13212,并且如果确定系统类路径整合库904未打开,则处理进行到步骤S13211。在步骤S13211,类加载器302打开在系统类路径1012中设置的系统类路径整合库904。然后处理进行到步骤S13212。在步骤S13212,类加载器302确定在系统类路径整合库904中是否存在期望加载的类。如果找到期望加载的类,则在步骤S13213,类加载器302从系统类路径整合库904对类进行加载,并结束类加载处理。如果没有找到期望加载的类,则处理进行到步骤S13224。在步骤S13224,类加载器302确定app类加载器是否已经命令进行类加载处理。在应用执行平台301或app管理框架303执行类生成处理的情况下,应用执行平台301或app管理框架303命令类加载器302进行类加载处理。与此相反,在应用11n执行类生成处理的情况下,app类加载器901命令类加载器302进行类加载处理。步骤S13224的类加载处理的状态是类加载器302在设置在引导类路径或系统类路径中的库中不能找到要被加载的类的状态。因此,在app类加载器901命令类加载处理的情况下,类加载器302将类加载处理返回到app类加载器901,并且app类加载器901进行用于从在app类路径中设置的库进行加载类的处理。这里,类加载器302将处理返回到命令类加载处理的app类加载器901。命令加载处理的app类加载器901是用于执行类生成处理的应用的app类加载器,并因此能够在应用组当中的执行类生成处理的app上进行类加载处理。在步骤S13220进行由app类加载器901进行的类加载处理。在应用执行平台301或app管理框架303命令类加载器302进行类加载处理的情况下,处理进行到步骤S8306A。
在步骤S13220,app类加载器901确定用于正在执行处理的应用11n的app类路径整合库905是否已经打开。如果确定app类路径整合库905是打开的,则处理进行到步骤S13222,并且如果确定app类路径整合库905未打开,则处理进行到步骤S13221。在步骤S13221,app类加载器901打开在app类路径1101中设置的app类路径整合库905。然后处理进行到步骤S13222。在步骤S13222,app类加载器901确定在app类路径整合库905中是否存在期望加载的类。如果找到期望加载的类,则在步骤S13223,app类加载器302从app类路径整合库905对类进行加载,并结束类加载处理。在没有找到期望加载的类的情况下,则处理进行到步骤S8306B。当步骤S13223或步骤S8306B完成时,类加载处理结束。
上述过程可以被总结如下。当在程序执行期间执行类生成处理时,类加载器进行类加载处理。如果要被生成的类未被加载,则类加载器302在被设置为引导类路径的引导类路径整合库903中搜索要被加载的类。如果可以在引导类路径中设置的引导类路径整合库903中找到该类,则类加载器302从引导类路径整合库903加载该类。如果在引导类路径整合库903中不能找到该类,则类加载器302在系统类路径整合库904中搜索要被加载的类。如果可以在系统类路径整合库904中找到该类,则类加载器302从用系统类路径示出的系统类路径整合库904中对类进行加载。在不能在系统类路径整合库904中找到该类的情况下,则类加载器302停止类加载处理并确定正在运行的程序是系统还是应用。如果正在运行的程序是应用执行平台301或诸如app管理框架303等的系统,则类加载器302向用户给出未找到类的错误提示。如果正在运行的程序是app,则正在运行的app的app类加载器901进行类加载处理。注意,如果在执行应用之后执行应用执行平台301或app管理框架303,则假设正在运行的程序被确定为是app。在app执行类生成处理的情况下,app类加载器组900命令类加载器302执行类加载处理。作为当不能找到类时类加载器302将处理返回到命令类加载处理的app类加载器901的结果,程序执行期间用于app的app类加载器901能够开始类加载处理。例如,当给出用于应用A110的app类加载器为app类加载器A时,在正在运行的程序是应用A110的情况下,app类加载器A命令类加载器302进行类加载处理。在类加载器302在引导类路径整合库903和系统类路径整合库904中均不能找到要被加载的类的情况下,类加载器302将处理返回到app类加载器A。由于将处理返回到app类加载器A,可以从从多个应用中正在运行的应用A110的app类路径中设置的app类路径整合库执行类加载处理。当app类加载器开始加载处理是,app类加载器在app类加载器整合库905中搜索要被加载的类。在在app类路径整合库905中可以找到要被加载的类的情况下,app类加载器A加载该类。在在app类路径整合库905中不能找到要被加载的类的情况下,类加载器302向用户给出不能找到类的错误提示。在类加载器302或app类加载器A加载类的情况下,或由于未找到要被加载的类而发出提示的情况下,类加载处理结束。
如上所述,在本发明的第二实施例中,在启动应用执行平台301之前,Lib管理模块304整合用于各类路径的库以创建整合库,并仅将整合库设置在各个类路径中。结果,整合库包括在类路径中设置的库的所有类文件,并因此在类加载器302搜索库的情况下,类加载器302简单地通过在各个整合库中搜索就能够找到类。由于为每个类型的类路径设置整合库,可以被执行的类的范围可与各个类路径的范围匹配。因此,类加载器消耗的文件描述符的数量可以减少到类路径的数量,与在各个类路径中设置的库的数量无关。此外,可以防止执行未授权操作的应用和恶意应用执行其他应用的类。
注意,在本实施例中,采用了在其中创建并在类路径中设置针对引导类路径、系统类路径和app类路径的整合库的配置。然而,只要图像形成装置100中可用的文件描述符的上限未被超出,就可以仅针对某些类型的类路径创建整合库并进行设置。例如,Lib管理模块可以仅针对引导类路径和系统类路径创建整合库并将创建的整合库设置在这些类路径中。这使得能够提高性能,因为Lib管理模块304的整合库创建处理减少。
第三实施例
接下来,将使用附图描述本发明的第三实施例。
在第一实施例和第二实施例中,Lib管理模块304在启动图像形成装置100的同时创建整合库并且将整合库设置在类路径中。在启动图像形成装置100的同时,Lib管理模块304确定是否存在多个库设置在app类路径中,因此即使当应用11n是新安装的,也能够执行整合库创建处理。但是,在图像形成装置100中安装应用11n之后,用户管理员可以启动应用11n而不重启图像形成装置100。在这种情况下,类加载器为新安装的应用11n的一些库消耗文件描述符,直到图像形成装置100被重启。本实施例描述如下的系统:通过在安装应用的同时还进行用于整合库的处理,甚至不重启图像形成装置也能够整合类库。
示出本发明的第三实施例的装置构造的图与图1类似。此外,本实施例中的图像形成装置100的硬件构造与图2类似。用于执行本实施例中的图像形成装置100上的应用的应用执行环境的配置图与图9类似。启动选项配置文件和app配置文件的配置分别与图10B和图11类似。此外,从启动图像形成装置100至关断电源的处理过程如图14A所示。
由图像形成装置100进行的处理
图14A是示意性的表示从接通本实施例的图像形成装置100时直到关断电源时的处理流程的流程图。注意,尽管单个步骤与图8的不同,执行代理等与图8类似。步骤S8101和步骤S8102与图8A中所示的处理类似。步骤S8101的详情如图13A-1和13A-2的过程所示。在步骤S14101,app管理框架303确定在主程序执行期间是否接收到针对应用11n的请求。当用户管理员发出请求使得在图像形成装置100中执行应用11n的安装时,app管理框架303接收到该请求。如果接收了安装应用11n的请求,则处理进行到步骤S14102,并且如果为接收到这样的请求,则处理进行到步骤S8103。步骤S8103和步骤S8104与图8A中所示的处理类似。步骤S8103的详情如图13B的过程所示。在步骤S14102,app管理框架303在图像形成装置100中安装用户在步骤S14104指定的应用11n。当完成用于安装应用11n的处理时,应用进行到步骤S14103。在步骤S14103,app管理框架303命令Lib管理模块304进行用于创建针对已安装的应用11n的app类路径整合库905的处理。当Lib管理模块304完成用于创建app类路径整合库905的处理时,处理进行到步骤S14104。在步骤S14104,app管理框架303将已安装的应用11n设置为启动就绪(start-ready)状态。当应用11n进入启动就绪状态,用户管理员能够向图像形成装置100发送请求以启动已安装的应用11n。应用11n已进入启动准备状态之后,处理进行到步骤S8103。
整合库创建处理
图14B是步骤S14103的详细流程图,并示意性地表示当app管理框架命令进行用于创建app类路径整合库的处理时,本实施例的Lib管理模块的处理流程。
在步骤S14201,Lib管理模块304读取要被安装的应用11n的app配置文件502,并确定在app类路径514中是否设置有多个库。如果在app类路径514中设置有多个库,则处理进行到步骤S13122,并且如果未设置有多个库,则Lib管理模块304在app安装的同时结束用于创建app类路径整合库905的处理。步骤S13122至步骤S13125与图13B所示的处理类似。
在本实施例中,由类加载器302和app类加载器901加载类时的处理流程与图13A-1和图13A-2类似。
如上所述,在本发明的第三实施例中,安装应用11n之后,Lib管理模块304创建app类路径整合库905并将创建的app类路径整合库905设置在app类路径1101中。app类路径整合库创建处理之后,app管理框架303将已安装的应用11n设置为启动就绪状态。结果,即使当用户管理员安装的应用11n启动时、重启图像形成装置之前,app类加载器901能够使用app类路径整合库905。即,由app类加载器901针对已安装的应用消耗的文件描述符的数量被减少为1,与已安装的应用11n的类路径中设置的库的数量无关。
其他实施例
第三实施例基于第二实施例,但是可以基于第一实施例。在那种情况下,图14A中的步骤S8101的详情将如图8B所示,步骤S8103的详情将如图8C所示。此外,图14B中的步骤S13122至步骤S13125可以由图8B中的步骤S8205至步骤S8208替代。
还可以通过读出并执行记录在存储介质(也可更完整地称为“非暂时性计算机可读存储介质”)上的计算机可执行指令(例如,一个或更多个程序)以执行上述实施例中的一个或更多个的功能、并且/或者包括用于执行上述实施例中的一个或更多个的功能的一个或更多个电路(例如,专用整合电路(ASIC))的系统或装置的计算机,来实现本发明的实施例,并且,可以利用通过由系统或装置的计算机例如读出并执行来自存储介质的计算机可执行指令以执行上述实施例中的一个或更多个的功能、并且/或者控制一个或更多个电路以执行上述实施例中的一个或更多个的功能的方法,来实现本发明的实施例。计算机可以包括一个或更多个处理器(例如,中央处理单元(CPU)、微处理单元(MPU)),并且可以包括分开的计算机或分开的处理器的网络,以读出并执行计算机可执行指令。计算机可执行指令可以例如从网络或存储介质被提供给计算机。存储介质可以包括例如硬盘、随机存取存储器(RAM)、只读存储器(ROM)、分布式计算系统的存储器、光盘(诸如压缩光盘(CD)、数字通用光盘(DVD)或蓝光光盘(BD)TM)、闪存装置以及存储卡等中的一者或更多。
本发明的实施例还可以通过如下的方法来实现,即,通过网络或者各种存储介质将执行上述实施例的功能的软件(程序)提供给系统或装置,该系统或装置的计算机或是中央处理单元(CPU)、微处理单元(MPU)读出并执行程序的方法。
虽然参照示例性实施例对本发明进行了描述,但是应当理解,本发明不限于所公开的示例性实施例。应当对所附权利要求的范围给予最宽的解释,以便涵盖所有这些变型例以及等同的结构和功能。
Claims (14)
1.一种信息处理装置,其消耗的资源量取决于打开的库的数量,所述信息处理装置包括:
确定单元,用于确定包括针对安装程序而设置的类的库的数量是否为两个或更多个;
整合单元,用于在确定库的数量为两个或更多个的情况下,将库中包括的类整合为数量比所述库的数量小的库。
2.根据权利要求1所述的信息处理装置,其中
所述库是通过压缩一个或更多个类而获得的文件,并且
在所述确定单元确定库的数量为两个或更多个的情况下,所述整合单元提取库,并且将所提取的库压缩并整合为数量比所述库的数量小的库。
3.根据权利要求1或2所述的信息处理装置,其中
当所述信息处理装置启动时,所述整合单元对整合库进行整合。
4.根据权利要求1或2所述的信息处理装置,其中
当将应用安装为所述程序时,所述整合单元对整合库进行整合。
5.根据权利要求1或2所述的信息处理装置,所述信息处理装置还包括:
加载单元,当执行所述程序时,所述加载单元打开包括由所述程序使用的类的库并加载所述类。
6.根据权利要求1或2所述的信息处理装置,其中
所述确定单元通过参照在所述安装程序的配置文件中描述的、指示库位置的类路径,来指定包括针对所述程序设置的类的库。
7.根据权利要求1或2所述的信息处理装置,其中
所述整合单元将库中包括的类整合为一个库。
8.根据权利要求6所述的信息处理装置,其中
所述整合单元针对类路径中的各个类路径,将库中包括的类整合为一个库。
9.根据权利要求8所述的信息处理装置,其中
所述程序包括系统程序和应用,针对所述系统程序,在所述配置文件中描述有引导类路径和系统类路径,针对所述应用,在所述配置文件中描述有应用类路径,并且
所述整合单元针对类路径中的各个类路径,将库中包括的类整合为一个库。
10.根据权利要求1或2所述的信息处理装置,其中
所述整合单元通过生成包括要被整合的类的库,来对库进行整合。
11.根据权利要求1或2所述的信息处理装置,其中
所述整合单元对库进行整合,使得在库的整合之后维持,在整合之前的库中存在的类的相对配置整合。
12.根据权利要求1或2所述的信息处理装置,其中
所述资源包括文件描述符。
13.一种信息处理装置的资源管理方法,所述信息处理装置消耗的资源量取决于打开的库的数量,所述资源管理方法包括:
确定包括针对安装程序而设置的类的库的数量是否为两个或更多个;并且
在确定库的数量为两个或更多个的情况下,将库中包括的类整合为数量比所述库的数量小的库。
14.根据权利要求13所述的资源管理方法,其中
所述库是通过压缩一个或更多个类而获得的文件,并且
在确定步骤中确定库的数量为两个或更多个的情况下,在整合步骤中提取库,并且将所提取的库压缩并整合为数量比所述库的数量小的库。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016006558A JP2017126293A (ja) | 2016-01-15 | 2016-01-15 | 情報処理装置及びリソース管理方法 |
JPJP2016-006558 | 2016-01-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106980516A true CN106980516A (zh) | 2017-07-25 |
CN106980516B CN106980516B (zh) | 2020-04-10 |
Family
ID=57614262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710028352.1A Active CN106980516B (zh) | 2016-01-15 | 2017-01-13 | 信息处理装置及资源管理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10169022B2 (zh) |
EP (1) | EP3193252B1 (zh) |
JP (1) | JP2017126293A (zh) |
KR (1) | KR102090977B1 (zh) |
CN (1) | CN106980516B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198708A (zh) * | 2018-11-16 | 2020-05-26 | 北京奇虎科技有限公司 | 一种jar包冲突解决方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626040B (zh) * | 2020-05-06 | 2023-12-22 | 伊姆西Ip控股有限责任公司 | 用于安装应用的方法、电子设备和计算机程序产品 |
CN116893858B (zh) * | 2023-09-11 | 2023-12-12 | 西安智多晶微电子有限公司 | 一种FPGA快速启动PCIe的配置方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548759A (en) * | 1994-07-05 | 1996-08-20 | Microsoft Corporation | System for storing executable code within a resource data section of an executable file |
JP2000029706A (ja) * | 1997-10-31 | 2000-01-28 | Sun Microsyst Inc | クラスファイルのプリプロセシング及びパッケ―ジングのための方法及び装置 |
US20040103404A1 (en) * | 2002-11-25 | 2004-05-27 | Gleb Naumovich | Class coalescence for obfuscation of object-oriented software |
JP2007206965A (ja) * | 2006-02-01 | 2007-08-16 | Canon Inc | 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム |
US8387032B1 (en) * | 2009-03-04 | 2013-02-26 | Adobe Systems Incorporated | Captive runtime deployment |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE496330T1 (de) * | 2002-11-29 | 2011-02-15 | Research In Motion Ltd | Verfahren zur erzeugung eines interpretierbaren codes zur speicherung auf einer vorrichtung mit begrenzter speicherkapazität |
KR100518584B1 (ko) * | 2003-07-12 | 2005-10-04 | 삼성전자주식회사 | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 |
US7434215B2 (en) * | 2003-09-11 | 2008-10-07 | International Business Machines Corporation | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy |
JP4168962B2 (ja) | 2004-03-31 | 2008-10-22 | 日本電気株式会社 | Javaクラスパスの最適化方式 |
US7814484B2 (en) * | 2004-05-14 | 2010-10-12 | Bea Systems, Inc. | System and method for web application extensibility |
US20070050760A1 (en) * | 2005-08-30 | 2007-03-01 | Erxiang Liu | Generation of application specific xml parsers using jar files with package paths that match the xml xpaths |
US8458753B2 (en) * | 2006-02-27 | 2013-06-04 | Time Warner Cable Enterprises Llc | Methods and apparatus for device capabilities discovery and utilization within a content-based network |
US9477495B2 (en) * | 2006-08-17 | 2016-10-25 | International Business Machines Corporation | Conservative class preloading for real time Java execution |
US8010973B2 (en) * | 2007-05-31 | 2011-08-30 | Calix, Inc. | Class loader for managing a network |
US8875115B2 (en) * | 2008-11-29 | 2014-10-28 | International Business Machines Corporation | Type merging technique to reduce class loading during Java verification |
WO2011143181A2 (en) * | 2010-05-10 | 2011-11-17 | Tibco Software Inc. | Managing static data structures of legacy software in dynamic class loader environments |
FR2960668A1 (fr) * | 2010-05-27 | 2011-12-02 | Airbus Operations Sas | Procede et dispositif de configuration incrementale de modules de type ima |
JP5895616B2 (ja) * | 2012-03-09 | 2016-03-30 | 日本電気株式会社 | 情報処理装置およびプログラム実行方法 |
US9703551B2 (en) * | 2014-04-28 | 2017-07-11 | Ca, Inc. | Modifying mobile application binaries to call external libraries |
US20160232017A1 (en) * | 2015-02-10 | 2016-08-11 | ZeroTurnaround AS | System and Method for Reloading Constructors |
US10191753B2 (en) * | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
-
2016
- 2016-01-15 JP JP2016006558A patent/JP2017126293A/ja active Pending
- 2016-12-28 EP EP16207046.0A patent/EP3193252B1/en active Active
- 2016-12-30 US US15/395,092 patent/US10169022B2/en active Active
-
2017
- 2017-01-13 CN CN201710028352.1A patent/CN106980516B/zh active Active
- 2017-01-13 KR KR1020170005891A patent/KR102090977B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548759A (en) * | 1994-07-05 | 1996-08-20 | Microsoft Corporation | System for storing executable code within a resource data section of an executable file |
JP2000029706A (ja) * | 1997-10-31 | 2000-01-28 | Sun Microsyst Inc | クラスファイルのプリプロセシング及びパッケ―ジングのための方法及び装置 |
US20040103404A1 (en) * | 2002-11-25 | 2004-05-27 | Gleb Naumovich | Class coalescence for obfuscation of object-oriented software |
JP2007206965A (ja) * | 2006-02-01 | 2007-08-16 | Canon Inc | 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム |
US8387032B1 (en) * | 2009-03-04 | 2013-02-26 | Adobe Systems Incorporated | Captive runtime deployment |
Non-Patent Citations (1)
Title |
---|
GREY TRAVIS: "使用自动化自定义JAR文件最大限度地减少Java分发", 《HTTP://WWW.DEVX.COM/JAVA/ARTICLE/17674》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198708A (zh) * | 2018-11-16 | 2020-05-26 | 北京奇虎科技有限公司 | 一种jar包冲突解决方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2017126293A (ja) | 2017-07-20 |
US10169022B2 (en) | 2019-01-01 |
KR102090977B1 (ko) | 2020-04-23 |
US20170206072A1 (en) | 2017-07-20 |
CN106980516B (zh) | 2020-04-10 |
EP3193252B1 (en) | 2021-02-17 |
KR20170085979A (ko) | 2017-07-25 |
EP3193252A1 (en) | 2017-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101963912B1 (ko) | 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법 | |
US10055415B2 (en) | Methods and systems for deploying hardware files to a computer | |
RU2507570C2 (ru) | Пакеты компьютерных прикладных программ с индивидуальной настройкой | |
CN104932926B (zh) | 智能操作系统平台中实现设备与驱动动态匹配的系统及方法 | |
KR100871636B1 (ko) | 관리 방법 및 장치 | |
US20150067671A1 (en) | Information processing apparatus, control method, and storage medium | |
US20100293537A1 (en) | System and Method for Enabling Parallel Websphere Runtime Versions | |
CN106557384A (zh) | 基于Linux的数据处理方法、装置和系统 | |
JP2004158012A (ja) | ソフトウェアアプリケーション管理のためのシステムおよび方法 | |
CN110908671A (zh) | 构建docker镜像的方法、装置及计算机可读存储介质 | |
CN114721783B (zh) | 资源文件提取方法、装置、电子设备及存储介质 | |
CN102314364A (zh) | 一种自动适配移动终端的方法 | |
CN106980516A (zh) | 信息处理装置及资源管理方法 | |
CN103309751A (zh) | 提供文件系统功能的终端的设备和方法 | |
CN113760306A (zh) | 安装软件的方法、装置、电子设备及存储介质 | |
CN112930534A (zh) | 管理系统、取得装置和管理方法 | |
CN115237631A (zh) | 一种基于数据共享插件的易扩展式数据共享系统及方法 | |
US9910662B2 (en) | Selectively migrating applications during an operating system upgrade | |
CN117492803B (zh) | 一种智能门锁pcba软件升级方法及系统 | |
CA2322950A1 (en) | Arrangement for executing program code with reduced memory requirements | |
CN109791485A (zh) | 基于网状网络的空中调制解调器固件升级 | |
JP2002007138A (ja) | アプリケーションのインストール方法、起動方法、実行装置、媒体およびプログラム | |
US9910667B2 (en) | Segregating a monolithic computing system into multiple attachable application containers based on application boundaries | |
US8190587B1 (en) | In-place image promotion | |
JP2003316581A (ja) | ソフトウェアインストール装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |