CN100351783C - 语言子集证实 - Google Patents
语言子集证实 Download PDFInfo
- Publication number
- CN100351783C CN100351783C CNB008181969A CN00818196A CN100351783C CN 100351783 C CN100351783 C CN 100351783C CN B008181969 A CNB008181969 A CN B008181969A CN 00818196 A CN00818196 A CN 00818196A CN 100351783 C CN100351783 C CN 100351783C
- Authority
- CN
- China
- Prior art keywords
- computerese
- class
- indication
- routine package
- java
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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
Abstract
一种语言子集证实方法,包括证实多个包括程序的程序模块,每个程序模块包括为第一计算机语言定义的多个字节码,所述第一计算机语言是第二计算机语言的硬件相关的子集。证实包括:对于没有在所述第一计算机语言中定义的所述多个程序模块中的每一项指示出错状态;对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态;对于虽然在所述第一计算机语言中定义但是使用方式与所述的所述第一计算机语言不一致的多个程序模块中的每一项指示出错状态。一种用于语言子集证实的装置,包括一个具有程序指令的存储器和至少一个处理器,处理器被设定使用程序指令证实多个程序模块,这些模块一起构成程序。处理器还被设定使用程序指令对于没有在所述第一计算机语言中定义的所述多个程序模块中的每一项指示出错状态;对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态;对于虽然在所述第一计算机语言中定义但是使用方式与所述的所述第一计算机语言不一致的多个程序模块中的每一项指示出错状态。
Description
相关申请的交叉引用
本申请涉及下列专利申请:
1999年2月2日由Susser和Schwabe提交的美国专利申请,名称是“Object-Oriented Instruction Set for Resource-Constrained Devices”。
1997年4月15日由Levy和Schwabe提交的美国专利申请,名称是“Virtual Machine with Securely Distributed Bytecode Verification”。
1999年11月12日由Chen和Schwabe提交的美国专利申请,名称是“Optimization of N-Base Typed Arithmetic Expressions”。
发明领域
本发明涉及计算机系统。更具体地说,本发明涉及语言子集证实(language subset validation)。
背景技术
面向对象的程序设计技术(例如JavaTM平台中使用的技术)得到了广泛的应用。面向对象的程序的基本单位是具有方法(过程)和域(数据)的对象,此处称为“成员”。具有共享成员的对象被分组为“类”。“类”定义了这类中的对象的共享成员。每个对象还是其所属类中的一个特别的“实例”。实际上,类经常被用作“模板”来产生具有相似特性的多重对象(多重实例)。
类的一个特性是“封装”,封装说明了类的这样一个特性,即除了通过界面暴露出来的以外,类内的成员的实际执行对于外部使用者和其他类而言是隐藏的。这个特性使类很适合于分散式开发,例如由不同的开发者在网络上的不同地点上进行开发。通过将需要的类进行汇编、连接并执行得到的程序,就可以完成整个编程。
类具有“继承”的特性。继承是一种机制,其使一个类可以继承另一个类的全部成员。继承其他类的类称作子类,提供属性的类称作超类(superclass)。象征性地,这可以表示为子类<=超类,或者超类=>子类。子类可以通过增加附加成员扩展超类的能力。子类可以通过提供具有相同名称和类型的替代方法取代超类的虚拟方法。
类的类型成员是指域和方法,它们包括从超类继承而来的成员。类文件还可以对超类命名。成员可以是公用的,即它可以被包括其说明的类的成员所使用。成员也可以是专用的。类的专用域只在类内定义的方法中是可见的。类似地,专用方法只能由类内的方法调用。专用成员在子类内是不可见的,而且不像其他成员那样被子类继承。成员还可以是受保护的。
界面类型是其成员为常量和抽象方法的类型。这种类型不具有实现工具,但是否则无关的类可以通过为其抽象方法提供实现工具而执行。界面可能具有子界面,就像类具有子类一样。子界面从其超界面(superinterface)继承,并同样定义新的方法和常量。另外,界面可以在某一时间扩展为多个界面。一个扩展为多个界面的界面从各个界面中继承所有的抽象方法和常量,并定义其自身的其它方法和常量。
在JavaTM编程语言中,类可以分组并且组可以命名,被命名的类的分组是程序包。如果类成员没有说明具有任何公用、专用或者保护密码,则它只在对其进行定义的类内或者在属于相同程序包的一部分的类内是可见的。说明类的成员或者来自其被说明的程序包中的成员可以使用保护成员。在Addison-Wseley Longman,Inc于1996年8月出版的Gosling等人编著的“The JavaTM Language Specification”中详细介绍了JavaTM编程语言。
虚拟机是一种由处理器执行的软件应用或者指令序列所产生的抽象计算机器。“体系结构中立性”指能够由虚拟机在具有多种计算机体系结构的多种计算机平台上执行的程序,例如JavaTM编程语言中所写的那些一样。因此,例如在基于WindowsTM的个人计算机系统上实现的虚拟机将与在基于UNIXTM的计算机系统上实现的虚拟机使用同一套指令执行应用程序。虚拟机指令序列的不依靠平台的编码结果是一个或多个字节码的流,例如每个字节码是一个字节长的数字代码。
JavaTM虚拟机是虚拟机的一个例子。由JavaTM虚拟机执行的编译代码通过使用硬件和不依靠操作系统的二进制格式表示,这种二进制格式通常存储于文件中,称为类文件格式。类文件被设计用来操作面向对象的结构,这种结构可以表示用JavaTM编程语言写的程序,但还可以支持其他几种编程语言。类文件格式精确地定义类或者界面的表示法,包括一些细节,例如在平台确定的目标文件格式中理所当然的字节次序。为了安全的目的,JavaTM虚拟机对类文件中的指令采用了严格的格式和结构限制。任何能按照有效类文件表达的具有功能性的语言都可以把Java虚拟机作为主机。类文件被设计用来操作面向对象的结构,这种结构可以表示用JavaTM编程语言写的程序,但还可以支持其他几种编程语言。在Addison-Wseley Longman,Inc于1996年8月再版出版的Lindholm等人编著的“The JavaTM Virtual Machine Specification”中详细介绍了JavaTM虚拟机。
与典型的台式计算机或者类似设备相比,资源受限设备(resource-constrained device)通常被认为是那些在存储和/或计算能力或速度上受到相对限制的设备。例如,其他资源受限设备包括移动电话、边界扫描设备、现场可编程设备、个人数字助理(PDA)和寻呼机以及其他微型或者小体积设备。本发明还可以用于非资源受限的设备(non-resource constrained device)。
为了进行说明,术语“处理器”还用以指实体计算机或者虚拟机。
智能卡是资源受限设备的其中一种类型,还被称为智能化便携式数据携带卡。智能卡由塑料或者金属制成并具有电子芯片,电子芯片包括用于执行程序的嵌入式微处理器或者微控制器和用于存储程序和数据的存储器。这些设备可能有信用卡大小,具有8位或者16位结构的计算机芯片。另外,这些设备的存储能力通常有限。例如,某些智能卡的随机存储器(RAM)容量小于1K,只读存储器(ROM)和/或非易失性存储器(例如电可擦除只读存储器(EEPROM))容量也有限。
JavaTM虚拟机执行用JavaTM编程语言书写的程序,并被设计用于存储容量相对较大的台式计算机。很希望能够利用Java CardTM虚拟机的全部实现工具书写程序并在资源受限设备(例如智能卡)上执行。但是,由于资源受限设备(例如智能卡)的结构和存储有限,不能在这种设备上使用全部的Java虚拟机平台实现工具。因此,独立的Java CardTM(支持JavaTM编程语言的智能卡)技术支持用于资源受限设备的JavaTM编程语言的子集。
某些JavaTM技术所支持的项在Java CardTM技术中却不受到支持。例如,JavaTM技术支持字符型、双精度型、浮点型和长型,但Java CardTM技术却不支持。另外,某些JavaTM语言特性在有限的方式下受到支持。Java CardTM技术在限制这些特性的作用方面并不逊于JavaTM技术。例如,JavaTM技术允许具有超过一维的数组,而Java CardTM技术只允许具有一维数组。
在Java CardTM技术中,Java CardTM转换器把正常类文件作为输入,并把它们转换为CAP(转换的小应用程序)文件。转换的小应用程序格式支持类文件信息的子集。每个转换的小应用程序文件包括在一个JavaTM程序包中所定义的所有的类和界面。转换的小应用程序文件具有压缩格式和优化格式,以使JavaTM程序包可以在资源受限设备上有效地存储和执行。转换之后,转换的小应用程序文件被安装在允许使用JavaCardTM技术的设备上。
用于Java CardTM技术的JavaTM语言子集的出现,意味着可以产生出包括不被Java CardTM子集支持的项的有效JavaTM程序模块。在资源受限设备上执行这些程序模块可能产生错误结果。因此现有技术需要有一种方法和装置用于语言子集证实,以方便于在资源受限设备上正确执行应用程序。
发明简述
一种语言子集证实方法,包括证实多个包括程序的程序模块,每个程序模块包括为第一计算机语言定义的多个字节码,所述第一计算机语言是第二计算机语言的硬件相关的子集。证实包括:对于没有在所述第一计算机语言中定义的所述多个程序模块中的每一项指示出错状态(error condition);对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态;对于虽在所述第一计算机语言中定义但使用方式与该第一计算机语言不一致的多个程序模块中的每一项指示出错状态。一种用于语言子集证实的装置,包括一个具有程序指令的存储器和至少一个处理器,处理器被设定使用程序指令证实多个程序模块,这些模块一起构成程序。处理器还被设定使用程序指令对于没有在所述第一计算机语言中定义的所述多个程序模块中的每一项指示出错状态;对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态;对于虽然在所述第一计算机语言中定义但是使用方式与该第一计算机语言不一致的多个程序模块中的每一项指示出错状态。
附图简述
图1A为一个方框图,说明了在源级上语言与语言子集之间的关系;
图1B为一个方框图,说明了在类文件级上语言与语言子集之间的关系;
图2是一个流程图,说明了根据本发明的一个实施例进行语言子集证实的方法;
图3是一个流程图,说明了根据本发明的一个实施例进行静态证实的方法;
图4A是一个流程图,说明了根据本发明的一个实施例对方法进行静态证实的方法;
图4B是一个流程图,说明了根据本发明的一个实施例对方法字节码进行静态证实的方法;
图5是一个流程图,说明了根据本发明的一个实施例对域进行静态证实的方法;
图6是一个流程图,说明了根据本发明的一个实施例进行基于方法的证实的方法;
图7是一个流程图,说明了根据本发明的一个实施例进行基于程序包的证实的方法;
图8是一个流程图,说明了根据本发明的一个实施例在程序包中对方法的证实;
图9A是一个流程图,说明了根据本发明的一个实施例在程序包中对类的证实;
图9B为一个方框图,说明了根据本发明的一个实施例对实现的界面数量的计算;
图9C为一个方框图,说明了根据本发明的一个实施例对继承界面数量的计算;
图10A是一个流程图,说明了根据本发明的一个实施例证实类存取控制;
图10B是一个流程图,说明了根据本发明的一个实施例确定程序包缺省方法是否被处理成为公共方法或者保护方法;
图11是一个流程图,说明了根据本发明的一个实施例证实程序包缺陷;
图12是一个流程图,说明了根据本发明的一个实施例进行基于卡的证实。
具体实施方案详述
本领域普通技术人员将认识到下面对本发明的描述只起到说明性作用。受益于本说明的本领域技术人员将会很容易地理解本发明的其它实施例。
本发明涉及计算机系统,尤其涉及语言子集证实。本发明进一步涉及机器可读介质,其上存储了(1)本发明的设计参数和/或(2)使用了本发明在计算机上实现操作所用的程序指令。举例来说,这样的介质包括磁带、磁盘、光学可读介质(例如CD ROM)和半导体存储器(例如PCMCIA卡)。介质还可能呈现便携式产品的形式,例如小磁盘、磁盘或者磁带。介质还可能呈现体积较大或固定产品的形式,例如硬盘驱动器或者计算机随机RAM。
图1A和图1B说明了在高级程序语言源级和类文件级上语言与语言子集特性之间的关系。请参看图1A,图1A为一个方框图,说明了在语言源级上语言与语言子集之间的关系。Java CardTM技术支持JavaTM语言的一个子集,该子集以数字100表示。对于某些所支持的JavaTM语言特性,Java CardTM技术还限制其操作范围,该JavaTM语言特性以数字102表示。此外,特别的Java CardTM虚拟机还有选择地支持某些JavaTM语言特性,图中这些选择特性用数字104表示。JavaTM技术支持而Java CardTM技术不支持的特性用数字106表示。
现在请参看图1B,图1B是一个方框图,说明了在类文件级上语言与语言子集之间的关系。Java CardTM技术支持JavaTM类文件中所含信息的子集,图中用数字110表示。Java CardTM技术对于某些所支持的JavaTM语言特性还限制其操作范围,并且这些限制能够在类文件级得到校验,图中用数字112表示。此外,特别的Java CardTM虚拟机还选择性地支持某些JavaTM特性,这些特性能够在类文件级得到校验。图中这些选择性特性用数字114表示。JavaTM技术支持而Java CardTM技术不支持的特性也可能在类文件级得到校验,图中用数字116表示。因此,图1B表明,在源级所支持的语言特性与类文件级所支持的语言特性之间存在直接联系。此外,通过在类文件级进行校验,有可能确定在高级程序语言源级书写的程序是否使用未被Java Card技术定义的特性。
根据本发明,采用语言子集的系统中指令级程序文件与语言子集相对进行证实。不受支持的项被检测出来,在限制方式中受到支持的项被校验,以确定它们是否被正确使用。另外,校验特别的执行环境,以确定其是否支持选择特性。如果执行环境支持选择特性,指令级程序文件被校验,以确定选择特性是否得到正确使用。如果执行环境不支持选择特性,指令级程序文件被校验,以确定是否使用了不受支持的选择特性。在多个阶段都完成这个过程,提供了相对完全的证实。
在本说明中,本发明是对于JavaTM技术和Java CardTM技术进行说明。但是,本领域普通技术人员将会认识到,本发明对于其他平台也同样适用。而且,本领域普通技术人员还将会认识到,本发明也同样适用于不同类型的语言子集证实。
现在请参看图2,图2说明了根据本发明的一个实施例进行语言子集证实的方法。在附图标记130中进行静态证实。为了进行说明,术语“静态证实”指可以通过仅仅通过检查类文件就能实现的证实,不涉及其它的程序单元或者程序执行状态。在静态证实中,未得到支持的特性受到检测。另外,选择性特性被证实。在附图标记135中进行基于方法的证实。在基于方法的证实中,在方法中对指令进行数据流分析,以校验算术操作的中间值。这个阶段被用于检测可能的溢出条件。在附图标记140中进行基于程序包的证实。在基于程序包的证实中,具有有限范围的不受支持的特性受到检测。在附图标记145中进行基于卡的证实。在基于卡的证实中,为所有程序所使用的存储器总量受到校验,以确定程序是否超出目标设备的存储器限制。
现在请参看图3,图3是一个流程图,说明了根据本发明的一个实施例进行静态证实的方法。在附图标记160中接收类文件。在附图标记165中对域进行静态证实。在附图标记170中对方法进行静态证实。在附图标记175中进行校验,以确定是否其它的类文件保持有效。如果存在其它类文件,运行在附图标记160中继续进行。这个过程一直进行到所有的类文件得到证实。
现在请参看图4A,图4A是一个流程图,说明了根据本发明的一个实施例对方法进行静态证实的方法。在附图标记190中接收方法。在附图标记192中进行校验,以确定方法说明是否被语言子集所支持。在JavaCardTM技术中,参数类型、返回类型和存取标志符受到校验,以确定是否有效。例如,JavaTM技术支持字符串、长型、双精度型和浮点型,但Java CardTM技术却不支持。另外,JavaTM技术支持“同步”和“本地”存取标志符,但是Java CardTM技术却不支持。如果类型或者存取标志符不受支持,则在附图标记194中指示出错。
如果方法声明被支持,在附图标记196中进行校验,以证实特殊的执行环境是否支持选择特性。在Java CardTM技术中,整数型(int)是选择特性的例子。特殊的执行环境(Java CardTM虚拟机)确定选择项是否被支持。如果执行环境不支持选择特性,在附图标记198中进行校验,以确定方法说明是否包括选择特性。如果方法包括选择特性,在附图标记194中指示出错。在附图标记200中方法的字节码被证实。在附图标记202中进行校验,以确定是否有其它方法等待证实。如果有其它方法,运行在附图标记190中继续进行。这个过程一直进行到类文件中所有的方法得到证实。
现在请参看图4B,图4B是一个流程图,说明了根据本发明的一个实施例对方法字节码进行静态证实的方法。在附图标记210中接收字节码。在附图标记212中进行关于字节码是否被语言子集所支持的判断。字节码受到校验,以确定是否使用了未得到支持的数据类型和是否使用了对未得到支持的数据类型数值的操作。字节码还受到校验,以确定是否使用了未得到支持的特性。例如,在Java CardTM技术中不支持线程。关键字“同步的(synchronized)”指示使用监督程序使线程同步,此关键字具有特殊的字节码表示法。它在字节码中的出现指示使用了监督程序。
如果字节码不受支持或者被用于操作未得到支持类型的数据,在附图标记214中指示出错。如果字节码获得支持,在附图标记216中进行校验,确定特殊执行环境是否支持选择项。如果特殊执行环境不支持选择项,在附图标记218中进行校验,确定选中的字节码是否代表选择特性。如果选中的字节码代表选择特性,在附图标记214中指示出错。在附图标记220中进行校验,确定方法中是否保留有更多的字节码。如果其中保留有更多的字节码,运行在附图标记210中继续执行。这个过程一直进行到方法中所有的字节码得到校验。
现在请参看图5,图5是一个流程图,说明了根据本发明的一个实施例对域进行静态证实的方法。对域的静态证实按照与对方法的静态证实相同的方式进行。在Java CardTM技术中,无效存取标志符包括例如“易失的”或者“暂态的”。如果域说明使用未得到支持的类型和存取标志符,则指示出错。如果域声明使用选择特性,例如在Java CardTM技术中使用整数类型,不被执行环境支持,则也指示出错。
JavaTM虚拟机指令集定义了指令集以操作整数类型字节、短型和整数型的值。类型字节和短型的变量在编译过程中被扩展至整数型。因此,被计算的值也是32位整数数值。但是,Java CardTM虚拟机除了具有指令集以操作整数类型字节的值之外,还具有单独的指令集以操作类型字节和短型变量。
在Java CardTM平台上对32位整数型的支持是任选的。不支持32位整数型的目标平台不能使用32位整数型变量。并且,JavaTM类文件中使用的32位算法字节码必须转换为用于Java CardTM指令集的16位指令。因此,由16位指令进行计算的值是16位整数值。这种转换将产生溢出的可能性,超出16位表示法。如果有可能溢出的值被输入至容易发生溢出的指令中,或者如果可能溢出的值被用作数组索引,就可能发生错误结果。确定是否存在溢出的可能性包括产生数据流。确定何时存在溢出的可能性的方法的细节在1999年11月15日由Chen和Schwabe提交的美国专利申请中有详细介绍,该申请名称是“Optimization ofN-BaseTyped Arithmetic Expressions”。为避免困惑,本说明中不另作讨论。
现在请参看图6,图6是一个流程图,说明根据本发明的一个实施例而进行的基于方法的证实。在基于方法的证实中,对方法进行分析,以确定是否存在可能的溢出条件。在附图标记270中接收方法。在附图标记275中对方法进行校验,以确定是否存在可能的溢出条件。
在附图标记285中证实局部变量类型。在Java CardTM技术中,编译指令确定编译器是否产生局部变量属性表,作为代码产生过程的一部分。局部变量属性变量包括局部变量的类型信息。如果存在局部变量属性表,可以在上述“静态证实”阶段对有效类型进行局部变量证实。如果不存在局部变量属性表,数据流被用在本阶段,以确定局部变量的类型。如果任何局部变量具有未得到支持的类型或者目标设备不支持的选择性类型,则指示出错。
在附图标记290中进行校验,以确定是否还存在其它方法要进行证实。如果存在其它方法,在附图标记270中运行继续进行。这个过程一直进行到类文件中所有的方法得到证实。
现在请参看图7,图7是一个流程图,说明了根据本发明的一个实施例进行基于程序包的证实的方法。在基于程序包的证实中,对具有有限范围的受支持的特性进行检测。在附图标记300中接收包括程序包的类文件。在附图标记305中对程序包中的方法进行证实。在附图标记310对程序包中的类进行证实。在附图标记315对程序包限制进行证实。
现在请参看图8,图8是一个流程图,说明了根据本发明的一个实施例在程序包中对方法的证实。在附图标记330中接收方法。在附图标记335中进行校验,以确定变量和参数的总数是否超出预定值。在JavaCardTM技术中,变量和参数的总数不能超出255。如果总数超出预定值,在附图标记350中指示出错。在附图标记337中Java字节码被转换为JavaCard字节码。在附图标记340中进行校验,以确定方法内的Java CardTM字节码总数是否超出预定值。在Java CardTM技术中,Java CardTM字节码总数不能超出32767。如果字节码总数超出限制,在附图标记355中指示出错。在附图标记365中进行校验,以确定是否程序包中的所有方法都得到证实。如果还存在其它方法,在附图标记330中运行继续进行。这个过程一直进行到所有方法得到证实。
现在请参看图9A,图9A是一个流程图,说明了根据本发明的一个实施例在程序包中对类和界面的证实。在附图标记380中接收类文件。在附图标记382中对类内的实例域的数量进行证实。在Java CardTM技术中,每个类内的实例域总数不能超出255。这个数量包括在类中说明的域和在类的每个超类中说明的所有实例域。一般关于超类内域的信息不包括在用于子类的类文件中。因此,必须读取用于超类的类文件,以确定超类中实例域的数量。这个过程以循环方式继续进行,直到根超类被检测到。然后将按照这种方式获得的实例域的总数与实例域最大值进行比较。
在附图标记384中对静态域的数量进行校验。在Java CardTM技术中,每个类的公用和保护性静态域的总数不能超出256。与实例域不同,只存在一个具体化的静态域。因此,静态域的最大值不适用于类的每个超类的静态域。
在附图标记386中对实例方法的数量进行校验。在Java CardTM技术中,程序包可见实例方法的总数不能超出128,公用和保护性实例方法的总数不能超出128。这个数量包括在类中声明的方法和在类的每个超类中声明的所有方法。一般关于超类内方法的信息不包括在用于子类的类文件中。因此,必须读取用于超类的类文件,以确定超类中实例方法的数量。对于公用和保护性实例方法,这个过程以循环方式继续进行,直到根超类被检测到。对于程序包可见实例方法,循环继续进行,直到被校验程序包内所有的超类被检测到。最后,任何重复都被除去。
在附图标记388中对静态方法的数量进行校验。在Java CardTM技术中,每个类的公用和保护性静态方法的总数不能超出256。与实例域不同,只存在一个具体化的静态方法。因此,静态方法的最大值不适用于类的每个超类的静态方法。
在附图标记390中对类存取控制进行校验。这个证实确定公用界面是否不正确地扩展为程序包可见界面,以及超类中程序包缺省方法的存取可见性是否在子类中不正确地变成公用或者保护性的。
在附图标记392中进行校验,以确定类或者界面是否具有超过预定数量的超界面。在Java CardTM技术中,超界面的最大值是15。如果类文件代表类,此类的超界面包括直接由此类实现的界面和每个直接实现界面的超界面,以及由任何超类实现的界面。因此,对超界面总数的确定,可以通过循环访问每个超界面和超类,直至所有界面都被在内。重复被除去后留下的界面数量与可实现界面最大值进行比较。
如果类文件表示界面,这个校验界面的超界面包括被这个界面直接继承的截面和每个直接超界面的超界面。因此,对超界面总数的确定,可以通过循环确定每个界面及其超界面从哪个界面继承。重复被除去后留下的界面数量与可继承界面最大值进行比较。
在附图标记396中确定是否还有更多的类文件需要被证实。如果还有更多的类文件,在附图标记380中运行继续进行。这个过程一直进行到所有类文件得到证实。
现在请参看图9B,图9B为一个方框图,说明了根据本发明的一个实施例对实现界面数量的计算。C1400、C2402和C3404表示三个类。I1406、I2408和I3410表示三个界面。类C3和界面I3在程序包B414中,其他项在程序包A 412中。从类C1开始,由类及其所有超类直接实现的界面的数量被加至由该类的超类实现的界面数量之中,重复部分被除去。此处由C1实现的第一界面受到检验。类C1实现I1,I1继承I2。因此I1和I2被计算在内。如果I2还继承了任何界面,这些界面也被计算在内。然后C1的超类受到检验。类C1从C2扩展。类C2不实现任何界面,只扩展出C3。类C3实现(I1,I2)。因此,类C2也实现(I2和I3)。返回至类C1,类C1实现界面I1、界面I1的超界面I2和由其超类C2实现的界面。因此,C1实现(I1,I2)+(I2,I3)。除去重复部分之后,C1实现三个界面:(I1,I2)+(I12,I3)=(I1,I2,I3)。这个数量小于用于Java CardTM技术的最大值。
现在请参看图9C,图9C为一个方框图,说明了根据本发明的一个实施例对继承界面数量的计算。I1416、I2418和I3420、I4422和I5424表示五个界面。界面I4和I5位于程序包D428中,其他界面位于其它的程序包C 426中。界面I1从I2和I3扩展,因此I1具有超界面I2和I3。另外,界面I1继承I2和I3继承的所有内容。如图9C所示,I3从I2扩展,I4从I5扩展,I5从I2扩展。因此,I4从(I2+I5)=(I2,I5)继承,I3从(I4)+(I2,I5)+(I2)=(I2,I4,I5)继承。因此,I1从(I2)+(I3)+(I2,I4,I5)继承。除去重复部分之后,I1从四个界面:(I2,I3,I4,I5)继承。这个数量小于用于Java CardTM技术的最大值。
现在请参看图10A,图10A是一个流程图,说明了根据本发明的一个实施例而证实类存取控制。由于类文件能够代表类或者界面,因此在附图标记430中校验受检验的类文件是否包括界面。如果类文件代表界面,在附图标记431中校验界面是否为公用。在Java CardTM技术中,公用界面不可能扩展为程序包可见界面。由于一个界面至少可以扩展一个超界面,这个确定程序需要对程序包内的每个界面进行检验,以确定这个链条中是否有界面是程序包可见界面。
如果界面是公用的,在附图标记432中进行校验,以确定当前界面是否扩展出任何界面。如果当前界面直接继承一个界面,则在附图标记434中接收此界面。在附图标记436中对于直接超界面是否具有程序包缺省可见性进行证实。直接超界面是可以被当前界面立即继承的界面。如果直接超界面具有程序包缺省可见性,在附图标记438中指示出错。如果直接超界面不具有程序包缺省可见性,在附图标记440中进行校验,以确定是否存在另外一个超界面。如果不存在另外一个超界面,在附图标记434中运行继续进行。
Java CardTM技术还规定,超类中的程序包缺省方法的存取可见性不必在子类中变为公用的或者受保护的。这在附图标记442中一开始就进行校验。如果当前类文件代表类,在附图标记442中对当前类是否具有超类进行判断。如果当前类具有超类,在附图标记444中接收当前类的公用的或者受保护的方法。在附图标记446中对方法进行校验,以确定方法是否也在具有程序包缺省可见性的超类中定义。在附图标记448中对当前类中是否还有更多公用的或者受保护的方法进行判断。如果有更多公用的或者受保护的方法,在附图标记444中运行继续进行。这个过程一直进行到当前类中所有公用的和受保护的方法得到检验。
现在请参看图10B,图10B是一个流程图,说明了根据本发明的一个实施例确定程序包缺省方法是否被处理成为公共方法或者保护方法。在附图标记460中进行校验,以确定当前类是否在同一程序包中具有超类。如果当前类在同一程序包中具有超类,在附图标记462中对方法是否也在超类中定义但具有程序包缺省可见性进行校验。如果相应方法在超类中具有程序包缺省可见性,在附图标记464中指示出错。如果相应方法未在超类中定义或者不具有程序包缺省可见性,从附图标记460开始,当前类被设置为当前类的超类,并且此过程反复进行。这个对方法的校验过程以循环方式继续进行,直到达到超类根部(root)或者程序包边界。
现在请参看图11,图11是一个流程图,说明了根据本发明的一个实施例证实程序包缺陷。在附图标记476中对程序包中定义的类和界面的数量进行校验。在Java CardTM技术中程序包中定义的类和界面的最大值为255。如果数量超过了最大值,在附图标记478中指示出错。在附图标记480中对由这个校验后程序包输入的程序包的数量是否大于预定数量进行判断。在Java CardTM技术中一个程序包不能输入超过128个的程序包。
在附图标记490,在程序包中类文件被转换成为转换的小应用程序文件后,转换的小应用程序文件组成部分(component)大小得到证实。在Java CardTM技术中,转换的小应用程序文件由一组组成部分组成。每个组成部分描述了所定义的JavaTM程序包中的一组单元或者转换的小应用程序文件的一个方面。所有组成部分都具有如下通用格式:
组成部分{
u1标记
u2大小
u1信息[]
}
“大小”项表示“信息”数组组成部分中字节的数量。由“大小”组成部分表示的最大值是64K字节。不同类型组成部分的“信息”数组的内容和格式不同。组成部分的其中一种类型方法为组成部分。方法组成部分具有如下通用格式:
方法-组成部分{
u1标记
u2大小
·
·
方法-组成部分方法[]
}
该方法数组可以包括多重方法,并且每个方法小于32K字节。但是,用于所有方法的字节总数有可能超过64K字节的限制。因此,每个组成部分内的字节数被加在一起,总数与最大值(64K)进行比较。如果总数大于极限值,则在附图标记495中指示出错。
在Java Card技术中,“输出”文件是指包括Java程序包的所有公用可存取信息的二进制文件。根据本发明的另一个实施例,在进行基于程序包的证实阶段,通过校验表示定义超类或者超界面的程序包的“输出”文件,对超类或者超界面进行校验。此“输出”文件得到使用,代替了超类的类文件或者超界面。但是,因为“输出”文件只包括公用可存取信息,程序包缺省类和界面,以及程序包缺省和专用方法和域不包括在内。因此,在基于程序包的证实中某些校验需要延时,直至基于卡的证实,因为没有足够的信息可以利用。
作为延时校验直至基于卡的证实的例子,对于超界面的数量的精确计算要求程序包和公用可见性界面都包括在内。由于输出文件只包括公用可存取信息,程序包可见性界面未包括在内。因此,如果公用超界面的数量在基于程序包的证实过程中被确定小于最大值,当关于程序包可见性界面的信息可用时,公用和程序包可见性界面的数量将不得不在后来的基于卡的证实中重复进行。但是,如果计算出的公用超界面的数量大于最大值,将没有必要进行进一步的计算,因为早已超出了超界面的最大值。
需要延时校验直至基于卡的证实的另一种情况是计算类中的实例域的数量。由于超类中的专用和程序包缺省实例域在输出文件中不可用,不可能得到精确的计算。因此,实例域的数量必须在所有类的信息可用时在后来的基于卡的证实中进行计算。
根据本发明的另一个实施例,在基于程序包的证实中进行的证实需要延时,直至下面说明的基于卡的证实。在这种情况下,当卡上的所有类的信息都可用时进行证实。
现在请参看图12,图12是一个流程图,说明了根据本发明的一个实施例进行基于卡的证实。在附图标记500中接收可执行运行时间(executable runtime)映像所需的类文件或者转换的小应用程序文件。在附图标记505中,用于可执行(executable)映像内所有程序单元的存储器使用量(memory usage)被加在一起。在附图标记510中,计算出来的存储器使用量与最大值进行比较。如果总的存储器使用量大于为可执行映像定义的最大值,在附图标记515中指示出错。在Java CardTM技术中,所有的程序单元必须符合处于64K的界限内,这是Java CardTM虚拟机所引用的存储器范围。
虽然本发明根据Java CardTM技术而进行说明,但本领域普通技术人员将认识到本发明适用于许多其它平台。举例来说这些平台包括K虚拟机(KVM)技术。KVM技术在太阳微系统公司于1999年6月出版的“TheK Virtual Machine(KVM)-A White Paper”一书中有介绍。
本发明可以用软件或者硬件来实现,也可以采用可编程门阵列器件、专用集成电路(Application Specific Integrated Circuits,ASICS)和其他硬件实现。
因此,本发明描述了一种用于语言子集证实的新颖方法。虽然在说明中描述了本发明的实施例及其应用,但对于本领域技术人员而言,在不偏离上述发明思想的条件下可以对发明进行很多改进,这一点是显而易见的。因此本发明只受所附权利要求的限制。
Claims (14)
1.一种语言子集证实方法,包括:
证实多个包括程序的程序模块,每个所述程序模块包括为第一计算机语言所定义的多个字节码,所述第一计算机语言是第二计算机语言的硬件相关的子集,所述证实包括:
对于没有为所述第一计算机语言所定义的所述多个程序模块中的每一项指示出错状态;
对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态;
对于虽然在所述第一计算机语言中定义但是使用方式与所述第一计算机语言不一致的多个程序模块中的每一项指示出错状态。
2.根据权利要求1所述的方法,其中所述程序模块包括类文件;并且所述证实进一步包括:
通过把所有用于所述程序模块的代码和数据相加来判断存储器使用量;
当所述存储器使用量超出最大存储器使用量时指示出错状态。
3.根据权利要求1所述的方法,其中所述程序模块包括转换的小应用程序文件;并且所述证实进一步包括:
通过把所有用于所述程序模块的代码和数据相加来判断存储器使用量;
当所述存储器使用量超出最大存储器使用量时指示出错状态。
4.根据权利要求2所述的方法,其中所述证实进一步包括:
读取所述类文件内的每个方法;
当方法说明不被所述第一计算机语言所支持时指示出错;并且
当所述执行环境不支持所述第一计算机语言的选择特性而所述方法说明包括所述选择特性时指示出错。
5.根据权利要求4所述的方法,其中所述证实进一步包括:
当域说明不被所述第一计算机语言支持时指示出错;并且
当所述执行环境不支持所述第一计算机语言的选择特性而所述域说明包括所述选择特性时指示出错。
6.根据权利要求5所述的方法,其中所述证实进一步包括:
读取每个所述方法的字节码;
当所述字节码使用不被所述第一计算机语言支持的数据类型时指示出错;
当所述字节码在不被所述第一计算机语言支持的数值类型上操作时指示出错;
当所述执行环境不支持所述第一计算机语言的选择类型而所述指令使用了所述选择类型时指示出错;
当所述执行环境不支持所述第一计算机语言的选择类型而所述指令在所述选择类型的至少一个数值上运行时指示出错。
7.根据权利要求4中所述的方法,其中所述证实进一步包括:
为所述类文件内的每个方法产生数据流;并且
使用所述数据流判断在方法内的算术中间结果是否存在溢出的可能性,所述溢出可能性产生与第二最终结果语义上不同的第一最终结果,当所述方法不能按照所述第一计算机语言执行时获得所述第一最终结果,当所述方法不能在所述第二计算机语言下执行时获得所述第二最终结果。
8.根据权利要求4所述的方法,其中所述证实进一步包括:
读取至少一个包括程序包的类文件;
当所述程序包中每个类的每个方法内的局部变量和参数的总数超过变量和参数的最大值时指示出错;
根据所述第一计算机语言而转换所述方法内的所有字节码以产生经转换的字节码;并且
当经转换的字节码的总数超过字节码的最大值时指示出错。
9.根据权利要求8所述的方法,其中所述证实进一步包括:
当所述程序包的每个类内的实例域的数量超过实例域的最大值时指示出错;
当所述程序包的每个类内的静态域的数量超过静态域的最大值时指示出错;
当所述程序包的每个类内的实例方法的数量超过实例方法的最大值时指示出错;
当所述程序包的每个类内的静态方法的数量超过静态方法的最大值时指示出错;
当所述程序包的每个类或每个界面的超界面的总数超过超界面的最大值时指示出错。
10.根据权利要求9所述的方法,其中所述证实进一步包括:
当所述程序包内公用界面扩展为程序包可见性界面时指示出错;
当超类中的程序包缺省方法的存取可见性在所述程序包中的子类中变成公用或者保护性时指示出错。
11.根据权利要求1所述的方法,其中所述第一计算机语言是为Java CardTM虚拟机定义的;而且所述第二计算机语言包括JavaTM语言。
12.根据权利要求1所述的方法,其中所述第一计算机语言是为Java CardTM虚拟机定义的;所述第二计算机语言包括JavaTM类文件。
13.一种用于语言子集证实的装置,包括:
证实多个包括程序的程序模块的工具,每个所述程序模块包括为第一计算机语言所定义的多个字节码,所述第一计算机语言是第二计算机语言的硬件相关的子集,所述证实工具包括:
对于没有为所述第一计算机语言所定义的所述多个程序模块中的每一项指示出错状态的工具;
对于不被所述第一计算机语言的执行环境所支持的所述多个程序模块中的每一项指示出错状态的工具;
对于虽然在所述第一计算机语言中定义但是使用方式与所述第一计算机语言不一致的多个程序模块中的每一项指示出错状态的工具。
14.根据权利要求13所述的装置,其中所述程序模块包括类文件;并且所述证实工具进一步包括:
通过把所有用于所述程序模块的代码和数据相加来判断存储器使用量的工具;
当所述存储器使用量超出最大存储器使用量时指示出错状态的工具。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/439,645 | 1999-11-12 | ||
US09/439,645 US6581206B2 (en) | 1999-11-12 | 1999-11-12 | Computer program language subset validation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1678989A CN1678989A (zh) | 2005-10-05 |
CN100351783C true CN100351783C (zh) | 2007-11-28 |
Family
ID=23745548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008181969A Expired - Lifetime CN100351783C (zh) | 1999-11-12 | 2000-11-10 | 语言子集证实 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6581206B2 (zh) |
EP (1) | EP1236080A4 (zh) |
JP (1) | JP4913302B2 (zh) |
CN (1) | CN100351783C (zh) |
AU (1) | AU775261B2 (zh) |
CA (1) | CA2391313A1 (zh) |
WO (1) | WO2001040900A2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2790844B1 (fr) * | 1999-03-09 | 2001-05-25 | Gemplus Card Int | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
US6845498B1 (en) * | 1999-05-11 | 2005-01-18 | Microsoft Corporation | Method and apparatus for sharing data files among run time environment applets in an integrated circuit card |
US6938244B1 (en) | 1999-05-11 | 2005-08-30 | Microsoft Corp. | Interlaced protocol for smart card application development |
FR2795835B1 (fr) * | 1999-07-01 | 2001-10-05 | Bull Cp8 | Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce |
US7506175B2 (en) * | 2000-11-06 | 2009-03-17 | International Business Machines Corporation | File language verification |
US20020099953A1 (en) * | 2000-11-30 | 2002-07-25 | International Business Machines Corporation | Debugging of chipcards |
US7181724B2 (en) * | 2001-06-20 | 2007-02-20 | Sun Microsystems, Inc. | Representation of Java® data types in virtual machines |
US6948156B2 (en) * | 2001-10-24 | 2005-09-20 | Sun Microsystems, Inc. | Type checking in java computing environments |
US7073168B2 (en) * | 2001-12-06 | 2006-07-04 | Microsoft Corporation | Customizing binary content files |
US20050177816A1 (en) * | 2002-03-08 | 2005-08-11 | National Instruments Corporation | Automatic generation of graphical program code for a graphical program based on the target platform of the graphical program |
US7028222B2 (en) * | 2002-06-21 | 2006-04-11 | National Instruments Corporation | Target device-specific syntax and semantic analysis for a graphical program |
US8104085B2 (en) | 2003-06-27 | 2012-01-24 | Oracle America, Inc. | Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same |
US7263690B1 (en) * | 2003-11-14 | 2007-08-28 | Sun Microsystems, Inc. | Mechanism for safe byte code in a tracing framework |
US7266726B1 (en) | 2003-11-24 | 2007-09-04 | Time Warner Cable Inc. | Methods and apparatus for event logging in an information network |
US8302111B2 (en) | 2003-11-24 | 2012-10-30 | Time Warner Cable Inc. | Methods and apparatus for hardware registration in a network device |
US9213538B1 (en) | 2004-02-06 | 2015-12-15 | Time Warner Cable Enterprises Llc | Methods and apparatus for display element management in an information network |
US8078669B2 (en) | 2004-02-18 | 2011-12-13 | Time Warner Cable Inc. | Media extension apparatus and methods for use in an information network |
JP4215037B2 (ja) | 2004-12-27 | 2009-01-28 | セイコーエプソン株式会社 | リソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法 |
JP2006244451A (ja) * | 2005-02-01 | 2006-09-14 | Seiko Epson Corp | リソース管理システムおよびリソース管理プログラム、並びにリソース管理方法 |
JP4311386B2 (ja) | 2005-02-14 | 2009-08-12 | セイコーエプソン株式会社 | ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置 |
JP4232767B2 (ja) * | 2005-03-14 | 2009-03-04 | セイコーエプソン株式会社 | ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法 |
US20080127128A1 (en) * | 2006-10-30 | 2008-05-29 | Daniel Mateescu | Type Validation for Applications Incorporating A Weakly-Typed Language |
US8370818B2 (en) * | 2006-12-02 | 2013-02-05 | Time Warner Cable Inc. | Methods and apparatus for analyzing software interface usage |
US8539443B2 (en) * | 2008-05-13 | 2013-09-17 | National Instruments Corporation | Edit time analyzer in a loosely typed textual language |
US8479156B2 (en) * | 2009-06-18 | 2013-07-02 | National Instruments Corporation | Providing target specific information for textual code at edit time |
US9170825B2 (en) * | 2011-04-21 | 2015-10-27 | Oracle International Corporation | Interface method resolution for virtual extension methods |
US9710234B2 (en) * | 2013-12-26 | 2017-07-18 | International Business Machines Corporation | Generating software code |
CN104146793B (zh) * | 2014-07-28 | 2015-12-30 | 浙江大学 | 一种具有生物活性器官的制造方法 |
US11716558B2 (en) | 2018-04-16 | 2023-08-01 | Charter Communications Operating, Llc | Apparatus and methods for integrated high-capacity data and wireless network services |
WO2020077346A1 (en) | 2018-10-12 | 2020-04-16 | Charter Communications Operating, Llc | Apparatus and methods for cell identification in wireless networks |
US11129171B2 (en) | 2019-02-27 | 2021-09-21 | Charter Communications Operating, Llc | Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system |
US11026205B2 (en) | 2019-10-23 | 2021-06-01 | Charter Communications Operating, Llc | Methods and apparatus for device registration in a quasi-licensed wireless system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5838965A (en) | 1994-11-10 | 1998-11-17 | Cadis, Inc. | Object oriented database management system |
US5668999A (en) * | 1994-12-20 | 1997-09-16 | Sun Microsystems, Inc. | System and method for pre-verification of stack usage in bytecode program loops |
US5748964A (en) * | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US6067575A (en) | 1995-12-08 | 2000-05-23 | Sun Microsystems, Inc. | System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs |
JP2000514584A (ja) * | 1996-10-25 | 2000-10-31 | シュルンベルジェ システーム | 高級プログラミング言語を用いたマイクロコントローラ |
US6575372B1 (en) * | 1997-02-21 | 2003-06-10 | Mondex International Limited | Secure multi-application IC card system having selective loading and deleting capability |
US6157966A (en) * | 1997-06-30 | 2000-12-05 | Schlumberger Malco, Inc. | System and method for an ISO7816 complaint smart card to become master over a terminal |
JPH1173328A (ja) * | 1997-08-29 | 1999-03-16 | Nec Corp | コーディング規約チェックシステム |
US6289502B1 (en) * | 1997-09-26 | 2001-09-11 | Massachusetts Institute Of Technology | Model-based software design and validation |
US6128774A (en) * | 1997-10-28 | 2000-10-03 | Necula; George C. | Safe to execute verification of software |
HUP0101368A3 (en) * | 1998-03-23 | 2004-04-28 | Ibm | Java runtime system with modified constant pool |
US6385729B1 (en) * | 1998-05-26 | 2002-05-07 | Sun Microsystems, Inc. | Secure token device access to services provided by an internet service provider (ISP) |
US6195774B1 (en) * | 1998-08-13 | 2001-02-27 | Xilinx, Inc. | Boundary-scan method using object-oriented programming language |
US6195700B1 (en) * | 1998-11-20 | 2001-02-27 | International Business Machines Corporation | Application protocol data unit management facility |
US6402028B1 (en) * | 1999-04-06 | 2002-06-11 | Visa International Service Association | Integrated production of smart cards |
-
1999
- 1999-11-12 US US09/439,645 patent/US6581206B2/en not_active Expired - Lifetime
-
2000
- 2000-11-10 EP EP00992501A patent/EP1236080A4/en not_active Withdrawn
- 2000-11-10 CN CNB008181969A patent/CN100351783C/zh not_active Expired - Lifetime
- 2000-11-10 AU AU45058/01A patent/AU775261B2/en not_active Expired
- 2000-11-10 CA CA002391313A patent/CA2391313A1/en not_active Abandoned
- 2000-11-10 WO PCT/US2000/042092 patent/WO2001040900A2/en active IP Right Grant
- 2000-11-10 JP JP2001542302A patent/JP4913302B2/ja not_active Expired - Lifetime
Non-Patent Citations (3)
Title |
---|
Compilers Principles,Tools and Techniques. Aha et al,1.388,Addison.Wesley Publishing Company. 1985 * |
JAVA. Tim Ritchey,326.346,New Riders Publishing. 1995 * |
The JAVA Virtual Machine Specification. Tim Lindholm et al,1.155,Addison.Wesley Publishing Company. 1996 * |
Also Published As
Publication number | Publication date |
---|---|
CA2391313A1 (en) | 2001-06-07 |
JP4913302B2 (ja) | 2012-04-11 |
US20020170033A1 (en) | 2002-11-14 |
AU775261B2 (en) | 2004-07-29 |
EP1236080A2 (en) | 2002-09-04 |
AU4505801A (en) | 2001-06-12 |
US6581206B2 (en) | 2003-06-17 |
EP1236080A4 (en) | 2007-10-03 |
WO2001040900A9 (en) | 2002-08-15 |
CN1678989A (zh) | 2005-10-05 |
WO2001040900A3 (en) | 2002-01-03 |
JP2003515857A (ja) | 2003-05-07 |
WO2001040900A2 (en) | 2001-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100351783C (zh) | 语言子集证实 | |
US20030135792A1 (en) | Language subset validation | |
CN1149470C (zh) | 一种分析面向对象的程序的执行的方法和设备 | |
CN1149478C (zh) | 从本地码有效调用Java方法的方法和设备 | |
CN1324467C (zh) | 基于标记的链接 | |
CN100342329C (zh) | 零开销异常处理 | |
CN1821964A (zh) | 将本机函数内嵌到编译的Java代码中的方法和系统 | |
CN1848088A (zh) | 将本机接口函数调用转换为更简单操作的方法和系统 | |
CN1630851A (zh) | 用于在预存储器执行环境中链接固件模块的方法和系统 | |
CN1823323A (zh) | 用于执行本机绑定的方法和装置 | |
US20110314459A1 (en) | Compiler with user-defined type inference rules | |
CN1648865A (zh) | 为记录事件提供前置与后置处理程序的方法与装置 | |
CN109814853A (zh) | 基于可视化的多平台数据生成方法、装置、设备及介质 | |
CN1855053A (zh) | 用于执行java虚拟机的指令的方法和设备 | |
WO2018032653A1 (zh) | 一种Java卡应用的功能实现方法及装置 | |
CN103718159A (zh) | 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序 | |
CN1265487A (zh) | 用于改进java方法调用速度的方法和装置 | |
CN1788251A (zh) | 处理安全消息认证控制指令 | |
CN110673851A (zh) | 一种智能合约运行方法、装置及电子设备 | |
CN1525317A (zh) | 在标记中用于定义和使用子级说明的系统和方法 | |
CN108664384B (zh) | 数据处理装置和数据处理方法 | |
CN112965721A (zh) | 基于Android的项目编译方法、装置、计算机设备及存储介质 | |
WO2003001374A2 (en) | Representation of java data types in virtual machines | |
US20020199176A1 (en) | Storing and retrieving of field descriptors in Java computing environments | |
CN117130721B (zh) | WebAssembly代码的执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20071128 |