CN100337198C - 一种移动通信设备应用程序处理系统 - Google Patents

一种移动通信设备应用程序处理系统 Download PDF

Info

Publication number
CN100337198C
CN100337198C CNB028150171A CN02815017A CN100337198C CN 100337198 C CN100337198 C CN 100337198C CN B028150171 A CNB028150171 A CN B028150171A CN 02815017 A CN02815017 A CN 02815017A CN 100337198 C CN100337198 C CN 100337198C
Authority
CN
China
Prior art keywords
module
class
main chain
chain connection
application program
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
Application number
CNB028150171A
Other languages
English (en)
Other versions
CN1592887A (zh
Inventor
戴维·P·亚切
约翰·F·A·达姆斯
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.)
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
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 Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of CN1592887A publication Critical patent/CN1592887A/zh
Application granted granted Critical
Publication of CN100337198C publication Critical patent/CN100337198C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)

Abstract

一种由一个或多个应用程序使用的预链接类的系统和方法。该系统和方法还可用于在主系统和目标系统之间拆分运行时间处理。在主系统至少装载和链接了几个类。从被链接的类至少产生了一个主链接模块。使该主链接模块可供运行于目标系统上的一个或多个应用程序的使用。

Description

一种移动通信设备应用程序处理系统
本申请要求于2001年5月30日提交的题为“在主系统和目标系统之间拆分运行时间处理机的方法”的、序列号为No.60/294,331的美国临时申请的优先权。序列号为No.60/294,331的美国临时申请的包括附图的全部公开在此作为参考而被整体引用。
技术领域
本发明涉及处理机运行时间环境的领域。特别地,本发明涉及一种在主系统和目标系统之间拆分运行时间处理机的方法,用于节约目标系统的资源。
背景技术
目前,现有技术的虚拟机是Sun Microsystems,Inc.Sun)的JavaTM虚拟机(JVM)。如在JavaTM虚拟机规范,Tim Lindhole,Frank YellinSun,Addision-Wesley Pub Co;ISBN:0201432943,第二版第4章中由类文件格式所规定的,Microsystems JavaTM技术的核心是其JavaTM虚拟机代码或字节码。
在SolarisTM、Win32、LinuxTM、Mac以及其他平台上,类文件字节码可用于Sun的JavaTM运行环境(JRE)中。典型地,利用诸如“javac”之类的JavaTM编译器,可以将用JavaTM编程语言所写的源代码编译为表示类文件格式的虚拟机字节码并利用JRE或适当的运行时间环境和处理机进行执行。
参考图1,一种分层的JRE架构方框图表示了Sun技术的几个方面。各种机构(100A和100B)给出了程序软件(110A和110B)字节码类文件。例如,编译器100A将软件110A编译为字节码类文件。可选择地,网络(web)浏览器可以使用软件“plugin”110B下载软件100B字节码类文件。
类文件中的字节码通常参考了几种其他的类,每一个类都有一个类文件。为此,软件(110A和110B)的实例提供了标准程序包120类文件作为可以被再使用的共享软件资源。JVM140获得类文件并执行软件(110A和110B)和标准程序包类文件120。
图中还示出了JRE142在其上运行的各种系统130。运行时间中的标准程序包定义了在应用编程器接口(API)中指定的特殊运行时间平台。
JavaTM2标准版(J2SE)是一种Sun参考平台API。他们还提供了包括由在JVM上运行的标准程序包集合构成的JRE的参考实现。应用程序开发者可以参考J2SE标准程序包类以JavaTM编程语言来编写应用程序并期望可以在符合运行时间系统的J2SE上运行其应用程序。还存在其他通过与J2SE相比较而定义的平台。例如,一种J2SE扩展集(superset),即JavaTM2企业版(J2EE)添加了其他特性。特别能引起人的兴趣的是一种J2SE子集,即JavaTM2微版(J2ME)。
尽管J2SE平台适合在诸如那些用SolarisTM、Win32、Mac、LinuxTM以及图1中的其他块130表示的系统上运行,J2SE并不适于在许多设备上运行。例如,标准J2SE程序包的类文件目前可以消耗16兆字节以上的磁盘空间,这就超出了许多设备的存储容量。
为了处理这个问题,Sun引入了与设备配置相关联的JavaTM2微版(J2ME)平台这一附加的虚拟机。
连接限制设备结构(CLDC)和K虚拟机(KVM)处理了对手持的存储器为128K到512K的小消费设备,并且当使用移动信息设备概要(profile)(MIDP)时可以为诸如蜂窝电话和双向寻呼机之类的设备提供应用环境。
连接设备配置(CDC)和C虚拟机(CVM)处理了新出现的,即存储器为2MB或更大的下一代消费设备,当使用基础概要时可以为下一代消费设备提供应用环境。
J2ME的优点在于当在前面所述的CLDC或CDC配置中使用J2ME时,在许多设备中存储的标准类程序包与J2SE相比要少一些。所以以不支持所有的J2SE特性为代价,J2ME在设备中占用较少的空间。
尽管JavaTM运行时间技术对于不同系统和设备来说是有效的,但即使J2ME平台利用去掉功能来处理设备有限的存储空间问题,仍然认为J2ME不足以解决这个问题,这是由于J2ME没有从事设备运行时间实现的效率。这样,存在着对优化目标设备运行时间的需求(以及其他需求)。
为了更好地理解本发明,下面给出有关Java运行时间技术的信息。根据Lindholm等人所著的Sun JVM规范§2.17.1节:“通过调用某些指定类主程序的方法并使其通过一个为字符串数组的单变量开始执行Java虚拟机,这引出了要被装载(§2.17.2)、链接(§2.17.3)到其他使用类型以及初始化(§2.17.4)的指定类”。所以,当开始图1中的JVM 140时,通过指定名称为“main”的类,可以装载类文件并在该类文件的静态主入口点开始执行字节码指令。此外,要链接和初始化由“main”类使用的参考类型,诸如类。依据被“main”类文件使用的其他类,为了装载和链接被使用的类文件,需要消耗大量的运行时间资源。
JavaTM运行时间技术需要运行时间系统在每一次指定执行“main”类时装载并链接所有所需的类文件,这会在诸如设备之类的目标系统引起资源的急剧消耗。
典型的JavaTM应用程序有至少一个包括静态主入口点的“main”类文件并可能有几个支持的类文件。
下面例子为JavaTM程序清单:
       public class Hello{
         public static void main(String[]a){
            System.out.println(“Hello!”);
            Bye.bye(a);
            }
       }
       public class Bye{
         public static void bye(String[]a){
            System.out.println(“Bye!”);
             }
       }
上述清单为两个类,即Hello和Bye,提供了源代码,可以用本领域技术人员熟悉的方式将每一个类编译为类文件格式,诸如用Hello.java文件和Bye.java文件代替各个类的源码并利用命令“javac Hello.javaBye.java”来得到Hello.class文件和Bye.class文件。
Hello类提供了一个静态主入口点,所以当开始JVM140时,适合将该类指定为“main”类。
参照图2,参考上面“Hello”程序的例子来考虑图1中运行时间的链接技术。多个类文件200可用于虚拟机140(图1中)。各个类文件均有被虚拟机140使用的符号信息以解析对其他被使用类文件的参考。
典型地,当开始JVM140时,首先将Hello.class文件210A作为指定文件装载在220A。接着JVM 140在被装载类220A的主入口点执行字节码指令。由于Hello类220A使用了几个标准程序包类,将用于被使用类的类文件装载并链接到Hello类220A。在220B装载Object.class文件210B并将其链接到210A Hello类。同样,分别在220C、220D和220装载String.class文件210C、System.class文件210D及其他Hello类使用的类文件210,并在230C、230D和230进行链接。Hello类还使用了Bye类(不是标准程序包类的支持类),所以会在220E装载Bye.class文件210E和在230E链接。
尽管没有在图中表示,每当分别在220装载、在230链接类文件210时,还要装载和链接任何装载类220使用的类文件。例如,在装载支持的Bye类220E的情况下,使用了许多与Hello类210A相同的类。依据装载Bye类220E和链接到230E的时间,Bye类220E可以不必装载由Hello类使用并装载的共用类的类文件210。然而,Bye 220A使用的所有类最终必须与Bye链接,这样Hello就可以使用支持的Bye类。这种情况与标准程序包类相似。
当指定的命令触发类文件的装载和链接以执行程序时,传统类文件210的装载(在220)和链接(在230)消耗了大量的运行时间资源并且会减慢“main”程序220的执行,这会在下文中参考图3A和3B进行讨论。
参考图3A和3B,给出了表示图2中运行时间链接技术的进一步流程图,特别表示了供选择的后解析。在310从诸如硬驱动或网络之类的类存储装置200装载“main”类。在315对该类进行核实与准备。如果在320推断出没有使用后解析,则在325链接和装载所有使用的类。不管在320是否使用了后解析,在330初始化“main”类。
在335从主入口点取出指令。如果在340确定取到的指令不包含未解析的参考,则在345执行取到的指令。然而,如果在340确定取到的指令包含了未解析的标识符参考,诸如参考了还没有被装载类的类,则如果在350确定没有使用后解析,则排除运行时间。如果在350推断出使用了后解析且没有在355装载被参考的类,则排除运行时间。然而,如果在350确定使用了后解析且可以装载被参考的类,则在345执行指令之前,在360装载被参考的类并解析该参考。如果在365推断出没有更多要执行的指令,则在335取下一条指令,否则虚拟机结束。
如果使用了后解析,则在执行主程序字节码的过程中,在360装载并链接几个类文件。作为选择,如果没有使用后解析,则在向JVM140指定“main”类文件之后,在执行主程序字节码之前,在325装载并链接几个类文件。无论哪种情况,都会在JVM140指定主程序运行时间执行的时刻和主程序或者被中断或排除的时刻之间引起用于装载和链接的资源急剧消耗。
所以,即使消除了后解析,在执行触发的链接和装载中,还会有用于装载和链接类文件的资源急剧消耗的潜在风险。
发明内容
本发明克服了上述及其他问题。根据本发明的教导,提供一种用于预链接由一个或多个应用程序使用的类的系统和方法。该系统和方法还可用于在主系统和目标系统之间拆分运行时间处理的情况。在主系统,至少装载和链接几个类。从被链接的类中至少产生一个主链接模块。使该主链接模块可供一个或多个运行于目标系统上的应用程序使用。
根据本发明的一个方面,提供一种用于执行应用程序的移动通信设备运行时间系统,包括:接收装置,用于接收包括已经被装载和链接的类的预链接模块,所述预链接模块具有被装载和链接的类文件的封闭集合的信息;执行装置,用于执行在移动通信设备上运行的应用程序,其中所述应用程序在应用程序的执行期间使用了类,所述应用程序在应用程序的执行期间接入所述预链接模块,由此消除了因包括被装载和链接的类的预链接模块的使用而造成在应用程序的执行期间应用程序重复装载和链接该类的需要,其特征在于,所述接收装置用于通过通信媒介从主系统接收所述预链接模块。
根据本发明的另一个方面,提供一种在目标系统处理主链接模块的方法,所述主链接模块由主系统通过装载至少几个类来产生,所述主系统在主系统链接装载的类,并从被链接的类形成至少一个主链接模块,所述方法包括:在目标系统接收主链接模块;确定是否有任意附加的类要被链接到主链接模块;如果链接了附加的类,则将主链接模块与附加的类链接,以形成目标链接模块;和允许在目标系统运行的应用程序使用目标链接模块,其特征在于,通过通信媒体从主系统接收所述主链接模块。
附图说明
为了更清楚地理解本发明,现在参照附图以举例方式详细说明本发明的实施例,其中:
图1所示为现有运行时间技术的方框图;
图2所示为图1中运行时间链接技术的方框图;
图3A和3B所示流程图进一步表示了图2中的运行时间链接技术,特别表示了任选的后解析;
图4和图5所示为一种拆分运行时间系统的例子的方框图;
图6和图7所示为不同的拆分运行时间系统的例子的方框图;
图8所示为用于一种拆分运行时间系统的链接技术的方框图;
图9所示为进一步表示图8中包括主链接步骤和目标链接步骤的链接技术的流程图;
图10所示为进一步表示图9中的主链接步骤的流程图;以及
图11所示为进一步表示图9中的目标链接步骤的流程图。
在不同图中,相同参考标号表示相同的单元。
具体实施方式
图4所示为一种基于模块的运行时间系统的实施例,处理机440执行包括已经被装载和链接的类的模块450,而不是未链接的类文件。更具体地讲,模块450包括在被装载和链接类文件的闭集中搜索到的信息,由此优化指令、符号信息、代码大小和目标处理机440的速度。模块450允许在主程序的多次执行中,运行时间再使用中间的装载和链接工作而不是在每次执行时重复这项工作。模块450提供了执行触发的装载和链接的选择。
编译器(或其他机构)405接收包括对其他类411的符号参考409的类文件407。编译器405处理字节码形式的类文件407和411,这样就解析了符号参考409。将被处理的类提供给处理机440作为模块450。通常,由于模块的大小实质上小于传统的运行时间类文件,所以处理机440在目标设备430运行效率更高,例如,与Java类文件大小相比,这里大约会减少到八分之一。此外,在多次执行之前,利用完整检验(sanity check)核实一次模块代码,由此可以提高后续的执行速度。可以将模块设计为能够使代码通信最小化,这在带宽有限的设备中特别有用。可以将模块450设计为能够使代码创建和执行时间最小,这在运行时间资源有限的设备中特别有用。如图5所示,当保持与参考API的兼容性时,模块450能够适用于现有的处理机运行时间。
图5示出了一个实施例,其中各个机构405A和405B提供软件410。编译器405A编译软件410,作为选择,可以用其它机构405B下载或否则获取软件410。软件420的实例提供标准类程序包420作为共享软件资源以便再使用。处理机440利用标准类程序包420获取类并执行软件410。
还示出了处理机440在其上运行的各种目标设备430,诸如移动设备430A、个人数据助理(PDA)430B、应用设备430C、瘦客户(thin client)430D或其他设备430E。
在图5中,在提供软件410的机构和执行机器代码的处理机440之间已经引入了模块450。然而,除非现在通过使用模块450而不是直接使用类文件来完成外,处理机440仍然使用提供的软件410中的类和标准类程序包420。类文件仍然可以被用作编译器,该编译器可以在其输入侧取得类文件和源文件,并在其输出侧生成模块。
由于模块450的出现,处理机440既不必成为虚拟机甚至也不需要知道类文件类型,由此通过消除对装载、链接和解析类文件的需要而在目标系统优化了性能。如图6所示,如果在主系统和目标设备430之间拆分提供的运行时间,可以实现进一步的优化。
图6所示为基于模块的运行时间系统拆分的实施例。在主系统530和目标设备430之间的类运行时间处理被拆分。模块的使用允许在主系统和目标设备之间有效地拆分运行时间以在目标设备优化运行时间效率。
在主系统拆分运行时间中,将类文件(407和411)在510主链接到主链接模块520。分析闭合类文件集的工作由主系统530承担。在目标系统拆分运行时间中,主链接模块520与主系统530在540进行通信以在550被目标链接到目标链接模块560。如果在目标系统430中需要任何额外的类解析,则需要额外地在550将目标模块标识符562与主链接模块520进行目标链接,以形成目标链接模块560。处理机440执行目标链接模块560。
图7所示为另一个拆分运行时间系统的示意图。对于主系统530,将类文件410在510主链接到主链接模块520。对于这个系统来说,下面将参考图8、9和10进一步详细说明主链接。对于目标系统430,在540,主链接模块520与主系统530进行通信以目标链接550到目标链接模块560。主机和目标之间的通信540可以在任何媒体上发生,以便可以向目标提供模块,例如如果目标为移动通信设备就通过移动通信网或通过嵌入在载波信号中的数据信号。下面将参考图8、9和11详细讨论目标链接。
参考图8,该方框图示出了类文件的装载,链接到模块的拆分,和前面图6和图7中给出的拆分模块运行时间的执行。分析封闭类文件集的工作被卸载到了主系统400A。在610装载类文件600并将其链接到主链接模块520A和520F。所示为作为例子“Hello”模块520A的应用程序模块,该模块520A包括在Hello.calss文件610A和Bye.calss文件610E中找到的优化信息,其中Hello类与Bye类被预链接。模块520A还有对Library模块520F的符号参考615,该Library模块520F包括所有的Hello和Bye类使用的标准程序包类,例如Object类文件610B、String类文件610C、System类文件610D以及其他的类文件610提供的类。Library模块520F可以输出(export)所有的公共符号,以使许多不同的“main”类,诸如Hello可以再使用所有的标准类程序包文件。作为选择,Library模块可以只包括Hello和Bye类使用的那些类文件,或者甚至于所有使用的类文件都直接包含在模块520A中。后一种情况会消除目标系统中任何符号解析的需要。
当至少一个主链接模块(520A和/或520F)为可供使用时,候选模块620A和620F可以在540与目标系统中的拆分运行时间进行通信。一但在目标系统接收到了候选模块(620A和620F),则将候选模块目标链接到目标链接模块560A和560F,并且如在630所示,解析所有的模块符号参考615。可以指定用于执行的主模块类,诸如Hello类640。然而其优势在于,每当执行Hello类的主程序时,不需要象目标链接630所提供的一样解析引用650。
参考图9,该流程图进一步示出了图8的链接技术,对主链接步骤和目标链接步骤进行了说明。在主机上的拆分运行时间系统中,在800装载类600并将其链接到主链接模块520。然后,将至少一个主链接模块520发送到了目标机上的拆分运行时间系统。
在目标机的拆分运行时间系统中,在720从主机接收至少一个候选主链接模块620。在900将候选主链接模块620目标链接到目标链接模块560。在730执行至少一个目标链接模块560。如果在740确定希望一个新的模块,则继续进行主链接处理800、通信处理(710和720)以及目标链接处理900循环。然而,如果不希望新的模块,则在730重复执行目标链接模块,而无需装载和链接的额外开销。
参考图10,该流程图进一步说明了图9的主链接步骤。在主机的拆分运行时间系统中,输出符号的主链接模块520在810提供外来模块标识符815。此外,类600在820提供候选主类825。利用外来模块标识符815,在830用模块参考代替候选主类825中的类参考,由此提供封闭集候选模块类835。然后,在840提供候选模块输出标识符845。接着在850核实候选模块类835和输出的标识符845。如果在860确定了核实,则在870提供候选主链接模块835作为主链接模块520。如果在860确定为未核实,则将其排除。
参考图11,该流程图进一步示出了图9中的目标链接步骤。在设备中的拆分运行时间系统中,接收到的候选模块620在910提供候选模块参考915。此外,目标链接模块560在920提供了目标模块标识符925。接下来,候选模块中的模块参考的解析在930提供了一个解析的模块935。在940核实该解析模块935,如果在950确定成功地核实了该解析模块935,则在960将该解析模块同其他的目标链接模块一起存储。然而,如果在950确定没有成功地核实该解析模块,则将其排除。
通过详细地说明包括优选操作模式的本发明的优选实施例,应该理解,可以利用不同的要素和步骤来构造并执行本发明。这里仅以例子的方式给出的实施例且并不意味着对本发明系统和方法的范围的限制,所述范围由权利要求确定。
下面将说明该系统和方法的广义范围。通常由软件来解译虚拟机代码。然而,可以使用硬件中的虚拟机代码处理器。本发明的范围包括硬件处理机运行时间的选择。作为本系统和方法广义范围的附加例子,通过使用系统和方法的模块,本系统和方法可用于命令、符号信息以及代码的优化。本系统和方法可用于实质上大小小于传统运行时间类文件的模块,例如在某些情况下与Java类文件相比,模块大小减少为其八分之一而不会丢失功能。利用在多次执行之前进行检查,该系统和方法可以提供可被核实的模块代码。
该系统和方法也可允许模块只与新类结合以使模块的存储规模最小,并可用于将有效模块送交至通信带宽有限的设备。作为该系统和方法广义范围的另一个例子,该系统和方法可以在资源有限的设备中结合所有需要的类,以使创建代码和执行时间最小。当保持了与引用API的兼容性时,该系统和方法还适用于已有的处理机运行时间。当最小化符号参考的数目时,本系统和方法可以提供能够动态链接到一起的模块。此外,与必须在执行之前从存储器中装载类文件不同,本系统和方法可以直接从设备的存储器提供在模块中能够执行的代码。

Claims (43)

1.一种用于执行应用程序的移动通信设备运行时间系统,包括:
接收装置,用于接收包括已经被装载和链接的类(407,411)的预链接模块(450,520),所述预链接模块(450,520)具有被装载和链接的类文件的封闭集合的信息;
执行装置(440),用于执行在移动通信设备上运行的应用程序,其中所述应用程序在应用程序的执行期间使用了类(407,411),
所述应用程序在应用程序的执行期间接入所述预链接模块(450,520),由此消除了因包括被装载和链接的类(407,411)的预链接模块(450,520)的使用而造成在应用程序的执行期间应用程序重复装载和链接该类(407,411)的需要,
其特征在于,
所述接收装置用于通过通信媒介从主系统(530)接收所述预链接模块(450,520)。
2.根据权利要求1所述的系统,其中:
所述主系统(530)产生所述预链接模块(450,520);
其中所述通信媒介是移动通信网络,所述预链接模块被通过所述移动通信网络提供给目标系统(430),
其中应用程序在该目标系统(430)上运行。
3.根据权利要求2所述的系统,其特征在于目标系统(430)包括用于将预链接模块(450,520)与由应用程序使用的其它模块进行目标链接的目标链接装置(550)。
4.根据权利要求1所述的系统,其特征在于预链接模块(450,520)优化命令、符号信息和代码。
5.根据权利要求1所述的系统,其特征在于类文件包含类并包括符号信息。
6.根据权利要求1所述的系统,其特征在于核实预链接模块(450,520)。
7.根据权利要求1所述的系统,其特征在于预链接模块(450,520)包括多个包含了应用程序所需的所有类的模块。
8.根据权利要求1所述的系统,其特征在于预链接模块(450,520)包括多个模块,所述模块被动态地链接从而使符号参考的数量最小。
9.根据权利要求1所述的系统,其特征在于应用程序在设备上运行,其中可直接从设备的存储器中执行预链接模块(450,520)。
10.根据权利要求9所述的系统,其特征在于在执行多个运行于设备上的应用程序时,预链接模块(450,520)提供了装载和链接步骤的再使用。
11.根据权利要求1所述的系统,其特征在于在执行应用程序之前产生预链接模块(450,520)。
12.根据权利要求1所述的系统,其特征在于基于代码创建和执行时间来构造预链接模块(450,520)。
13.根据权利要求1所述的系统,其特征在于应用程序在无线移动通信设备上运行。
14.根据权利要求1所述的系统,其特征在于应用程序在移动数据设备上运行。
15.根据权利要求1所述的系统,其特征在于应用程序在个人数据助理上运行。
16.根据权利要求1所述的系统,其特征在于应用程序在应用设备上运行。
17.根据权利要求1所述的系统,其特征在于应用程序在瘦客户应用程序上运行。
18.根据权利要求1所述的系统,其特征在于所述类包括基于Java的类。
19.一种在目标系统(430)处理主链接模块(520)的方法,所述主链接模块(520)由主系统(530)通过装载至少几个类(407,411)来产生,所述主系统(530)在主系统(530)链接装载的类(407,411),并从被链接的类(407,411)形成至少一个主链接模块(520),所述方法包括:
在目标系统(430)接收主链接模块(520);
确定是否有任意附加的类要被链接到主链接模块(520);
如果链接了附加的类,则将主链接模块(520)与附加的类链接,以形成目标链接模块(560);和
允许在目标系统(430)运行的应用程序使用目标链接模块(560),
其特征在于,
通过通信媒体从主系统(530)接收所述主链接模块(520)。
20.根据权利要求19所述的方法,其特征在于由于通过在主系统(520)链接被装载的类(407,411)来形成主链接模块(520),向目标系统(430)提供主链接模块(520)消除了目标系统解析与主链接模块(520)相关联的类。
21.根据权利要求19所述的方法,其特征在于由于通过在主系统链接被装载的类(407,411)来形成主链接模块(520),向目标系统(430)提供主链接模块(520)消除了目标系统(430)解析与主链接模块(520)相关联的类的需要。
22.根据权利要求19所述的方法,其特征在于目标系统(430)包括无线移动通信设备。
23.根据权利要求19所述的方法,其特征在于目标系统(430)包括用于执行应用程序的处理机(440)。
24.根据权利要求19所述的方法,其特征在于目标系统(430)包括用于执行应用程序的虚拟机。
25.根据权利要求19所述的方法,其特征在于目标系统(430)包括移动数据设备。
26.根据权利要求19所述的方法,其特征在于目标系统(430)包括个人数据助理。
27.根据权利要求19所述的方法,其特征在于目标系统(430)包括应用设备。
28.根据权利要求19所述的方法,其特征在于目标系统(430)包括瘦客户应用程序。
29.根据权利要求19所述的方法,其特征在于目标系统(430)包括处理主链接模块的虚拟机代码处理器。
30.根据权利要求19所述的方法,其特征在于目标系统(430)包括处理主链接模块(520)的硬件处理机运行时间。
31.根据权利要求19所述的方法,其特征在于所述类(407,411)包括基于Java的类。
32.根据权利要求19所述的方法,其特征在于在目标系统(430)上多次执行之前,在主系统(520)利用完整检验核实一次主链接模块(520)。
33.根据权利要求19所述的方法,其特征在于主链接模块(520)包括多个包含应用程序所需的所有类的模块。
34.根据权利要求19所述的方法,其特征在于主链接模块(520)包括多个模块,所述模块被动态链接从而使符号参考的数量最小。
35.根据权利要求19所述的方法,其特征在于可直接从目标系统(430)的存储器中执行主链接模块(520)。
36.根据权利要求19所述的方法,其特征在于主链接模块(520)在应用程序的多次执行中提供装载和链接步骤的再使用。
37.根据权利要求36所述的方法,其特征在于在生成主链接模块(520)的过程中,主系统(530)解析模块参考。
38.根据权利要求19所述的方法,其特征在于主链接模块(520)在应用程序和第二应用程序的多次执行中提供装载和链接步骤的再使用。
39.根据权利要求19所述的方法,其特征在于在执行应用程序之前产生主链接模块(520)。
40.根据权利要求19所述的方法,其特征在于根据与目标系统(430)的代码通信构造主链接模块(520)。
41.根据权利要求19所述的方法,其特征在于根据代码创建和执行时间构造主链接模块(520)。
42.根据权利要求19所述的方法,进一步包括步骤:
在目标系统(430)通过移动通信网络接收来自主系统(530)的主链接模块(520)。
43.根据权利要求19所述的方法,进一步包括步骤:
通过在主系统(530)中形成主链接模块(520)以及在目标系统(430)中将主链接模块(520)目标链接到至少一个目标链接模块(560)来拆分主系统(530)和目标系统(430)之间的处理机运行时间,以供应用程序使用。
CNB028150171A 2001-05-30 2002-05-30 一种移动通信设备应用程序处理系统 Expired - Lifetime CN100337198C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29433101P 2001-05-30 2001-05-30
US60/294,331 2001-05-30

Publications (2)

Publication Number Publication Date
CN1592887A CN1592887A (zh) 2005-03-09
CN100337198C true CN100337198C (zh) 2007-09-12

Family

ID=23132947

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028150171A Expired - Lifetime CN100337198C (zh) 2001-05-30 2002-05-30 一种移动通信设备应用程序处理系统

Country Status (12)

Country Link
US (2) US7493616B2 (zh)
EP (2) EP2244185B1 (zh)
JP (1) JP2005515520A (zh)
CN (1) CN100337198C (zh)
AT (1) ATE481677T1 (zh)
BR (2) BRPI0209761B1 (zh)
CA (1) CA2448962C (zh)
DE (1) DE60237718D1 (zh)
HK (1) HK1072299A1 (zh)
MX (1) MXPA03010975A (zh)
RU (1) RU2299463C2 (zh)
WO (1) WO2002097619A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2244185B1 (en) * 2001-05-30 2014-01-01 BlackBerry Limited A mobile communications device application processing system
US7941807B2 (en) * 2004-04-30 2011-05-10 International Business Machines Corporation Transitional resolution in a just in time environment
ATE437542T1 (de) * 2004-09-07 2009-08-15 Research In Motion Ltd Vorrichtung, system und verfahren zum testen eines geräts mit eingeschränkten ressourcen
DE102004058882A1 (de) * 2004-12-06 2006-06-08 Giesecke & Devrient Gmbh Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
US9183011B2 (en) * 2006-10-31 2015-11-10 Oracle America Inc. Method and system for runtime environment emulation
US8141042B2 (en) * 2007-03-06 2012-03-20 International Business Machines Corporation Extending portability of java code through the use of AOP
WO2011075825A1 (en) 2009-12-21 2011-06-30 Kik Interactive, Inc. Systems and methods for accessing and controlling media stored remotely
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
CN103034546B (zh) * 2012-12-17 2016-08-24 北京奇虎科技有限公司 iOS系统中应用程序间通信的方法及装置
CN103870316B (zh) * 2014-04-11 2016-09-07 烽火通信科技股份有限公司 一种智能操作系统上的java虚拟机实现方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2267477A1 (en) * 1999-03-30 2000-09-30 Object Technology International Inc. Packaging memory image files

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
US5249218A (en) 1992-04-06 1993-09-28 Spectrum Information Technologies, Inc. Programmable universal interface system
US5561800A (en) * 1993-05-19 1996-10-01 Hewlett-Packard Company Method and apparatus for incrementally linking modified routines into software
US5613120A (en) * 1994-10-20 1997-03-18 Silicon Graphics, Inc. System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program
CA2143488C (en) * 1995-02-27 2000-01-11 Robert Paul Duncan Dynamic link libraries without linker or loader support
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
FI106175B (fi) 1997-08-18 2000-11-30 Nokia Mobile Phones Ltd Datansiirto matkaviestinverkossa
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
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
US6654954B1 (en) * 1998-02-17 2003-11-25 International Business Machines Corporation Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
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
US6493870B1 (en) * 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging a program for remote execution
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
FI110987B (fi) 1998-03-31 2003-04-30 Nokia Corp Menetelmä tiedonsiirtovirtausten kytkemiseksi
US6061520A (en) * 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US6260187B1 (en) * 1998-08-20 2001-07-10 Wily Technology, Inc. System for modifying object oriented code
DE19840029C1 (de) 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
JP2000122876A (ja) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd 情報処理装置
US6230184B1 (en) * 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
US6618855B1 (en) 1999-05-27 2003-09-09 Sun Microsystems, Inc. Caching untrusted modules for module-by-module verification
US6618769B1 (en) * 1999-05-27 2003-09-09 Sun Microsystems, Inc. Module-by-module verification
JP2001051853A (ja) 1999-08-06 2001-02-23 Matsushita Electric Ind Co Ltd リンク装置および仮想マシン
GB9921721D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
FR2801118B1 (fr) * 1999-11-17 2001-12-21 Bull Cp8 Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
US6810519B1 (en) * 2000-09-29 2004-10-26 International Business Machines Corporation Achieving tight binding for dynamically loaded software modules via intermodule copying
EP2244185B1 (en) * 2001-05-30 2014-01-01 BlackBerry Limited A mobile communications device application processing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2267477A1 (en) * 1999-03-30 2000-09-30 Object Technology International Inc. Packaging memory image files

Also Published As

Publication number Publication date
MXPA03010975A (es) 2004-03-26
EP2244185A1 (en) 2010-10-27
CN1592887A (zh) 2005-03-09
DE60237718D1 (de) 2010-10-28
WO2002097619A3 (en) 2004-10-28
CA2448962C (en) 2009-10-06
WO2002097619A2 (en) 2002-12-05
BR0209761A (pt) 2006-02-07
BRPI0209761B1 (pt) 2018-04-03
EP1497717B1 (en) 2010-09-15
BRPI0209761A8 (pt) 2018-02-14
EP1497717A2 (en) 2005-01-19
US8627316B2 (en) 2014-01-07
CA2448962A1 (en) 2002-12-05
HK1072299A1 (en) 2005-08-19
JP2005515520A (ja) 2005-05-26
RU2299463C2 (ru) 2007-05-20
RU2003134647A (ru) 2005-05-27
US20040148613A1 (en) 2004-07-29
ATE481677T1 (de) 2010-10-15
US7493616B2 (en) 2009-02-17
EP2244185B1 (en) 2014-01-01
US20090210877A1 (en) 2009-08-20

Similar Documents

Publication Publication Date Title
CN1171147C (zh) 自动的承接软件/适配器生成器
CN1306399C (zh) 用于网络处理器的虚拟机
US8595742B2 (en) Executing a distributed java application on a plurality of compute nodes in accordance with a just-in-time compilation history
CN1149470C (zh) 一种分析面向对象的程序的执行的方法和设备
US8627316B2 (en) Mobile communications device application processing system
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
CN1150451C (zh) 零开销异常处理
US20090271784A1 (en) Executing A Distributed Java Application On A Plurality Of Compute Nodes
US8887131B2 (en) Optimized code generation by eliminating unused virtual function
CN1119756C (zh) 用于进行静态初始化的方法和系统
US20130091496A1 (en) Optimizing just-in-time compiling for a java application executing on a compute node
EP1011043A2 (en) Method and apparatus for loading a java application program
US7765527B2 (en) Per thread buffering for storing profiling data
CN1885264A (zh) 用于嵌入式系统的软件包构建方法和系统
CN1781077A (zh) 选择性地加载用于在Java微型设备中调试Java应用程序的远程类或资源
CN1359491A (zh) 用于资源受限装置的面向对象的指令集
US20040003377A1 (en) Converting byte code instructions to a new instruction set
US20090125883A1 (en) Node selection for executing a java application among a plurality of nodes
CN1265487A (zh) 用于改进java方法调用速度的方法和装置
CN100337216C (zh) 一种软件测试方法
CN1129846C (zh) 程序执行方法
CN100344098C (zh) 一种智能业务的实现方法
CN1932760A (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
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20070912

CX01 Expiry of patent term