CN101002174B - 在便携式装置中加载具有面向对象的中间语言的软件的方法 - Google Patents

在便携式装置中加载具有面向对象的中间语言的软件的方法 Download PDF

Info

Publication number
CN101002174B
CN101002174B CN2005800270067A CN200580027006A CN101002174B CN 101002174 B CN101002174 B CN 101002174B CN 2005800270067 A CN2005800270067 A CN 2005800270067A CN 200580027006 A CN200580027006 A CN 200580027006A CN 101002174 B CN101002174 B CN 101002174B
Authority
CN
China
Prior art keywords
module
data structure
loading
nonvolatile memory
load
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.)
Active
Application number
CN2005800270067A
Other languages
English (en)
Other versions
CN101002174A (zh
Inventor
G·格里莫德
J·-J·范德瓦勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales Digital Security France Easy Stock Co
Thales DIS Design Services SAS
Original Assignee
Gemplus Card International SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gemplus Card International SA filed Critical Gemplus Card International SA
Publication of CN101002174A publication Critical patent/CN101002174A/zh
Application granted granted Critical
Publication of CN101002174B publication Critical patent/CN101002174B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory

Abstract

本发明涉及用于在便携式数字装置(5)的非易失性存储器中加载包括可加载的多个模块(7)的软件的方法,其中加载至少一个模块包括测试非易失性存储器(6)中是否存在与所述模块关联的数据结构,以及当需要时,创建指示它为空的数据结构(62),解析内部元素的总体的链接,此后,将结构标记为已加载(621),测试是否存在可加载模块中引用的每个其他模块的关联的数据结构,以及当需要时,创建所述结构并指示它为空。所述发明使得减少加载模块期间板上软件所占用的空间。

Description

在便携式装置中加载具有面向对象的中间语言的软件的方法
技术领域
本发明涉及嵌入在便携式装置中的软件和执行环境,更具体来说涉及在便携式装置中加载此类软件的方法。
背景技术
已经开发了许多面向对象的中间编程语言。这些语言的主要目的是使它们的程序独立于执行它们所必需的硬件。由此,通常使程序员免于与特定硬件相联系的约束。为不同硬件发布相同版本的程序也是可能的。因此已经见到面向对象的中间语言、例如通过编译Java源语言获得的Java伪代码(命名为字节码)随之而来的普及度方面的提高。
桌上型计算机的Java程序常常以.class文件构成的一组模块的形式来发布。这些文件对应于软件的已编译形式。每个已编译文件对应于类数据结构,因此包括在此类中的信息:即,类元素(其内容、字段、方法)的描述、类使用并在其他类中定义的元素(字段和方法)的描述、可以由Java虚拟机解释器解释的指令(伪代码)形式的类方法的代码。在.class文件中,在引用表(常数池)中将类元素的描述和类使用的元素分组在一起,它们主要将数值符号(常数池中的项编号)与元素描述关联。因此,在可解释的指令(伪代码)中,对类元素和该类使用的元素的引用通过它们在引用表(常数池)中的项编号来“引用”。.class文件可以具有例如如下结构:
ClassFile{
Id_info;           //版本号
Constant_pool;    //存储对类元素和该类使用的元素的所有
引用
    Base_info;          //访问标志,类名和超类
    Interface_list;    //类实现的接口
    Field_list;        //类字段的描述
    Method_list;       //此类中的方法(包括它们的伪代码,即
可以由虚拟机的解释器解释的指令)
    Atrribute_list     //属性(例如:调试信息等)
编译的程序文件被存储在计算机的海量存储装置上、例如存储在硬盘上。Java软件由安装在计算机上的Java虚拟机执行。该虚拟机加载ClassFile信息并将其转换成工作存储器中的数据结构,其中这些数据结构专用于虚拟机并允许此虚拟机执行该程序。
Java软件的这种加载(和转换)阶段可以在大多数具有相当多随机存取存储器(RAM)和处理器资源的桌上型计算机上执行。这些资源允许它们通过即时且在RAM中创建虚拟机的内部数据结构来有效地加载程序,然后允许程序在RAM中执行。执行前的这种加载阶段主要包括链接编辑阶段,其中将对创建的数据结构中类的内部和外部元素的引用替换为由此创建的数据结构的存储地址。
但是,必须运行Java软件的某些系统有非常多的受限能力,这阻碍了这种类型的执行。因此,由于小型化的约束,芯片卡通常包括1与4千字节之间的RAM(用作工作存储器),32与64千字节之间的可重写非易失性存储器(用作海量存储器和工作存储器)以及约256千字节的只读存储器(用于存储执行环境代码)。因此此类芯片是不适于这种类型的功能,包括在非易失性存储器中存储.class文件和此阶段为每次执行在易失存储器中的加载。而且,卡上的类数据因此而是重复的:非易失性存储器中的.class文件中的数据和易失存储器中数据结构形式的数据。
第一个解决方案包括将芯片卡上的虚拟机的规范所定义的数据结构直接存储在芯片卡的非易失性存储器中。在此方式中,该卡上的虚拟机不再需要执行加载操作,因为它接收数据结构格式的类数据,因此已经可以执行。
文献US2003/028686描述了此类加载技术。因此将.class文件转换成加载机上的Java Card(注册商标)格式的.cap文件,然后在制造过程中或稍后其使用期间将此文件加载到芯片卡上。具体来说.cap文件包括头、引用表、方法描述符和外部元素描述符。该加载机还生成称为ExportFile的文件,它与生成的.cap文件关联。此ExportFile文件使得能够在.cap文件中声明公用元素,例如以使其他分开的应用程序可以使用它的元素。
但是,此解决方案的使用有它的缺点。Java Card具有相对于Java的缩减的指令集。具体来说,Java Card不支持动态类加载。在将.cap文件加载到芯片卡之后,限制动态链接编辑。从使用Java Card不支持的指令的.class文件生成加载的.cap文件是不容易的。而且,该转换阶段使程序员的任务复杂化,因为必须对每种芯片卡类型提供特定的转换(与已经加载到卡上且转换期间必须为其提供的对应ExportFile的程序有关)。还必须一次性地将程序加载到芯片卡上。传输中的任何中断都将涉及从头重启加载过程。最后,此解决方案的两个其他缺点是使用专用于卡(.cap)的类发布文件格式以及虚拟机的内部数据结构的必要标准化,这些在由此定义的新.cap文件中描述。
第二种解决方案包括在安装.class文件时将.class文件编译成芯片卡的本地语言。芯片卡的工作存储器不再被虚拟机占用,并显著缩短执行时间。随后执行加载和链接编辑过程。以此方式生成的本地代码有许多缺点,因为它占用远比解释的代码大的存储量。而且,编译是复杂的且成本高,因为它必须专用于芯片卡。芯片卡的安全性也被弱化,因为编译成本地机器代码的程序可以在卡的工作时提供数据。
发明内容
本发明的目的在于解决一个或多个这些缺点。因此本发明的目的在于提供一种用于加载软件的方法,所述软件被编译成面向对象的中间语言和并包括用于加载到配备有虚拟执行机的便携式数字装置的非易失性存储器中的多个模块,需要以可由所述虚拟机的解释器执行的形式来加载这些模块,这些模块的至少其中之一的加载包括如下步骤:
-检查非易失性存储器中是否存在与此模块关联的数据结构;以及
-如果此数据结构不存在,则在非易失性存储器中创建与此模块关联的数据结构,并将此数据结构标记为未加载;
-在此数据结构中解析此模块的所有内部元素的链接,然后将此数据结构标记为已加载;
-对于正在加载的模块中引用的每个其他模块,检查是否存在与此其他模块关联的数据结构;
-如果与此其他模块关联的数据结构不存在,则在非易失性存储器中创建与此其他模块关联的数据结构,并将此数据结构标记为未加载。
根据本发明的备选实施例,创建与要加载的模块关联的数据结构的步骤包括在此数据结构中存储要加载的此模块内所含的要加载的模块的描述符。
根据本发明的另一个备选实施例,链接解析步骤包括:
-验证是否存在与每个内部元素关联的数据结构;
-如果此数据结构不存在,则在非易失性存储器中创建与此内部元素关联的数据结构;
-对于正在加载的模块中提及的每个外部元素:
-验证是否存在与此外部元素关联的数据结构;
-如果此数据结构不存在,则在非易失性存储器中创建与此外部元素关联的数据结构;
根据本发明的另一个备选实施例,加载所述模块的步骤还包括在链接解析之后,如果此模块提及的所有外部模块均被标记为已加载,则将此模块标记为已链接。
检查是否存在数据结构的步骤可以包括,在如果存在的此数据结构与正在加载的模块中的其引用之间的相符性测试,并存储相符性检查信息;当该模块被标记为已链接时删除这些引用的相符性检查信息。
此类方法可以包括如下步骤:
-初始化标记为已链接的模块的静态数据;
-将此模块标记为可供使用。
一旦该模块被标记为可供使用,就可以删除数字装置中存储的且用于初始化静态数据的代码。
根据本发明的另一个备选实施例,要加载的模块是编译的Java.class文件。这些数据结构是可以由虚拟机处理的数据结构。数字装置是具有嵌入式Java或DotNet虚拟机的芯片卡。
可以支持对所有程序模块执行此类模块加载。
在模块不可用之后,可以检查此模块的可用性,以便可以由便携式装置自动加载该模块。
本发明还涉及用于一种用于程序的加载器,该程序被编译成面向对象的中间语言并包括要在便携式数字装置中加载的多个模块,该加载器能够存储在装置的非易失性存储器中,能够访问源装置上存储的模块以及能够实现前面描述的方法。本发明还涉及根据此类方法在便携式装置中加载的程序。
本发明还涉及包括存储前述加载器的非易失性存储器的便携式数字装置。根据本发明的备选实施例,非易失性存储器存储前述程序。
根据本发明的另一个备选实施例,该装置是芯片卡。
附图说明
通过阅读以非限定方式作为示例提供且与所附权利要求相关的描述,本发明的其他特殊特征和优点将变得显而易见,其中:
图1示出用于向芯片卡中加载的实现的计算机系统的示例;
图2示出加载期间存储在芯片卡的非易失性存储器中的数据;
图3示出与加载期间执行的步骤相关的数据结构标记符的状态演化。
具体实施方式
便携式电子装置下文将用于指代如便携式计算机的便携式装置,但是也指代配备有包括处理器的微处理器和存储装置的任何其他电子装置。
本发明提出通过为加载期间第一次提及的元素创建数据结构来将程序模块加载到便携式装置上。因此,加载期间通过模块的外部元素直接创建要由便携式装置的虚拟机执行的数据结构,而无需存储其临时表示。当加载、链接编辑和优化步骤由程序模块加载器执行时,从非便携式装置的非易失性存储器中删除不需要执行的元素。
图1示出为将编译的程序加载到芯片卡5上而实施的部件的示例,芯片卡5在此示例中构成便携式装置。计算机1配备有芯片卡读卡器2,芯片卡5插入其中。例如,计算机1通过计算机网络4连接到服务器3。编译的程序模块驻留在服务器3上(例如对于Java编译的程序采用一组.class文件的形式)。芯片卡5配备有用于执行加载的程序的虚拟机。
下文是在以Java编译的程序的特定上下文中详细描述本发明,当然本发明还可以应用于编译成其他面向对象的中间语言(例如,.NET(注册商标))的程序。
图2示出在模块7由加载器8加载时存储在芯片卡5的存储器6中的数据。加载器8是例如存储在芯片卡5的只读存储器中的应用程序。加载器8访问要加载的名为Class1的第一模块。加载器将Class1全部或一部分置于工作存储器61中。
加载器执行初步检查,以查看.class文件是否可用(例如可以将要动态加载的类的.class文件与URL地址关联)。加载器还检查非易失性存储器中是否存在与Class1关联的数据结构61。实际上,根据本发明的加载方法,可以在加载另一个模块时预先创建该数据结构。如果与Class1关联的数据结构62不存在,则在卡5的非易失性存储器中创建此数据结构。结构62包括加载状态标记符621。当创建数据结构时,将标记符621置于“未加载”状态。图3中示出了不同标记符状态和将它们分开的步骤。
当加载器8确认数据结构62存在且处于“未加载”状态时,加载器解析Class1中发现的引用的所有内部元素的链接。加载器然后删除执行程序或Class1所不需要的参数(例如线路编号表、源文件、调试信息等)。由此大大减少存储的数据在卡的非易失性存储器中占用的空间。
可以设想每个模块仅创建一个数据结构,并将此模块的内部元素的所有数据存储在其关联的数据结构中。在非易失性存储器中有利地为要加载的模块中引用的每个元素创建数据结构。因此可以更快且更容易地处理这些数据结构,具体来说例如允许删除链接编辑或优化之后不再需要的引用的元素。
在该示例中,内部链接解析意味着创建可以由虚拟机处理的数据结构63、64和65。这些数据结构是在先前加载另一个模块期间(下文详细解释的外部链接解析期间)创建的或由加载器8在此内部链接解析期间已确定它们不存在而创建的。数据结构63和64分别是列出内部字段和其引用出现在Class1中的方法的表。数据结构65对应于数据结构63中列出的字段的描述符。由此,可以将数据结构与每个内部元素或内部元素的每个列表关联。
这些数据结构在有关它们的元素实际被加载时才完成。因此这种加载使得在这些数据结构中仅存储执行所需的元素成为可能,从而自动删除从多个其他元素引用的元素的冗余。
一旦执行了该链接解析,则标记符621被置于“已加载”状态。此链接解析步骤有利地用于执行模块的调试。因此,此链接编辑步骤将使容易地确定可能原来是故障的内部链接成为可能。
可以在加载之后删除某个量的数据,以便在装置的非易失性存储器中占用最小的可能空间。具体来说,注意.class文件引用表包含许多仅在加载模块过程中而非执行期间使用的项。因此,可以删除编辑链接时使用的元信息。一旦对.class文件执行了链接编辑,则还可以删除某些方法描述符。例如,一旦执行了内部链接编辑,则可以删除模块的私有内部模块的文本描述:此描述仅用于编辑此链接,并且将不再使用。
此外,可以在预期没有其他模块将能够引用它们的情况下,删除某些公有内部元素(要被其他模块读取)的描述。这种情况主要是在模块的所有后续加载被禁止以便冻结便携式装置时。可以通过使加载器8失效或加载器8的代码存储在非易失性存储器中的情况下删除该代码来冻结装置。
在内部链接解析步骤之后,加载器8执行对正在加载的Class1模块中引用的外部元素的链接的解析。因此,对于Class1中引用的每个外部模块,检查关联的数据结构是否存在。如果不存在关联的数据结构,则创建关联的数据结构,并将其标记符置于“未加载”状态。在该示例中,Class1引用外部模块Class2。因为在加载Class1之前没有Class2的数据结构,所以Class1的外部链接解析的步骤暗示数据结构66的创建。
如果必须为模块中的每个元素创建数据结构,则必须解析对正在加载的模块中的外部元素的每个引用。相似地,如果测试确定关联的数据结构不再存在,则为每个外部元素创建数据结构。
在解析外部元素的链接期间,存在性测试有利地包括已发现的数据结构与其正在加载的模块中的引用之间的相符性的测试。如果此相符性测试是否定的,则生成加载失败消息。此相符性测试提供附加的调试方式。
因此,模块的加载使得在便携式装置的非易失性存储器中尽可能地为其他要加载的模块创建数据结构成为可能。此外,标记符使得在此加载被中断的点处恢复加载成为可能。此类加载使得在关联的模块可用之前仅加载某些模块成为可能。因此本发明使得在加载模块时动态地修改它们的数据结构成为可能。
当解析了要加载的模块的所有外部引用的链接时,其数据结构的标记符被置于“已链接”状态。
然后,初始化此已链接的模块的静态数据。然后将其数据结构的标记符置于“就绪”状态。该模块则位于便携式装置的非易失性存储器中并已可以使用。当数据结构处于“就绪”状态时删除存储在便携式装置中且要初始化静态数据的代码,以便减少占用的存储空间。当数据结构的标记符被置于“就绪”状态时,可以删除位于工作存储器中的模块的元素以便释放数字装置中的空间。
本领域技术人员将知道如何定义编译程序的连续模块的合适加载次序。具体来说,加载器8可以存储其数据结构已经创建的未加载的模块,然后连续加载它们。加载器8还能够仅加载要提交给它的模块。
如果要加载的模块不可用,则加载器还可以重复检查可用性,并尽可能地自动加载此模块。
由于非易失性存储器空间被释放,所以可以将能够加载.class文件的标准Java虚拟机存储在芯片卡中。开发人员就可以对便携式装置和桌上型计算机发布相同的程序。开发人员还将拥有对他/她选择的库元素的访问权。不同于在Java Card编程中,开发人员无需先恢复ExportFile文件。

Claims (12)

1.一种用于加载软件的方法,所述软件被编译成面向对象的中间语言并包括用于加载到便携式数字装置(5)的非易失性存储器中的多个模块(7),所述便携式数字装置配备有虚拟执行机,以能够由所述虚拟执行机的解释器执行的形式来加载这些模块(7),其特征在于加载所述模块的至少其中之一包括如下步骤:
-检查所述非易失性存储器(6)中是否存在与待加载的模块关联的数据结构;以及
-如果此数据结构不存在,则在所述非易失性存储器中创建与此模块关联的数据结构(62),并将此数据结构标记为未加载;
-在此数据结构中解析此模块的所有内部元素的链接,然后将此数据结构标记为已加载(621);
-对于正在加载的模块中引用的每个其他模块,检查所述非易失性存储器(6)中是否存在与此其他模块关联的数据结构;
-如果与此其他模块关联的数据结构不存在,则在所述非易失性存储器中创建与此其他模块关联的数据结构(66),并将此数据结构标记为未加载。
2.如权利要求1所述的方法,其特征在于,创建与要加载的模块关联的数据结构的步骤包括在此数据结构中存储此要加载的模块内所含的要加载的模块的描述符。
3.如权利要求1或2所述的方法,其特征在于:
-所述链接解析步骤包括:
-验证是否存在与每个内部元素关联的数据结构;
-如果此数据结构不存在,则在非易失性存储器中创建与此内部元素关联的数据结构(64、65);
-对于正在加载的模块中提及的每个外部元素:
-验证是否存在与此外部元素关联的数据结构;
-如果此数据结构不存在,则在所述非易失性存储器中创建与此外部元素关联的数据结构。
4.如权利要求1或2所述的方法,其特征在于,加载所述模块的步骤还包括,在链接解析之后,如果此模块提及的所有外部模块均被标记为已加载,则将此模块标记为已链接。
5.如权利要求4所述的方法,其特征在于:
-检查是否存在数据结构包括,如果此数据结构存在,则在此数据结构与正在加载的模块中此数据结构的引用之间进行相符性测试,并存储相符性检查信息;
-当所述模块被标记为已链接时,删除所引用的相符性检查信息。
6.如权利要求4所述的方法,其特征在于,所述方法还包括如下步骤:
-初始化标记为已链接的模块的静态数据;
-将此模块标记为可供使用。
7.如权利要求6所述的方法,其特征在于,一旦所述模块被标记为可供使用,则删除所述便携式数字装置中存储的且用于初始化静态数据的代码。
8.如权利要求1或2所述的方法,其特征在于,要加载的模块是编译的Java.class文件。
9.如权利要求8所述的方法,其特征在于,所述数据结构是可以由所述虚拟执行机处理的数据结构。
10.如权利要求8所述的方法,其特征在于,所述数字装置(5)是具有嵌入式Java或DotNet虚拟机的芯片卡。
11.如权利要求1或2所述的方法,其特征在于,对于所有程序模块执行所述模块加载。
12.如权利要求1或2所述的方法,其特征在于,在模块不可用之后,检查此模块的可用性,并由所述便携式数字装置自动加载此模块。
CN2005800270067A 2004-06-15 2005-06-07 在便携式装置中加载具有面向对象的中间语言的软件的方法 Active CN101002174B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR04/06493 2004-06-15
FR0406493A FR2871590B1 (fr) 2004-06-15 2004-06-15 Procede de chargement d'un logiciel en langage intermediaire oriente objet dans un appareil portatif.
PCT/EP2005/052621 WO2005124544A2 (fr) 2004-06-15 2005-06-07 Procede de chargement d’un logiciel en langage intermediaire oriente objet dans un appareil portatif

Publications (2)

Publication Number Publication Date
CN101002174A CN101002174A (zh) 2007-07-18
CN101002174B true CN101002174B (zh) 2011-12-07

Family

ID=34948438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800270067A Active CN101002174B (zh) 2004-06-15 2005-06-07 在便携式装置中加载具有面向对象的中间语言的软件的方法

Country Status (6)

Country Link
US (1) US7913265B2 (zh)
EP (1) EP1782191B1 (zh)
JP (1) JP2008502968A (zh)
CN (1) CN101002174B (zh)
FR (1) FR2871590B1 (zh)
WO (1) WO2005124544A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7926054B2 (en) * 2006-03-03 2011-04-12 Novell, Inc. System, method, and computer-readable medium for virtual machine instantiation from an external peripheral device
US20090193392A1 (en) * 2008-01-29 2009-07-30 Michael David Downen Dynamic intermediate language modification and replacement
CN101256612B (zh) * 2008-04-01 2010-11-03 北京飞天诚信科技有限公司 基于.Net卡的程序保护方法和系统
CN103198240B (zh) * 2012-09-29 2016-03-16 网易(杭州)网络有限公司 一种用于保护代码安全的方法和装置
US10158647B2 (en) * 2015-08-25 2018-12-18 Oracle International Corporation Permissive access control for modular reflection
US10191753B2 (en) 2016-03-30 2019-01-29 Oracle International Corporation Generating verification metadata and verifying a runtime type based on verification metadata
US10394528B2 (en) 2016-03-30 2019-08-27 Oracle International Corporation Returning a runtime type loaded from an archive in a module system
US10387142B2 (en) 2016-09-16 2019-08-20 Oracle International Corporation Using annotation processors defined by modules with annotation processors defined by non-module code
US10360008B2 (en) 2016-09-16 2019-07-23 Oracle International Corporation Metadata application constraints within a module system based on modular encapsulation
US10848410B2 (en) 2017-03-29 2020-11-24 Oracle International Corporation Ranking service implementations for a service interface
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout
CN110874246A (zh) * 2018-08-28 2020-03-10 Tcl集团股份有限公司 一种模块加载方法、系统及设备
CN111538632B (zh) * 2020-04-27 2023-08-08 Oppo(重庆)智能科技有限公司 检验方法、检验系统和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1321281A (zh) * 1998-07-31 2001-11-07 松下电子工业株式会社 用于2种用途的可携带体、通信系统、通信方式、终端装置、记录了程序的计算机可读取的记录媒体

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366876B1 (en) 1997-09-29 2002-04-02 Sun Microsystems, Inc. Method and apparatus for assessing compatibility between platforms and applications
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US6349344B1 (en) 1997-12-16 2002-02-19 Microsoft Corporation Combining multiple java class files into a run-time image
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
JP2001256058A (ja) 2000-03-13 2001-09-21 Omron Corp インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置
US7020874B2 (en) * 2001-03-26 2006-03-28 Sun Microsystems, Inc. Techniques for loading class files into virtual machines
US7096467B2 (en) * 2001-06-28 2006-08-22 Sun Microsystems, Inc. Initialization of Java classes in Java virtual machine environments
US7665075B1 (en) * 2004-03-17 2010-02-16 Sun Microsystems, Inc. Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1321281A (zh) * 1998-07-31 2001-11-07 松下电子工业株式会社 用于2种用途的可携带体、通信系统、通信方式、终端装置、记录了程序的计算机可读取的记录媒体

Also Published As

Publication number Publication date
WO2005124544A3 (fr) 2006-02-23
JP2008502968A (ja) 2008-01-31
FR2871590A1 (fr) 2005-12-16
CN101002174A (zh) 2007-07-18
US20080010649A1 (en) 2008-01-10
US7913265B2 (en) 2011-03-22
EP1782191B1 (fr) 2012-08-01
WO2005124544A2 (fr) 2005-12-29
EP1782191A2 (fr) 2007-05-09
FR2871590B1 (fr) 2006-08-04

Similar Documents

Publication Publication Date Title
CN101002174B (zh) 在便携式装置中加载具有面向对象的中间语言的软件的方法
JP5208350B2 (ja) 自己記述型ソフトウェアイメージ更新コンポーネント
US9811360B2 (en) Dynamic determination of application server runtime classloading
US6298353B1 (en) Checking serialization compatibility between versions of java classes
CN1324467C (zh) 基于标记的链接
US20040098402A1 (en) System and method for common code generation
CN108139896A (zh) 扩展虚拟机指令集体系架构
CN109032631B (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
US10303467B2 (en) Target typing-dependent combinatorial code analysis
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN110955431A (zh) 编译环境的处理方法及装置
CN102455931A (zh) 一种Android平台工程的开发方法及系统
CN113553035A (zh) 一种通用的前端ui组件库的设计和构建方法
CN116755713A (zh) 应用程序的生成方法、装置、设备及存储介质
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
Brada et al. Practical verification of component substitutability using subtype relation
Chakravarthy et al. Edicts: implementing features with flexible binding times
CN111352631B (zh) 一种接口兼容性检测方法及装置
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
CN112328241B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
US20090172648A1 (en) Byte code analysis library
US10657476B2 (en) Just in time compilation (JIT) for business process execution
CN113254040A (zh) 前端框架更新方法、装置、设备及存储介质
CN113835686A (zh) 代码处理方法和装置
CN104933019A (zh) 一种列表生成的方法及装置

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: GEMPLUS CARD INT

Free format text: FORMER OWNER: GEMPLUS CO.

Effective date: 20111012

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20111012

Address after: French Meudon

Applicant after: GEMALTO S.A.

Address before: French based Minos

Applicant before: GEMPLUS

C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: French Meudon

Patentee after: Thales Digital Security France

Address before: French Meudon

Patentee before: GEMALTO S.A.

TR01 Transfer of patent right

Effective date of registration: 20230404

Address after: French Meudon

Patentee after: Thales Digital Security France Easy Stock Co.

Address before: French Meudon

Patentee before: Thales Digital Security France

TR01 Transfer of patent right