CN1524219A - 创建和使用预内在化程序文件的方法和设备 - Google Patents
创建和使用预内在化程序文件的方法和设备 Download PDFInfo
- Publication number
- CN1524219A CN1524219A CNA018229891A CN01822989A CN1524219A CN 1524219 A CN1524219 A CN 1524219A CN A018229891 A CNA018229891 A CN A018229891A CN 01822989 A CN01822989 A CN 01822989A CN 1524219 A CN1524219 A CN 1524219A
- Authority
- CN
- China
- Prior art keywords
- internalization
- reflection
- equipment
- file
- reusable
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- 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/44557—Code layout in executable memory
-
- 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
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一个设备(45)接收新的程序文件(46),并使用预内在化的映像以避免在每次程序执行出现时必须内在化一个程序文件。在一种实施例中,该设备中的一个软件虚拟机(50)用于执行所述预内在化。一旦将所述程序文件预内在化以创建存储在该设备的永久性存储器(56)内的映像,则随后在不必执行一个预内在化操作的情况下可以执行所述映像。此外,减少了与随后程序执行有关的动态存储器(52)的使用,并减少了新程序文件的执行时间。
Description
发明领域
本发明一般涉及以高级语言编写的程序文件的处理,尤其涉及以能够动态加载的高级编程语言编写的程序文件。
背景技术
随着手持式和其它电子设备的数量和种类不断增加,在这些设备上运行和与之接口的应用程序也相应地增加,并且所期望的用户添加特定程序和功能的灵活性也增加。这些设备有时称作“内嵌式设备”,因为它们包括一个执行指令的处理器、特定的功能单元和提供所期望的功能的指令。内嵌式设备通常是独立设备,它们具有自己的电源,但是通常包括与其它系统接口的能力。例如,诸如蜂窝电话机、寻呼机和个人数字助理(PDA)的内嵌式设备通常包括一个用于执行在该设备内存储的计算机程序的中央处理单元(CPU)和一个允许移动性的电池。在一个内嵌式设备制造之后,个人用户可能希望通过添加特定的功能或应用程序来定制它们的设备。希望使用以高级编程语言编写的计算机程序或代码,所述高级编程语言例如是JavaTM,一种由Sun微系统公司开发的语言,它便于用户提供程序的随后安装。Java是很有吸引力的,因为它是独立于平台的,这意味着它并不专用于一种操作系统或者硬件结构。
为内嵌式设备开发编码的一种限制是有限的存储容量,这降低了设备能够存储的编码数量,同时也影响设备的计算能力。因此,为内嵌式设备设计编码的一个主要目的是最大化存储效率和所安装的应用程序的速度。当前,存在若干种提高内嵌式应用程序存储效率的方法,然而,这些方法通常并不涉及用户随后安装附加的应用程序。
Java具体而言是一种面向对象的编程语言,它是可移植的、易于编程和结构中性的。面向对象的设计集中于称作“对象”的数据以及与对象的接口。Java程序能够在一个包括多种处理单元和操作系统结构的网络内任何位置处执行。
Java程序是编译和解译的。编译一旦完成,将编译后的Java编程代码称作“Java字节码”(JBC)。JBC是一种结构中性或独立于平台的中间语言。Java解释器在处理器上解析和运行JBC指令。解译在每次执行程序时出现。一个称作类文件的Java二进制文件包括用于给定程序的JBC以及诸如符号数据的支持信息。一个类文件或者程序文件包括与类有关的“项目”或信息,例如字段、方法、JBC阵列和一个符号引用表格。具体地说,一个Java程序包括一个或多个Java文件,它们在编译时生成一个或一组类文件。
JBC是用于一个“Java虚拟机”(Java VM)的有效机器代码指令。每个Java解释器,例如Java开发环境或者支持Java的网页浏览器,使用一个Java VM工具。通常,这些工具将使用已经安装在一个系统上的Java VM,或者可以与一个Java VM捆绑在一齐。应当指出Java VM也可以用硬件来实现。以这种方式,可以在任意一个具有Java编译器的机器上编译程序,并可以在Java VM的任意一个工具上运行由此获得的JBC。
为了使以Java编写的应用程序可移植,保存了大量的符号信息。在JBC的普通Java VM执行过程中,由Java VM使用符号数据来执行动态捆绑,由此获得到引用结构的实际指针。例如,每个到一个函数的引用通过下述符号信息来表示,即:类名、函数名和签名。类名识别包含方法说明的类对象。这些方法识别可用于该类的各种函数,JBC阵列是实现一个方法所执行的程序。函数名和签名一齐识别其类中的给定函数。签名描述传送给一个函数和由一个函数返回的参数的组成和类型。符号信息加大了Java二进制文件,并且这种加大产生了存储器的存储问题。在执行过程中,维持两个JBC和符号信息的复本:第一个复本存储在永久性存储器内;第二个复本以易于Java VM控制的格式存储在动态存储内。对于小型内嵌式设备来说,例如寻呼机、蜂窝电话机和PDA,动态存储器是非常有限的。因此,希望减少动态存储器的使用。另一个问题是在执行过程中由于使用处理符号引用的高成本检查表所导致的延迟。
为了解决这些问题,使用允许压缩和格式化Java类文件的工具以更有效地使用存储器。“预内在化”是将Java类文件信息重新格式化成在放入存储器时表示一个类对象的格式的一个处理。内在化在类文件加载过程中出现,是从类文件中提取类信息和将这些信息存储在动态存储器内结构中的过程。预内在化处理消除了符号引用和类加载,减少了动态存储器的需要,并加速了应用程序的执行。预内在化文件的格式专用于每个Java VM工具。
预内在化出现在编译之后但是在JBC的普通加载和执行之前。预内在化的类目标被重新构造以消除将它们存储在动态存储器内的需要,并因此可以保存在永久性存储器内。这释放了更多的用于在执行过程中创建动态目标的动态存储器。将用于保存状态以及动态对象的信息和结构存储在所谓的“Java堆栈”中。预内在化产生一个问题,即因为将类信息存储在永久性存储器内,导致不能在执行过程中更新该信息。
现在的解决方案通过要求在目标设备上类安装之前解析所有的符号引用,避免了在动态存储器内存储符号信息。解析引用涉及用被引用项的位置即地址来替代该引用。在预内在化一组类文件或“类文件单元”时存在一个问题,其中引用已经安装在设备上的多个类,并且被引用项的位置是未知或者不可靠的。为了避免复制被引用的类信息,将所安装的类从设备上删除,并与该组新文件一起重新包装。
图1图示处理程序文件也称作类文件的现有技术的处理方法6。由预处理器10加载标记有“类1”、“类2”和“类3”的程序文件8。预处理器10生成格式化的类文件信息12。该格式化将每个程序文件,类1,类2和类3,转换成在执行过程中使用的类对象,其中这些类对象专用于所使用的JVM工具。预处理器10是可以用软件或硬件实现的工具。格式化后的类文件信息12被构建以存储在一个目标设备中,其中该设备同时具有动态和永久性存储器。编译器和链接器16组合格式化的类文件信息12和Java VM源代码14。Java VM源代码14专用于在目标设备中实现的Java VM。编译器和链接器16的输出是Java VM映像18,它具有两个部分:第一部分存储Java VM 19;第二部分存储预加载的类信息20。预加载的类信息20是格式化类文件信息的编译形式。
此时,Java VM映像18存储在目标设备的设备存储器22内。在这种情况下,该设备存储器22包括动态存储器26和永久性存储器24。在一种实施例中,使用RAM实现动态存储器26,使用ROM和/或闪存实现永久性存储器24。在存储中间数值和变量的执行过程中使用动态存储器26。永久性存储器24包括多个部分:第一部分28,用于存储一个类加载程序;第二部分30,用于存储一个JBC解释程序;和第三部分32,用于存储预加载的类信息20。部分28的类加载程序用于格式化Java VM使用的二进制类信息,但是预加载的类信息20并不需要它来格式化,因为它们在预处理和编译过程中格式化。在设备存储器22中存储的Java VM映像18用于运行Java程序文件,程序文件8中的类1,类2和类3。因此,在一个设备内实现设备存储器22,所述设备例如是一个手持式设备或者其它的应用设备。
在制造商已经执行处理方法6之后经常希望从永久性存储器24中删除程序文件。不幸地是,一旦将类文件8存储在永久性存储器24内,在没有设备制造商的帮助下,用户不能删除所存储的程序文件。所述帮助采用的形式是将设备返送给制造商或者从制造商接收所有与处理方法6有关的工具。制造商并不愿意向用户发布或许可这样的专有工具。
而且,经常希望向设备存储器22内的Java VM映像添加附加的程序文件。程序文件8通常描述一个应用的基本功能,但是用户自由地添加辅助功能,例如增强设备的用户专用或者应用专用的附加功能。存在多种方式来添加程序文件。在第一种已知的处理方法中,再次使用程序文件8所包括的附加程序文件来执行处理方法6。因此,所获得的Java VM映像18包括用于程序文件8和附加文件中所有程序文件的预加载类信息。因为这种方法需要用户到制造商处获得该处理方法中所包括的新程序文件,或者该方法需要制造商将程序文件8提供给用户并允许用户执行该处理方法,所以这种方法不够灵活。根据第二种现有技术的方法,如图2所示,将包括标记有“类4”、“类5”和“类6”的程序文件的附加程序文件42存储在附加永久性存储器40内,例如闪存。然后,由存储在永久性存储器24的部分28内的类加载程序在执行时将程序文件42装载到动态存储器26。在动态存储器26中存储所加载的程序文件类4、类5和类6的需要减少了Java堆栈可用的空间。动态存储器空间的损失产生这样一种情况,即使将所有的附加程序文件42存储在动态存储器26中,剩余的可用动态存储器空间也不足以存储执行过程中的变量,即程序无法执行。因为动态存储器空间一般是有限的,最大化Java堆栈可用的空间量在许多应用中都是至关重要的。
而且,类加载或者内在化附加程序文件42的需要必需在每次执行附加程序文件时执行。换句话说,程序文件不是永久性内在化的。这样的应用程序有时被称作“暂时应用程序”。重复地内在化显然降低了程序的执行速度。还应当指出这个由一个运行时间加载程序内在化的处理并不专用于Java编程环境。
附图的简要描述
通过例子,并且不限制于附图来说明本发明,在附图中相同的参考标号代表相似的元件,在附图中:
图1以方框图的形式图示处理在设备存储器内永久性存储程序文件的一种已知方法;
图2以方框图的形式图示将应用程序的专用程序文件添加给如图1所示的设备存储器的一种已知方法;
图3以方框图的形式图示根据本发明用于接收一个程序文件和创建该程序文件的可执行映像的一个便携式设备;
图4以方框图的形式图示图3的便携式设备的程序文件存储结构的细节;
图5以流程图的形式图示一个根据本发明创建和处理预内在化文件的处理方法;
图6以流程图的形式图示根据本发明的脱离客户(off-client)创建和处理预内在化文件的一个处理方法;
图7以方框图的形式图示一个用于执行图6流程图的客户/脱离客户的系统;和
图8以方框图的形式图示根据本发明的一个设备的实施例。
技术人员将理解附图中的单元是为了简单和清楚而图示的,没有必要按比例绘制。例如,附图中一些单元的大小可能相对于其它的单元被放大,以帮助理解本发明的实施例。
具体实施方式
为了便于说明,将Java编程语言用作一个示例;然而,本发明也可以应用于其它的编程语言。将在此针对一个具有内嵌Java程序的系统使用若干术语。存储器是指只读存储器(ROM)、可写入存储器和可读写存储器。可读写存储器可以是随机访问存储器(RAM)、电可擦除可编程存储器(EEPROM)、包括一次性PROM(OTPROM)和可擦除PROM(EPROM)的可编程存储器(PROM)、闪存、等等。术语“动态存储器”用于指动态地分配和在设备断电时不保持所存储的信息或数据的存储器,例如RAM。术语“永久性存储器”用于指在执行过程中视为只读的和当设备断电时保持所存储的信息或数据的存储器,例如ROM。
本发明提供一种创建和使用能够动态加载的以高级语言编写的预内在化程序文件的方法或处理方法。如在此所使用的,术语“方法”和“处理”是同义词。存在这样一个需要,即在不减少可用于执行的动态存储器容量的情况下,一种允许添加或删除用户专用程序文件以提高附加程序文件的随后执行速度的处理程序文件的方法。
在图3中图示一个示范性的编程环境44,包括一个设备45和附加程序文件46,所述附加程序文件具有任意数目n个类文件,其中n是一个整数。每个类文件是任意大小的,并代表用户希望添加给设备45的一组程序文件中的一个程序文件。应当理解,设备45的原制造商并未使用所图示的附加程序文件46对设备45编程。
设备45通过一个应用程序管理器48连接到附加程序文件46。双向连接到应用程序管理器48的是动态存储器52、永久性存储器56和虚拟机(VM)50。动态存储器52的一种形式是一个随机访问存储器(RAM),永久性存储器56可以被实现为一个闪存。永久性存储器56存储附加文件46的预内在化映像。在所图示的形式中,虚拟机50分别连接到每个动态存储器52和永久性存储器56。应当完全理解响应于虚拟机50通过未图示的导体在动态存储器52和永久性存储器56之间在设备45内传输信息。在所图示的形式中,虚拟机50具有类加载器61、类解析器62、类验证器63、资源管理器64、动态存储器管理器65、字节编码解释器66、预内在化器67和多个预加载应用程序和程序库68,所有这些都驻留在永久性存储器69内。虚拟机50还具有一个驻留在动态存储器70内的Java堆栈54。
在操作中,设备45由制造商预先编程以具有在预加载应用程序和程序库68内包含的预先确定的程序文件。当执行这样的预加载应用程序时,虚拟机50以第一或普通模式执行和处理它的永久性存储器69之外的应用程序。然而,假设设备45的用户希望从设备45外部的任何一个信息源添加附加文件46。应用程序管理器48用于协助将附加文件46放置在动态存储器52或永久性存储器56内。选择使用哪一个存储器是应用程序确定的,与本发明没有密切关系。应用程序管理器48以第二或者预内在化模式启动虚拟机50,这将把程序文件预内在化成虚拟机本身的存储结构。为了清楚起见,在此使用的术语“本身的存储结构”应当指该操作专用于在此讨论的特定虚拟机,与任何其它的虚拟机相对比。一个本身的存储结构是指一个特定的虚拟机,其中该虚拟机是该设备上虚拟机的一个具体例子。预内在化模式的结果是随后存储在永久性存储器56中的程序文件的预内在化映像。因为这个预内在化的映像现在驻留在永久性存储器内,所以该预内在化映像是一个可重复使用的可执行映像,假设需要执行新引入的应用程序,随后不需要重复预内在化。而且,现在可以删除放置在动态存储器52或永久性存储器56内附加文件46的原始复本,从而明显地节省存储器。
虚拟机50是一个标准虚拟机,已经修改从而能够执行预内在化功能。现有的虚拟机并不执行预内在化。已经修改类加载器61和类解析器62以执行普通模式或者预内在化模式。而且,类加载器61已经扩展以识别预内在化的类。已经扩展字节编码解释器66以支持预内在化器67创建的新的字节编码。
为了清楚起见,预内在化的处理包括类文件的处理。一开始,由类加载器61将这些类装入虚拟机50。类加载器61创建与附加程序文件46的每个类有关的虚拟机专用数据结构。在普通模式中,由类加载器61加载应用程序使用所确定的类。在预内在化的过程中,扫描虚拟机专用数据结构以确定在附加类的执行过程中引用的附加文件内部或者外部的其它的类。在普通模式中,在类加载过程中可能需要执行类初始化的方法,因此需要调用字节编码解释器66。字节编码解释器66执行任意一个专用于一个预先确定的类的初始化。这些类例如包括静态初始化程序。在为了安装预内在化的过程中,不执行静态初始化程序。静态初始化程序的执行仅当正在执行应用程序时才出现。虚拟机50的类解析器62用于以与所公布的Java引用平台相一致的常规方式来解析每个类的常数存储库内的条目。一旦解析完成,将Java字节编码(JBC)(通过地址指针)更新到现在所解析引用的位置。而且,由虚拟机50的类验证器63在预内在化的过程中以常规方式验证这些类。为了以后执行附加文件,消除了这些类的验证。验证是Java编程语言中的常规功能,将不对验证进行进一步的讨论,资源管理器64存储与附加文件有关的资源以使资源与附件程序文件相关。在整个处理中使用动态存储器管理器65来在动态存储器内创建与类相关的数据结构。将所获得的数据结构统称为一个内在化映像。然后,将最终的映像写入永久性存储器56。总之,预内在化器67是一小段编码,它控制虚拟机50的组件执行这些预内在化的步骤。
在图4中图示在预内在化两个程序文件之后图3的永久性存储器的进一步的细节。包括第三组程序文件74的多个程序文件73连接到Java应用程序管理器(JAM)76。JAM 76在永久性存储器92内保存一个动态预内在化应用程序的列表。将预内在化的应用程序称作“动态的”是因为在虚拟机的制造和销售之后将这些应用程序添加给虚拟机。
JAM 76连接到一个具有与图3的虚拟机50相同组件的虚拟机72。为了便于图示,在图4中未详细图示虚拟机的所有组件。虚拟机72具有一个在VM处于执行的第一或普通模式时使用的一个字节编码解释器79、一个在VM处于执行的第二或预内在化模式时使用的预内在化器80和程序文件的预加载类81。虚拟机72连接到一个永久性存储器84,所述永久性存储器84包含第一组程序文件的预内在化映像86、第二组程序文件的预内在化映像88以及用于其它程序文件的空间90。
在操作中,当主要使用它的字节编码解释器79以第一或者普通模式操作时,JAM 76控制虚拟机72执行预加载类81和/或预内在化映像86和/或预内在化映像88。通过主要使用它的预内在化器80,JAM76控制虚拟机72预内在化第三组程序文件74。以与所描述的图3的预内在化器67相同的方式,预内在化器80用于执行第三组程序文件74的预内在化。预内在化器80创建第三组程序文件74的映像,然后将其存储在用于其它程序文件的空间90内。另外,JAM 76控制虚拟机72从永久性存储器84内删除第二组程序文件88。JAM 76通过使用在永久性存储器92内存储的一个动态预内在化应用程序列表来维持预内在化映像的相关信息。在预内在化一组应用程序之前,JAM 76从以第二模式操作的虚拟机72获得用于其它程序文件90的空间的容量。这协助JAM 76确定是否可以预内在化一个程序文件组。在一个添加一组程序文件74或者删除已经预内在化的映像88的请求之后,以第二模式操作的虚拟机72也将它的成功或者失败的指示返送给JAM76。
应当指出在图3和图4所示的实施例中,通过第二模式或者预内在化模式重复使用虚拟机的核心组件。因此,虚拟机在本发明中被增强以允许存储已经完全转换成存储器资源地址的映像。
在图5中图示一个处理方法100,说明与虚拟机有关的Java应用程序管理器的各种程序应用执行选项。该处理方法开始于一个开始步骤101。在步骤103,一个用户或者另一个信号源从一组可用程序文件中选择一个程序文件。所选择的程序文件可能已经以预内在化映像的形式存在于该设备上的存储器内,或者也可能不存在。该组程序文件包含预加载的类和/或预内在化的映像和/或虚拟机外部的程序文件。应当理解在图5中未详细图示预加载的类的处理。在步骤105中,确定是否已经创建一个预内在化的应用程序映像。如果已经创建,则该映像将驻留在该包含虚拟机的设备上的永久性存储器内。如果步骤105的结果为“是”,则步骤107提供两个选择:(1)运行程序文件;或者(2)从永久性存储器的预内在化空间中删除这些程序文件。在一种形式中,可以从一个用户接收用户请求以确定所做的选择。假设一开始用户或者其它信号源选择运行这些程序文件。因为这些程序文件存在于永久性存储器的预内在化空间内,所以在步骤109中,由Java应用程序管理器调用普通模式的虚拟机来执行预内在化的映像。一旦执行结束,则抵达与程序文件执行有关的结束步骤100。假设用户或者其它信号源选择从包含虚拟机的设备的永久性存储器中删除程序文件。则在步骤112中,Java应用程序管理器调用第二模式的虚拟机以删除预内在化的映像。应当指出当虚拟机以预内在化模式操作时,删除预内在化的映像是预内在化程序的一个附加功能。一旦删除,则抵达结束步骤113。Java应用程序管理器还将更新永久性存储器内动态预内在化的程序文件的列表。
返回步骤105,假设先前未出现所关注的预内在化的映像。如果步骤105的结果为“否”,则步骤114提供两个选项:(1)运行程序;或者(2)向永久性存储器的预内在化空间添加程序文件。在一种实现方式中,可以响应于用户请求运行该程序文件还是进入预内在化模式来实现上述选择。另一个实施例可以使用一个自动运行的程序来实现这一选择。如果用户或者其它信号源决定运行这些程序文件,则执行步骤116。应当指出步骤116与将由图2的设备执行的未预内在化的程序文件的执行是相同的。步骤116包括一个第一步骤118,其中当以第一或普通模式操作时由虚拟机预内在化这些程序文件。注意到虚拟机的预内在化程序并未用于这个预内在化功能。相反,虚拟机使用各种功能部件,例如验证器、解析器等等来执行预内在化。在步骤120中,在步骤118中已经出现预内在化之后由虚拟机执行这些程序文件。步骤121结束程序的执行。应当指出因为该程序并非一个所存储的预内在化映像,每次为执行选择程序文件时都必需执行步骤118。返回步骤114,如果用户或者其它的信号源选择预内在化这些程序文件,则执行步骤124而不是步骤116。在步骤124中,Java应用管理器调用第二或者预内在化模式的虚拟机以通过上面参考图3所述的方式创建一个预内在化的映像。一旦创建所述的预内在化的映像,将该映像存储在该设备的永久性存储器内。应当指出如果在步骤105为了执行再次选择程序文件,则不需要再次执行步骤124,因为步骤105随后将该处理引导到步骤107。
在图6中图示了另一个可选的实施例处理方法130。处理130开始于步骤131。在步骤131,用户或者其它信号源从一组可用的程序文件中选择一个或多个程序文件。在一种形式中,用于这个选择的可能的“其它信号源”可以包括一个脱离设备的(off-device)程序文件服务器或者另一个脱离设备的信号源。在步骤135中,判断在是否已经在该设备上创建一个预内在化映像。将“在设备上”的标准添加给步骤135的原因在于因为这个实施例说明从一个脱离设备的信号源接收一个已经预内在化的映像的情况以及预内在化程序如何处理这种情况。如果回答为“是”,则步骤137、140、141、143和144分别与图5的步骤107、109、100、112和113完全相同。响应于用户请求执行一个运行或者删除操作,可以确定步骤137。如果回答为“否”,则执行步骤146,其中确定是否已经在其它地方为该设备创建一个预内在化的映像。如果对这个查询的回答为“否”,则步骤148、150、151、152、153、156和158分别与图5的步骤114、116、118、120、121、124和125完全相同。响应于用户请求执行一个运行或者一个预内在化的操作,可以确定步骤148。如果对这个查询的回答为“是”,则执行步骤157。在步骤157中,由Java应用程序管理器调用虚拟机,并不预内在化该映像,而仅将预内在化的映像复制和贴补在该设备的永久性存储器的特定位置上。一旦完成步骤157,抵达结束步骤160。
参考图7,将进一步说明从脱离设备的信号源接收映像的处理方法。这个实施例针对这样的需要即通过显著地减少预内在化的时间来进一步减少应用程序的执行时间。换句话说,可以在用作一个服务器的设备上实现本发明。因此,优点在于在一个脱离设备的服务器或者在类似于现有设备的一个脱离设备的客户机(对等的)上运行Java虚拟机环境。一个脱离设备的映像和一个由设备的虚拟机创建的映像的不同之处在于该映像在该设备的存储器内的存储位置。
一个系统180通常具有第一客户机设备182、带有客户设备仿真的第二客户机设备或服务器181,和未以可重复使用可执行映像的形式驻留在设备182上的应用程序集184。客户机设备182通常包括应用程序管理器204、动态存储器206、永久性存储器220和虚拟机210。在一种形式中,设备181和182的结构与图3的设备45相同。显然可以创建替代的实施例和修改的结构来执行在此所教导的功能。可以使用设备182外部的可选存储设备200来存储附加文件的预内在化的映像,所述存储设备是永久性存储器。
在操作中,由设备181和182外部的一个信号源创建附加文件184。由客户设备仿真181使用它的应用程序管理器185将附加文件184载入设备或者服务器。由工作在第二模式的虚拟机188将这些附加文件预内在化到它的永久性存储器190中。虚拟机188使用动态存储器187支持这一模式。所存储的映像可以也可以不由设备181来执行。如果设备181是一个客户设备,则这个应用程序映像将可能由设备181执行。如果设备181是一个带有客户设备仿真的服务器,则设备181仅用于创建预内在化的映像(即设备181用作一个应用程序服务器)。当设备181用作一个带有客户设备仿真的服务器时,映像可以选择存储在可能位于系统设计选择内任意位置上的永久性存储器200中。当第一客户设备182的应用程序管理器204从永久性存储器200或者从应用程序管理器185接收预内在化的映像时,则仅必需出现预内在化的最后一个步骤。最后一个步骤是图6的步骤157,涉及将预内在化的映像复制和贴补到永久性存储器220内。因此,系统180的作用显然是使设备182不必执行所有的预内在化处理步骤。使用处理能力和动态存储器空间非常有限的低端客户设备,与独立设备相比,本发明能够使用非驻留的应用程序来配置低端客户设备。另外,与每次需要执行非内在化程序时都要执行整个预内在化处理的现有设备相比,在此所教导的低端客户结构更快。
在图8中图示一个实现本发明的设备300。设备300包括处理器300和存储器304。存储器304可以被构成以具有多种不同的结构,图8仅图示与结合现有技术的图所讨论的结构相类似的结构。一个I/O双向连接到处理器302和存储器304,后面两者同样被双向连接。在所图示的形式中,存储器304包括Java应用程序管理器310、虚拟机312、动态存储器314和永久性存储器316。
在操作中,处理器执行预先确定的指令。存储器304的第一部分连接到处理器302,用于向处理器提供指令和数据。在一种形式中,存储器304的第一部分是虚拟机312。存储器304至少包含第一、第二和第三组的一个或多个指令。将要讨论的每组指令是否都包含一个或者多个指令是设计和编程选择的问题,并取决于相对于软件功能需要多少硬件功能。仅为了讨论的目的,在下述关于指令功能的讨论中将假设使用多个指令以最小化硬件的实现。然而,如果希望,在此将要描述的指令功能也可以用单个指令来实现。第一组指令用于接收第一程序文件。第二组指令用于将第一组程序文件预内在化成虚拟机本身的存储结构以创建第一程序文件的可重复使用的可执行的映像。第三组指令用于在存储器304的第二存储部分中存储预内在化的程序文件映像或者可重复使用的可执行的映像。可重复使用的可执行的映像能够在执行之前未内在化的情况下由虚拟机312执行。
图8的存储器304还可以包括第四组指令,用于接收和在存储器内存储一个可重复使用的可执行的映像。当可重复使用的可执行的映像被存储时,由一个内置结构来更新存储器指针以允许在同一设备存储器内到处移动这些映像。因此,存储可重复使用的可执行映像的存储器能够进行动态的存储器调解以有效地使用存储器,并协调存储器以有效地使用可用的地址。这一处理允许对象在设备上移动以创建第二可重复使用的可执行的映像。在将一个可重复使用的可执行的映像存储在一个设备中之后,更新该可重复使用的可执行的映像内的存储器地址以反映它的当前存储器地址。存储器304还可以包括当处理一个用户请求时执行的多个独立的指令,其中响应于用户请求,虚拟机以预内在化模式操作。多个独立的指令可以在存储器304内,用于引起从第二存储器传输预内在化的程序文件映像,所述第二存储器可位于该设备的内部或者外部。存储器304内的另外多个指令可以通过从存储器移动或者全部删除一个预内在化的程序文件来执行用户请求的处理。
通过将一个程序文件预内在化成虚拟机312本身的存储结构来预先创建可重复使用的可执行的映像。在这样一个例子中,虚拟机312能够在执行之前不内在化可重复使用的可执行的映像的情况下执行该可重复使用的可执行的映像。存储器304还可以存储多个独立的指令,用于将可重复使用的可执行的映像移动到该存储器内的一个不同位置上。而且,存储器304可以存储另一组指令,它们能够更新可重复使用的可执行的映像或者预内在化的程序文件映像内的存储器地址。应当理解存储器304还可以存储执行图5和图6的处理的指令。
本发明尤其有利于在便携式无线设备中使用。能够实现本发明的这种便携式设备的例子包括各种设备,例如电话机、互连网络设备(便携式和/或非便携式的)、个人数字助理(PDA)、寻呼机、照相机、摄像机(照相机/录音机)、便携式电视机以及组合多种通信功能的产品。
在上述描述中,已经参考Java编程语言和具体实施例描述了本发明。然而,本领域的普通技术人员将理解在不脱离权利要求书中所述的本发明保护范围的情况下,可以进行各种修改和改变。例如,本发明可应用于能够动态加载的其它高级编程语言。而且,在此教导的软件(例如图3的虚拟机50的软件实现)可以内嵌在一个或多个计算机硬盘、软盘、3.5英寸盘、计算机存储磁带、磁鼓、静态随机访问存储器(SRAM)单元、动态随机访问存储器(DRAM)单元、电可擦除(EEPROM、EPROM、闪存)单元、非易失性单元、铁电或铁磁存储器、压缩盘(CD)、激光盘、光盘和任何类似的计算机可读介质。因此,说明书和附图将被视为说明性的,而非限制性的,所有这些修改将包括在本发明的范围内。
上面已经针对具体实施例描述了利益、其它优点和问题的解决方法。然而,利益、优点、问题的解决方法和可能导致出现任何利益、优点或解决方法或者变得更显然的任何单元都不会被解释为任何或所有权利要求的关键、必需或者基本的特征或单元。如在此所使用的,术语“包括”或者它的任何同义词都是指非排除性的包含,例如包含一个单元列表的处理、方法、产品或者设备并不仅包含这些单元,还可以包含未明确列出或者并非这些处理、方法、产品或设备固有的其它单元。
Claims (7)
1.一种操作虚拟机的处理方法,所述虚拟机包括一种普通操作模式和一种预内在化操作模式,所述处理方法包括:
从一组可用的程序文件中选择一个程序文件以识别出一个选定的程序文件;
确定是否已经创建所述选定程序文件的一个可重复使用的预内在化的映像,其中随后在执行之前不内在化所述选定的程序文件的情况下,能够执行所述可重复使用的预内在化的映像;
如果所述选定程序文件的一个可重复使用的预内在化的映像尚未创建,则以预内在化模式选择地操作所述虚拟机,包括:
创建所述选定程序文件的可重复使用的预内在化的映像;和
将所述选定程序文件的可重复使用的预内在化的映像存储在存储器内。
2.如权利要求1的处理方法,进一步包括:
如果尚未创建所述选定程序文件的一个可重复使用的预内在化的映像,则响应于一个用户请求执行选择地以预内在化模式操作所述虚拟机。
3.如权利要求1的处理方法,其中所述虚拟机在第一设备中执行,并且所述处理方法进一步包括:
如果在第一设备中可以获得所述选定程序文件的可重复使用的预内在化的映像,则无需在执行之前内在化所述选定程序文件的可重复使用的预内在化的映像的情况下,执行所述选定程序文件的可重复使用的预内在化的映像;和
如果在第二设备中可以获得所述选定程序文件的可重复使用的预内在化的映像,所述第二设备与第一设备是分离的,则将所述选定程序文件的可重复使用的预内在化的映像从第二设备复制到第一设备,并更新所述选定程序文件的可重复使用的预内在化的映像内的存储器地址。
4.如权利要求1的处理方法,进一步包括:
在第一设备中执行所述虚拟机;和
如果在第一设备中可以获得所述选定程序文件的可重复使用的预内在化的映像,则选择地进入所述预内在化模式,并删除所述选定持续文件的可重复使用的预内在化的映像。
5.一种设备,其包括:
一个用于执行指令的处理器;
一个连接到所述处理器的第一存储器,用于向所述处理器提供指令和数据,该第一存储器包括:
第一组的一个或多个指令,当由所述处理器执行该第一组的一个或多个指令时实现一个程序文件的接收;
第二组的一个或多个指令,当由所述处理器执行该第二组的一个或多个指令时实现将所述程序文件预内在化成一个虚拟机的本身存储结构,从而创建一个所述程序文件的可重复使用的可执行的映像;和
第三组的一个或多个指令,当由所述处理器执行该第三组的一个或多个指令时实现存储所述可重复使用的可执行的映像,其中所述可重复使用的可执行的映像能够在执行之前不内在化的情况下由所述虚拟机执行。
6.如权利要求5的设备,进一步包括包含在所述设备内部或者在所述设备外部的第二存储器,其中第一存储器和第二存储器之一包括第四组指令,当该第四组的一个或多个指令由所述处理器执行时,更新所述可重复使用的可执行的映像内的一个存储器地址。
7.如权利要求5的设备,进一步包括包含在所述设备内部或者在所述设备外部的第二存储器,其中第一存储器和第二存储器之一包括:
第四组的一个或多个指令,当由所述处理器执行该第四组的一个或多个指令时将所述可重复使用的可执行的映像移动到第二存储器内的一个不同的位置;和
第五组的一个或多个指令,当由所述处理器执行该第五组的一个或多个指令时更新所述可重复使用的可执行的映像内的存储器地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/800,935 | 2001-03-07 | ||
US09/800,935 US7080373B2 (en) | 2001-03-07 | 2001-03-07 | Method and device for creating and using pre-internalized program files |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1524219A true CN1524219A (zh) | 2004-08-25 |
CN1306402C CN1306402C (zh) | 2007-03-21 |
Family
ID=25179757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018229891A Expired - Fee Related CN1306402C (zh) | 2001-03-07 | 2001-12-18 | 创建和使用预内在化程序文件的方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7080373B2 (zh) |
EP (1) | EP1425658A2 (zh) |
JP (1) | JP2005509194A (zh) |
KR (1) | KR100864192B1 (zh) |
CN (1) | CN1306402C (zh) |
AU (1) | AU2002248212A1 (zh) |
TW (1) | TWI229269B (zh) |
WO (1) | WO2002073401A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377011C (zh) * | 2003-03-25 | 2008-03-26 | 株式会社理光 | 图像形成装置和用远程应用软件操作图像形成装置的方法 |
CN109241011A (zh) * | 2018-09-21 | 2019-01-18 | 联想(北京)有限公司 | 一种虚拟机文件处理方法及装置 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093086B1 (en) * | 2002-03-28 | 2006-08-15 | Veritas Operating Corporation | Disaster recovery and backup using virtual machines |
US7213246B1 (en) | 2002-03-28 | 2007-05-01 | Veritas Operating Corporation | Failing over a virtual machine |
US7603670B1 (en) | 2002-03-28 | 2009-10-13 | Symantec Operating Corporation | Virtual machine transfer between computer systems |
US6757778B1 (en) | 2002-05-07 | 2004-06-29 | Veritas Operating Corporation | Storage management system |
US20040015943A1 (en) * | 2002-07-17 | 2004-01-22 | Ying-Chou Chen | Embedded computer system equipped with an upgradeable software library |
KR100493893B1 (ko) * | 2003-02-07 | 2005-06-10 | 삼성전자주식회사 | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 |
CN100388191C (zh) * | 2003-04-01 | 2008-05-14 | 松下电器产业株式会社 | 程序连接方法、装置以及终端装置 |
US7203944B1 (en) * | 2003-07-09 | 2007-04-10 | Veritas Operating Corporation | Migrating virtual machines among computer systems to balance load caused by virtual machines |
US20050028132A1 (en) * | 2003-07-31 | 2005-02-03 | Srinivasamurthy Venugopal K. | Application specific optimization of interpreters for embedded systems |
US7246200B1 (en) | 2003-11-12 | 2007-07-17 | Veritas Operating Corporation | Provisioning and snapshotting using copy on read/write and transient virtual machine technology |
US7124291B1 (en) * | 2003-12-22 | 2006-10-17 | Sun Microsystems, Inc | System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process |
US7810092B1 (en) | 2004-03-02 | 2010-10-05 | Symantec Operating Corporation | Central administration and maintenance of workstations using virtual machines, network filesystems, and replication |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
KR100622820B1 (ko) | 2004-12-22 | 2006-09-19 | 엘지전자 주식회사 | 데이터 방송 콘텐츠에서 클래스 파일 분석을 통한 이미지처리 방법 및 그 장치 |
US20060184937A1 (en) * | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method for centralized software management in virtual machines |
US8583770B2 (en) * | 2005-02-16 | 2013-11-12 | Red Hat, Inc. | System and method for creating and managing virtual services |
US9606846B2 (en) * | 2005-07-29 | 2017-03-28 | Sap Se | System and method for dynamic proxy generation |
US20070027877A1 (en) * | 2005-07-29 | 2007-02-01 | Droshev Mladen I | System and method for improving the efficiency of remote method invocations within a multi-tiered enterprise network |
JP2007164526A (ja) * | 2005-12-14 | 2007-06-28 | Canon Inc | 情報処理装置及び方法 |
US20070168509A1 (en) * | 2005-12-30 | 2007-07-19 | Droshev Mladen I | System and method for remote loading of classes |
CN100458700C (zh) * | 2006-03-22 | 2009-02-04 | 北京握奇数据系统有限公司 | 带有安全需求的应用程序的构建方法和装置 |
WO2007111208A1 (ja) * | 2006-03-24 | 2007-10-04 | Matsushita Electric Industrial Co., Ltd. | 再生装置、デバッグ装置、システムlsi、プログラム |
US8626557B2 (en) * | 2006-09-26 | 2014-01-07 | International Business Machines Corporation | System and method of providing snapshot to support approval of workflow changes |
US20090070752A1 (en) * | 2007-09-06 | 2009-03-12 | International Business Machines Corporation | Method and system for optimization of an application |
US8261254B2 (en) * | 2008-03-31 | 2012-09-04 | Symantec Corporation | Dynamic insertion and removal of virtual software sub-layers |
US8631397B2 (en) * | 2008-03-31 | 2014-01-14 | Microsoft Corporation | Virtualized application image patching |
US8577845B2 (en) * | 2008-06-13 | 2013-11-05 | Symantec Operating Corporation | Remote, granular restore from full virtual machine backup |
US8479178B2 (en) * | 2008-06-27 | 2013-07-02 | Microsoft Corporation | Compiler in a managed application context |
US9507613B2 (en) * | 2012-03-30 | 2016-11-29 | Oracle International Corporation | Methods and apparatus for dynamically preloading classes |
US9740500B2 (en) * | 2012-08-30 | 2017-08-22 | Microsoft Technology Licensing, Llc | Layout system for operating systems using BPRAM |
US9952879B2 (en) | 2012-08-30 | 2018-04-24 | Microsoft Technology Licensing, Llc | Application pre-layout in byte-addressable persistent random access memory |
US9753846B2 (en) * | 2012-09-06 | 2017-09-05 | Red Hat, Inc. | Adjusting the operating memory used by a virtual machine during runtime |
US11347498B2 (en) * | 2013-02-26 | 2022-05-31 | Red Hat, Inc. | Bytecode modification |
US9959106B2 (en) * | 2013-11-14 | 2018-05-01 | International Business Machines Corporation | Sharing of portable initialized objects between computing platforms |
KR20160019125A (ko) * | 2014-08-11 | 2016-02-19 | 동부대우전자 주식회사 | 냉장고 |
US9811367B2 (en) | 2014-11-13 | 2017-11-07 | Nsp Usa, Inc. | Method and apparatus for combined hardware/software VM migration |
US10303782B1 (en) | 2014-12-29 | 2019-05-28 | Veritas Technologies Llc | Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10191753B2 (en) | 2016-03-30 | 2019-01-29 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
CN110806910A (zh) * | 2018-07-18 | 2020-02-18 | 深圳市鸿合创新信息技术有限责任公司 | 一种轮播图的优化方法及系统、电子设备 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA226747A (en) * | 1922-12-05 | F. Exhart Charles | Lighting mixture | |
US4695950A (en) * | 1984-09-17 | 1987-09-22 | International Business Machines Corporation | Fast two-level dynamic address translation method and means |
JP3190042B2 (ja) | 1991-10-31 | 2001-07-16 | マトリテク インコーポレイテッド | 核マトリックス蛋白液アッセー |
US6400996B1 (en) * | 1999-02-01 | 2002-06-04 | Steven M. Hoffberg | Adaptive pattern recognition based control system and method |
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US5925123A (en) * | 1996-01-24 | 1999-07-20 | Sun Microsystems, Inc. | Processor for executing instruction sets received from a network or from a local memory |
US5838910A (en) | 1996-03-14 | 1998-11-17 | Domenikos; Steven D. | Systems and methods for executing application programs from a memory device linked to a server at an internet site |
US5815709A (en) | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US5815718A (en) | 1996-05-30 | 1998-09-29 | Sun Microsystems, Inc. | Method and system for loading classes in read-only memory |
JP2000514584A (ja) | 1996-10-25 | 2000-10-31 | シュルンベルジェ システーム | 高級プログラミング言語を用いたマイクロコントローラ |
ATE244417T1 (de) * | 1996-11-13 | 2003-07-15 | Paran Arik | Echtzeitprogramm-sprachbeschleuniger |
GB2321981B (en) | 1997-02-06 | 2002-01-09 | Ibm | Hosted machine code installation |
US5920720A (en) | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
US5943496A (en) * | 1997-05-17 | 1999-08-24 | Intertop Corporation | Methods for developing and instantiating object classes using a java virtual machine extension |
US6021273A (en) | 1997-06-30 | 2000-02-01 | Sun Microsystems, Inc. | Interpreter generation and implementation utilizing interpreter states and register caching |
US6349344B1 (en) * | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
US6658492B1 (en) * | 1998-03-20 | 2003-12-02 | Sun Microsystems, Inc. | System and method for reducing the footprint of preloaded classes |
US6199196B1 (en) | 1998-03-20 | 2001-03-06 | Sun Microsystems, Inc. | Methods and apparatus for linking a program for remote execution |
US5999732A (en) | 1998-03-23 | 1999-12-07 | Sun Microsystems, Inc. | Techniques for reducing the cost of dynamic class initialization checks in compiled code |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US6110227A (en) * | 1998-06-24 | 2000-08-29 | Microsoft Corporation | Systems and methods for pre-processing variable initializers |
US6438744B2 (en) | 1998-07-15 | 2002-08-20 | Microsoft Corporation | Dynamic mapping of component interfaces |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
US6336122B1 (en) | 1998-10-15 | 2002-01-01 | International Business Machines Corporation | Object oriented class archive file maker and method |
CA2255042C (en) * | 1998-11-30 | 2004-04-13 | Leonard W. Theivendra | Class loader |
US6272674B1 (en) * | 1998-12-14 | 2001-08-07 | Nortel Networks Limited | Method and apparatus for loading a Java application program |
CA2267477C (en) * | 1999-03-30 | 2003-10-14 | Object Technology International Inc. | Packaging memory image files |
US6763397B1 (en) * | 1999-05-27 | 2004-07-13 | Sun Microsystems, Inc. | Fully lazy linking |
US6460178B1 (en) | 1999-06-30 | 2002-10-01 | Microsoft Corporation | Shared library optimization for heterogeneous programs |
US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
US20020194293A1 (en) | 2001-06-13 | 2002-12-19 | Osman John H. | Communications system and method therefor |
-
2001
- 2001-03-07 US US09/800,935 patent/US7080373B2/en not_active Expired - Fee Related
- 2001-12-18 EP EP01997093A patent/EP1425658A2/en not_active Withdrawn
- 2001-12-18 KR KR1020037011692A patent/KR100864192B1/ko not_active IP Right Cessation
- 2001-12-18 CN CNB018229891A patent/CN1306402C/zh not_active Expired - Fee Related
- 2001-12-18 JP JP2002571993A patent/JP2005509194A/ja active Pending
- 2001-12-18 WO PCT/US2001/049342 patent/WO2002073401A2/en not_active Application Discontinuation
- 2001-12-18 AU AU2002248212A patent/AU2002248212A1/en not_active Abandoned
- 2001-12-27 TW TW090132510A patent/TWI229269B/zh not_active IP Right Cessation
-
2006
- 2006-06-05 US US11/422,230 patent/US8099729B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100377011C (zh) * | 2003-03-25 | 2008-03-26 | 株式会社理光 | 图像形成装置和用远程应用软件操作图像形成装置的方法 |
CN109241011A (zh) * | 2018-09-21 | 2019-01-18 | 联想(北京)有限公司 | 一种虚拟机文件处理方法及装置 |
CN109241011B (zh) * | 2018-09-21 | 2023-01-06 | 联想(北京)有限公司 | 一种虚拟机文件处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20040004551A (ko) | 2004-01-13 |
WO2002073401A2 (en) | 2002-09-19 |
KR100864192B1 (ko) | 2008-10-20 |
AU2002248212A1 (en) | 2002-09-24 |
TWI229269B (en) | 2005-03-11 |
US8099729B2 (en) | 2012-01-17 |
WO2002073401A3 (en) | 2004-04-01 |
EP1425658A2 (en) | 2004-06-09 |
CN1306402C (zh) | 2007-03-21 |
US7080373B2 (en) | 2006-07-18 |
US20020129078A1 (en) | 2002-09-12 |
US20060225059A1 (en) | 2006-10-05 |
JP2005509194A (ja) | 2005-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1306402C (zh) | 创建和使用预内在化程序文件的方法和设备 | |
US6272674B1 (en) | Method and apparatus for loading a Java application program | |
US7739486B2 (en) | Electronic device supporting multiple update agents | |
US8694981B2 (en) | Shared resource dependencies | |
US20140298318A1 (en) | Computer-executable application packaging method, computer-executable device and storage media performing the same | |
US20020100017A1 (en) | Configurations for binding software assemblies to application programs | |
KR20020086755A (ko) | 플래쉬 메모리 시스템의 고속 웨이크-업을 위한 방법 | |
CN110515647A (zh) | 一种静态资源管理方法、装置、设备和存储介质 | |
KR20080039080A (ko) | 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법 | |
CN115543224A (zh) | 基于zns ssd的文件系统控制方法、装置及设备 | |
US20040103417A1 (en) | System and method for changing operation of an application without recompiling | |
US6901591B1 (en) | Frameworks for invoking methods in virtual machines | |
US7114153B2 (en) | Method and apparatus for continuation-passing in a virtual machine | |
US6996813B1 (en) | Frameworks for loading and execution of object-based programs | |
US20100153644A1 (en) | On demand java application manager | |
CN115080114B (zh) | 应用程序的移植处理方法、装置和介质 | |
CN1703675B (zh) | 加速多媒体内容的方法和设备 | |
US20230196197A1 (en) | Calibration method and apparatus, terminal device, and storage medium | |
CN116820663A (zh) | 镜像构建方法、设备、存储介质及装置 | |
CN118467031B (zh) | 一种依赖包引入方法、产品、设备及介质 | |
CN111737964A (zh) | 表格动态处理方法、设备及介质 | |
US6978456B1 (en) | Methods and apparatus for numeric constant value inlining in virtual machines | |
CN102968589A (zh) | 一种应用程序安全属性的识别方法和装置 | |
US7702890B2 (en) | Information processing apparatus and program | |
CN117369946A (zh) | 基于dpu的容器部署方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: FREESCALE SEMICONDUCTOR INC. Free format text: FORMER OWNER: MOTOROLA, INC. Effective date: 20041224 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20041224 Address after: texas Applicant after: Fisical Semiconductor Inc. Address before: Illinois Applicant before: Motorola Inc. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070321 Termination date: 20171218 |
|
CF01 | Termination of patent right due to non-payment of annual fee |