选择性地加载用于在Java微型设备中调试Java应用程序的远程类或资源的系统和方法转让专利

申请号 : CN200480011187.X

文献号 : CN1781077B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : P·H·尼科尔斯J·李J·罗思

申请人 : 索尼爱立信移动通讯股份有限公司

摘要 :

通过选择性地将在Java微型设备中调试Java应用程序期间使用的Java类和/或Java资源文件子集从主计算机加载该设备中,从而在该Java微型设备中对Java应用程序进行调试,该子集是从主计算机中的Java类和/或Java资源文件的集合中自动选择的。因此,可以减少或消除在开始调试时就加载含所有类和/或资源的可能巨大的JavaARchive(JAR)文件的需要。本发明还可用于从主计算机加载在设备上调试应用程序期间使用的模块。

权利要求 :

1.一种Java 2微型版J2ME设备,包括:

千字节虚拟机KVM,被配置为运行至少一个应用程序;以及

设备外类/资源加载器,它被配置为选择性地将在所述J2ME设备中调试所述Java应用程序期间使用的Java类和/或Java资源文件子集从主计算机加载到所述J2ME设备中,所述子集是从所述主计算机中的Java类和/或Java资源文件的集合中自动选择的,其中所述设备外类/资源加载器还配置成在所述J2ME设备上安装Java ARchive(JAR)文件。

2.如权利要求1所述的J2ME设备,其中所述设备外类/资源加载器还被配置为在调试所述Java应用程序期间引用Java类和/或Java资源文件时,将它们从所述主计算机加载到所述J2ME设备中。

3.如权利要求1所述的J2ME设备,其中所述设备外类/资源加载器还被配置为将在所述主计算机确定的在调试所述Java应用程序期间使用的所述Java类和/或Java资源文件子集从所述主计算机加载到所述J2ME设备中。

4.如权利要求2所述的J2ME设备,其中所述设备外类/资源加载器还被配置为:在所述J2ME设备中调试所述Java应用程序直到Java类和/或Java资源文件被引用;

从所述主计算机请求所述Java类和/或所述Java资源文件;

将从所述主计算机请求的所述Java类和/或所述Java资源文件加载到所述J2ME设备中;以及利用加载到所述J2ME设备中的所述Java类和/或所述Java资源文件继续在所述J2ME设备中调试所述Java应用程序。

5.如权利要求4所述的J2ME设备,其中所述设备外类/资源加载器还被配置为在所述J2ME设备上安装空的JAR文件。

6.如权利要求1所述的J2ME设备,

其中所述设备外类/资源加载器响应于所述J2ME设备的开发模式。

7.如权利要求6所述的J2ME设备,还包括:

设备上类/资源加载器,它被配置为在部署模式期间使用预先安装在所述J2ME设备上的Java类和/或Java资源文件。

8.一种用于在Java 2微型版(J2ME)设备中对Java应用程序进行调试的系统,包括:主计算机;

所述主计算机上的集成开发环境(IDE);以及

设备外类/资源加载器,它被配置为选择性地将在所述J2ME设备中调试所述Java应用程序期间使用的Java类和/或Java资源子集从所述主计算机加载到所述J2ME设备中,该子集是从所述主计算机中的Java类和/或Java资源文件的集合中自动选择的,其中所述设备外类/资源加载器还配置成在所述J2ME设备上安装Java ARchive(JAR)文件。

9.如权利要求8所述的系统,其中所述设备外类/资源加载器还被配置为在调试所述Java应用程序期间引用Java类和/或Java资源文件时,将它们从所述主计算机加载到所述J2ME设备中。

10.如权利要求8所述的系统,其中所述设备外类/资源加载器还被配置为确定将在调试所述Java应用程序期间使用的所述Java类和/或Java资源文件子集,以及将确定的所述Java类和/或Java资源文件子集加载到所述J2ME设备中。

11.如权利要求9所述的系统,其中所述设备外类/资源加载器还被配置为:在所述J2ME设备中调试所述Java应用程序直到Java类和/或Java资源文件被引用;

将引用的所述Java类和/或所述Java资源文件从所述主计算机加载到所述J2ME设备中;以及利用加载到所述J2ME设备中的所述Java类和/或所述Java资源文件继续在所述J2ME设备中调试所述Java应用程序。

12.如权利要求11所述的系统,其中所述设备外类/资源加载器还被配置为在所述J2ME设备上安装空的JAR文件。

13.如权利要求10所述的系统,其中所述设备外类/资源加载器还被配置为通过如下步骤确定将在所述调试期间使用的所述Java类和/或Java资源文件子集:获得用于调试所述Java应用程序的入口点类;以及

递归地确定所述调试Java应用程序期间从所述入口点类引用的另外的Java类和/或资源文件,同时排除预先安装在所述Java设备中的另外的Java类和/或资源文件。

14.如权利要求13所述的系统,其中所述设备外类/资源加载器还被配置为通过如下步骤从所述主计算机将确定的所述Java类和/或Java资源文件子集加载到所述J2ME设备中:在所述J2ME设备上安装Java ARchive(JAR)文件;以及将除了预先安装在所述J2ME设备中的另外的Java类和/或Java资源文件以外的所述入口点类和递归确定的另外的Java类和/或Java资源文件加载到所述J2ME设备中。

15.如权利要求10所述的系统,其中所述系统还包括所述主计算机上的仿真器,并且其中所述设备外类/资源加载器还被配置为通过如下步骤确定所述调试期间将使用的所述Java类和/或Java资源文件子集:在所述仿真器上调试所述Java应用程序;以及

在所述主计算机确定在所述主计算机的所述仿真器上调试所述Java应用程序期间使用的所述Java类和/或Java资源文件子集。

16.如权利要求15所述的系统,其中所述设备外类/资源加载器还被配置为:在所述J2ME设备上安装Java ARchive(JAR)文件;以及将在所述仿真器上调试所述Java应用程序期间使用的所述Java类和/或Java资源文件子集加载到所述J2ME设备中。

17.一种用于在Java 2微型版(J2ME)设备中对Java应用程序进行调试的系统,包括:主计算机;以及

用于选择性地将在所述J2ME设备中调试所述Java应用程序期间使用的Java类和/或Java资源文件子集从所述主计算机加载到所述J2ME设备中的部件,所述子集是从所述主计算机中的Java类和/或Java资源文件的集合中自动选择的,所述部件还配置成在所述J2ME设备上安装Java ARchive(JAR)文件。

18.如权利要求17所述的系统,其中用于所述选择性地加载的部件包括用于在调试所述Java应用程序期间引用Java类和/或Java资源文件时,将它们从所述主计算机加载到所述J2ME设备中的部件。

19.如权利要求18所述的系统,其中用于所述选择性地加载的部件包括:用于在所述主计算机确定在调试所述Java应用程序期间使用的所述Java类和/或Java资源文件子集的部件;以及用于从所述主计算机加载所确定的所述Java类和/或Java资源文件子集到所述J2ME设备中的部件。

说明书 :

选择性地加载用于在Java微型设备中调试Java应用程序

的远程类或资源的系统和方法

发明领域

[0001] 本发明涉及利用Java的数据处理方法、系统和计算机程序产品,更具体地说,涉及调试Java应用程序的系统、方法和计算机程序产品。
[0002] 发明背景
[0003] Java是一种功能全面的面向对象编程语言。因此,Java程序(应用程序)通过建立彼此交互作用的软件部件的结构化集合而产生期望效果。这些部件称为对象,并且可以安排在对象类体系结构中,对象类也简称为类。Java程序不是直接在计算机的操作系统上运行,而是在Java虚拟机(JVM)上运行,该Java虚拟机本身就是在计算机操作系统上运行的程序。由于Java的面向对象特性及JVM的标准化,Java程序可提供“一旦编写,随地运行”(WORA)的能力。Java是计算机领域技术人员众所周知的,不必在本文中进一步描述。 [0004] 由于Java的使用扩展了,它已经延伸至更大和更小规模的平台。因此,Java现在扩展到超出用于服务器和个人计算机的Java 2平台标准版(J2SE),扩展到了Java 2平台企业版(J2EE),这是一个用于开发、建立和部署企业应用程序的平台无关的以Java为中心的环境,以及扩展到了Java 2平台微型版(J2ME),它允许开发者使用Java来建立用于无线、移动以及诸如个人数字助理、机顶盒、嵌入设备以及移动电话等消费设备的应用程序。 [0005] 在J2ME中,JVM经常被称为千字节虚拟机(KVM),以指示其尺寸小。J2ME移动信息设备简表(MIDP)允许开发者为J2ME设备编 写可下载应用程序和服务。这些应用程序和服务常常称为MIDlet。
[0006] J2ME的设计和操作在例如Sun Microsystems公司于2002发布的题为“Java 2 Platform,Micro Edition”的数据表中进行了概括。此外,可以理解,在本文中所用的术语“J2ME”用于表示利用Java微型版(Micro Edition)的任何存储受限设备。 [0007] 许多供应商提供Java集成开发环境(IDE),作为软件开发者软件包(SDK)的一部分或者与之联合。IDE也可以与SDK分开提供。如图1所示,IDE110可在主计算机上运行,主计算机在本文中也简单地称为主机120,主机120可包括个人计算机或工作站,并且与仿真器130接口。IDE110还可以与其中包括KVM150和一个或多个应用程序(MIDlet)160的实际J2ME设备140接口。主机120和J2ME设备140之间的连接170可以是有线和/或无线的。IDE110和仿真器130之间的接口112称为统一仿真器接口(UEI)。可以通过有线和/或无线连接170在J2ME设备140上的KVM150和IDE110之间提供接口。
[0008] 如本领域技术人员众所周知的,在设计应用程序(MIDlet)160时,可能希望在设计阶段期间和/或之后对应用程序进行调试。许多调试技术都是本领域技术人员熟知的,因此不必在本文中描述。事实上,IDE110通常提供利用仿真器130对应用程序的源级调试。遗憾的是,为了成功地调试一个应用程序160,可能需要为要编写的用于各J2ME设备140的应用程序160提供一个新的仿真器130。此外,可能希望在J2ME设备140本身中的KVM150上调试应用程序160。但是,KVM150的有限尺寸可能使将调试程序加载到J2ME设备中非常费时。此外,KVM150的有限尺寸在一些情况下可使在J2ME设备140上运行调试程序不可能。开发者还知道要将所选文件打包以便在J2ME设备140上加载。
[0009] 发明概述
[0010] 本发明的实施例可通过选择性地将在J2ME设备中调试Java应用程序期间使用的Java类和/或Java资源文件子集从主计算机加载到J2ME设备中,以便在该J2ME设备中对Java应用程序进行调试,所述子集是从主计算机中的Java类和/或Java源文件的集合中自动选择的。因此,可以减少或消除在开始调试时就加载包含J2ME类和/或资源的整个集合的可能巨大的Java ARchive(JAR)文件的需要。事实上,在本发明的一些实施例中,仅仅在调试Java应用程序期间使用的那些类/源可以自动地从主计算机加载到J2ME设备中。 [0011] 在一些动态实施例中,在调试所述应用程序期间引用Java类和/或Java资源文件时将它们从主计算机加载到J2ME设备中。在特定实施例中,在J2ME设备上安装JAR文件,并且一些实施例中,在J2ME设备上安装空的JAR文件。Java应用程序在J2ME设备中进行调试,直到Java类和/或Java资源文件被引用。从主计算机请求Java类和/或Java资源文件,并将其加载到KVM中。然后,利用加载到KVM中的Java类和/或Java资源文件在J2ME设备中继续调试Java应用程序。在调试期间引用新的Java类和/或新的Java资源文件时,可以依次重复执行请求Java类和/或Java资源文件,加载所请求的类和/或资源文件并继续调试的操作。
[0012] 在其它静态实施例中,自动地在主计算机确定调试期间使用的所述Java类和/或Java资源文件子集,并自动地将该子集从主计算机加载到J2ME设备中。更具体地说,在一些实施例中,获得调试Java应用程序的入口点类。递归地确定在调试期间从入口点类引用的其它Java类和/或Java资源文件。预先安装的类/源列表用于排除在J2ME设备中预先安装的那些另外的Java类和/或Java资源文件。然后,在J2ME设备上安装JAR文件,并且将除了J2ME设备中预先安装的另外的Java类和/或Java资源文件之外的入口点类和递归确定的另外的Java和/或Java资源文件加载到KVM中。
[0013] 在其它混合实施例中,可以组合如上所述的动态实施例和静态 实施例的各方面。例如,在主计算机自动地确定调试期间使用的所述Java类和/或Java资源文件子集中的一些,并且将其从主计算机加载到J2ME设备中,如以上所述。然后,在调试Java应用程序期间,如果引用的是没有加载到KVM中的Java类和/或Java资源文件,则将引用的Java类和/或Java资源文件从主计算机加载到J2ME设备中。还可以提供其它混合实施例。 [0014] 在本发明的其它实施例中,在调试Java应用程序期间使用的所述Java类和/或Java资源文件子集在J2ME设备处于开发模式时自动地从主计算机加载到J2ME设备中。相反,在部署模式下,使用预先安装在J2ME设备中的Java类和/或资源文件。 [0015] 以上主要就方法方面描述了本发明的实施例。但应理解,本发明的实施例还可以提供用于在J2ME设备中调试Java应用程序的系统和/或计算机程序产品,以及还可提供用于J2ME设备的IDE以及J2ME设备本身。此外,尽管已就J2ME设备中的MIDlet调试对本发明的实施例进行了描述,但本发明的实施例还可以应用于在任何Java设备,即运行Java的任何设备中调试Java应用程序。最后,本发明的其它实施例可用于调试在设备中运行的任何应用程序,无论该应用程序是Java应用程序、另一种面向对象编程的应用程序或常规的功能应用程序。设备可以是Java设备、利用非Java的面向对象编程系统操作的设备或利用常规功能编程的设备。因此,本发明的实施例可用于使用其它编程语言的代码模块(如对象、库、子程序、类等)的设备外加载,其它编程语言例如为在普遍的、个人的、应用和/或企业设备上运行的C、C++、PERL、NET。
[0016] 附图简述
[0017] 图1是常规J2ME调试环境的方块图。
[0018] 图2是根据本发明的实施例,用于在J2ME设备中调试Java应用程序的系统、方法和计算机程序产品。
[0019] 图3-8是根据本发明的各种实施例,可执行以在J2ME设备中调试Java应用程序的操作的流程图。
[0020] 图9和10是说明根据本发明的实施例,在J2ME设备中调试Java应用程序的实例的流程图。
[0021] 详细说明
[0022] 随后,将在下面参考显示本发明的实施例的附图更完整地描述本发明。然而,本发明可以许多替代形式实施,并且不应将本发明视为限于本文所述的实施例。 [0023] 因此,虽然本发明可以进行各种修改并采取各种备选形式,但附图中仅例示了本发明的一些特定实施例,并且本文将对这些特定实施例进行详细描述。但是,应该理解,并不打算将本发明限制于所公开的特定形式,而是相反,本发明要涵盖属于权利要求所定义的本发明的精神和范围的所有修改、等效物及替代形式。附图描述中,相同的附图标记表示相同的部件。
[0024] 下面参考根据本发明的实施例的方法、装置(系统)和/或计算机程序产品的方块图和/或流程图对本发明进行描述。应该理解,方块图和/或流程图中的各个方块以及方块图和/或流程图中方块的组合,可以用计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机和/或其它可编程数据处理装置的处理器,以产生一个机器,使得通过计算机和/或其它可编程数据处理装置的处理器执行的指令建立用于实现一个/多个方块图和/或流程图方块中指定的功能动作的部件。
[0025] 这些计算机程序指令也可以保存在计算机可读存储器中,其可控制计算机或其它可编程数据处理设备以特定方式发挥作用,使得保存在计算机可读存储器中的指令产生一个产品,该产品包括实现一个/多个方块图和/或流程图块中指定的功能/动作的指令。 [0026] 计算机程序指令还可以加载到计算机或其它可编程数据处理装 置中,导致在计算机或其它可编程设备上执行一系列操作步骤,以产生一个计算机实现的过程,使得在计算机和/或其它可编程数据处理设备上执行的指令提供实现一个/多个方块图和/或流程图方块中指定的功能/动作的步骤。
[0027] 还应注意,在一些备选实现方案中,方块中给出的功能/动作可能以与流程图所示不同的顺序发生。例如,顺序显示的两个方块事实上可基本上同时执行,或者这些方块有时可以相反的顺序执行,具体取决于所涉及的功能/动作。
[0028] 图2是根据本发明的各种实施例,可用于在J2ME设备240中调试Java应用程序或MIDlet260的系统、方法和/或计算机程序产品的方块图。主机220包括其上的IDE210。接口可用于在主机220和J2ME设备240之间提供用于调试的有线和/或无线连接270。应用程序(MIDlet)260在J2ME设备240上的KVM250上运行。此段落中描述的部件的设计和操作是本领域技术人员所熟知的,不需要在本文中进一步描述。
[0029] 仍参考图2,根据本发明的实施例,可以提供伪仿真器230,它可利用UEI接口212与IDE210接口。主机设备外类/资源加载(或加载器)功能280可以添加到伪仿真器230中,并且设备设备外类/资源加载(或加载器)功能290可以添加到J2ME设备240中。主机设备外类/资源加载(或加载器)功能280可以设在一个或多个模块和/或电路中,作为SDK的一部分,并且可以至少部分地集成在IDE210和/或伪仿真器230中,或者可包括与IDE210和/或仿真器230接口的一个或多个分离的模块和/或电路。类似地,在J2ME设备240上,设备设备外类/资源加载(或加载器)功能290可以设在一个或多个模块和/或电路中,至少部分集成在KVM250和/或应用程序260中,或者可包括一个或多个分离的模块和/或电路。
[0030] 图3是根据本发明的一些实施例,可执行以在诸如J2ME设备240的J2ME设备中调试诸如应用程序260的Java应用程序的操作的流 程图。可以理解,这些操作可以通过图2的主机设备外类/资源加载功能280和/或设备设备外类/资源加载功能290执行。如图3所示,在方块320中,设备外类/资源加载310可以通过选择性地将在J2ME设备240中调试Java应用程序期间使用的Java类和/或Java资源文件子集从诸如主机220的主计算机加载到J2ME设备中来提供,所述子集是从主机220中的Java类和/或Java资源文件的集合中自动选择的。因此,可以减少加载时间,并且调试可以在一个小的KVM250上成功地执行。
[0031] 图4和5是说明图3的块320的其它实施例的流程图。具体地说,如图4所示,在动态实施例320′中,仅仅在方块410中调试Java应用程序260期间引用Java类和/或Java资源文件时,才将它们从主计算机220加载到J2ME设备240中。或者,如图5所示,在静态实施例320″中,在方块510,在主机220自动地确定将在调试Java应用程序期间使用的Java类和/或Java资源文件子集。然后,在方块520,将在方块510自动确定的所述Java类和/或Java资源文件子集从主机220加载到J2ME240设备中。还可以提供组合图4和5的各方面的混合实施例。图4和/或图5的实施例还可以在“每类/文件”的基础上执行和/或针对多类和/或文件执行。可以理解,应用程序中的一些程序结构可旁路掉静态确定运行时可能引用哪些类的能力。因此,图5的实施例可能不能够自动地确定将引用的所有类/资源文件。因此可以采用混合实施例。
[0032] 图6是可用于在调试Java应用程序期间引用Java类和/或Java资源文件时,将它们从主计算机加载到J2ME设备中的操作的流程图,它可对应于图4的方块410。如方块610所示,在J2ME设备上安装空的JAR文件。如本领域技术人员所熟知的,JAR文件使开发者能够将多个文件捆绑为单个档案文件。通常,JAR文件会包含与应用程序关联的类文件和辅助资源。在方块620,在J2ME设备240中调试Java应用程序,直到引用Java类和/或Java资源文件。在方 块630,从主计算机220请求Java类和/或Java资源文件。在方块
640,将从主计算机220请求的Java类和/或Java资源文件加载到KVM中。在方块650,在J2ME设备240中利用加载到KVM中的Java类和/或Java资源文件继续调试。 [0033] 仍继续对图6的描述,在一些实施例中,在方块660,确定调试期间是否引用另一个Java类和/或Java资源文件。如果这样,则重复块630、640和650的操作直到不再需要Java类或资源文件或者调试结束。因此,在调试期间引用Java类和/或Java资源文件时,可以依次重复执行块630、640和650的操作。
[0034] 图7是可用于在主计算机220确定在调试期间将使用的Java类和/或Java资源文件子集的操作的流程图,其可对应于图5的方块510。如图7所示,在方块710,获得用于调试Java应用程序的入口点类。然后,在方块720,递归地确定在调试Java应用程序期间从入口点类引用的另外的Java类和/或Java资源文件,从而确定引用的另外的类/资源文件和所述另外的类/资源文件引用的另外的类/资源文件等。在方块730,排除预先安装在J2ME设备中的另外的Java类和/或资源文件。可以理解,方块730的操作可以与方块720的操作同时执行和/或在其之后执行。因此,除了预先安装的那些Java类/资源之外,可以在方块520将递归确定的要在调试期间引用的Java类和/或资源从主机加载到J2ME设备中。具体地说,在一些实施例中,通过在J2ME设备上安装JAR文件执行加载,并且除预先安装的另外的Java类/资源以外,将递归确定的另外的类/资源文件加载到J2ME设备上的JAR文件中。
[0035] 可以理解,在一些实施例中,方块510和图7的操作可以利用主计算机220上的伪仿真器230执行,以便可以在主计算机220确定类和/或Java资源子集。然后,将这些Java类和/或Java资源文件加载到J2ME设备240中。还可以理解,可以根据本发明的其它实施例提供图3-7的组合和子组合。
[0036] 图8是根据本发明的实施例,可用于集成J2ME设备的开发和部署模式的操作的流程图。如图8所示,在方块810,利用常规技术在J2ME设备240中选择设备模式。如果在方块810选择了开发模式,那么执行根据本发明的实施例的方块320的操作,以便选择性地将在J2ME设备中调试Java应用程序期间使用的Java类和/或Java资源文件子集从主计算机加载到J2ME设备中,该子集是从主计算机中的Java类和/或Java源文件的集合中自动选择的。可以理解,在开发模式中应用程序可以由开发者运行和/或调试。相反,如果进入了部署模式,那么在方块820,预先安装的Java类和/或Java资源文件用于在设备的部署模式期间运行应用程序。因此,设备外类加载用于开发模式,而设备上类加载用于部署模式。因此,在本发明的一些实施例中,JVM上的类加载器可加以修改,以便在开发模式期间从主机得到文件,但在部署模式期间从J2ME设备自己的文件系统得到文件。 [0037] 现在将对本发明的实施例作进一步讨论。在本发明之前,当执行对Java应用程序160的设备上源级调试时,主机120常常将所有的类和其它资源文件封装在一个CLASSPATH中,由Java IDE110通过UEI接口传递。本领域技术人员所熟知的是,CLASSPATH是JVM上的一个环境变量,它指示Java类和其它资源文件所处的位置。它列出含编译的Java类的目录的名称。JAR文件包含Java类和/或资源本身。因此,此单个JAR文件的尺寸通常非常大。尺寸可以约为1Mb或更大的大JAR文件随后会安装在J2ME设备上。此安装可花费大量时间,例如大概几分钟,这可能使得设备上调试对Java开发者而言不可用。此外,在许多情形下,JAR文件完全超过J2ME设备的存储容量,因此不会成功加载。在其它情形中,开发者可人工将调试期间可能需要的类/资源打包。但是,开发者的选择可引入错误。 [0038] 本发明的一些实施例可基于这样的实现:CLASSPATH可包括可能不需要的额外的库文件,但是Java IDE不会知道哪些类将用于 调试Java应用程序。这个问题不局限于Java类,因为它还影响Java资源文件,比如可能包括在CLASSPATH中的图像、音频文件和/或任何其它数据文件。
[0039] 但是,利用根据本发明的动态实施例的设备外类加载,运行J2ME设备240的KVM250开始运行并调试MIDlet(应用程序)260,而不需要预先加载Java类和/或资源文件到J2ME设备中。不是将CLASSPATH内容打包到可能巨大的JAR文件中,而是将空的JAR文件安装在J2ME设备240中,并且将入口点类(扩展MIDlet的类)的名称传递到KVM250。然后,KVM250开始运行Java应用程序260,并且当它需要加载类或资源文件时,它向通过串口、红外线、蓝牙和/或其它有线和/或无线接口270连接的主机220上运行的IDE210发出请求与主机。主机220保持原始CLASSPATH的副本,定位请求的文件或者资源,然后将文件传送给J2ME设备240。这样,在一些实施例中,仅将调试期间KVM250所需要的文件传送到J2ME设备。因此,可能的是,迅速地利用支持UEI接口的Java IDE执行设备上调试会话。
启动时间可以显著降低。
[0040] 在本发明的静态实施例中,如例如图4所示,灵活CLASSPATH打包器可从UEI CLASSPATH和入口点类开始。从这个入口点类开始,主机设备外类/资源加载功能280通过检查类文件和寻找引用的类来确定哪些类被引用。以递归的方式,可以检查每个新引用的类,以确定它引用哪些类。因此,建立运行/调试MIDlet260所需的所有类的列表或子集。灵活CLASSPATH打包器还可以从这个列表中排除已知为预先安装在例如特定J2ME设备的只读存储器(ROM)中的所有类。由此,可以建立一个短的类文件类列表,并将这个列表用于建立较小的JAR文件。CLASSPATH中的所有资源文件(非类文件)也可包含到该JAR文件中。确定会需要哪些资源文件的一种技术是在伪仿真器230中实际运行/调试应用程序。
此外,资源集合可以是动态的,因为它可取决于在应用程序运行/调试 时执行哪些代码路径。
[0041] 现在将提供本发明的一些实施例的其它细节。图9是一个特定操作实例的流程图,可执行这些操作以便在调试应用程序期间引用Java类和/或Java资源文件时,将它们从主计算机220加载到J2ME设备240中(如例如图3的方块410所示),并具体说明了可在图6中执行的操作。
[0042] 如图9所示,IDE在操作910发起调试操作,并且在操作920将空的JAR文件安装到KVM上,该操作920可对应于图6的方块610。调试操作在操作930和940开始,这对应于图6的方块630。在操作950,从主机请求Java类和/或Java资源文件,这可对应于图6的方块630,并且在操作960,KVM加载类,这可对应于方块640。随着调试的进行,这些操作可在操作970继续,例如如图6的方块660所示。
[0043] 可由J2ME设备240中的KVM250使用,以便与在主机220上运行的主机设备外类/资源加载功能280通信的示例协议如下:
[0044] KVM请求的格式:
[0045]
[0046] 肯定的主机响应格式:
[0047] [4-bytes size][N-bytes of data]
[0048] 4字节长度(4-bytes size)可以按最高有效字节最先,最低有效字节最后的大端(big endian)顺序写入接口270中。
[0049] 否定的主机响应的格式为:
[0050] [0x00x00x00x00]
[0051] 图10中显示了可以施行以便执行图9的getFile操作950、970 的特定操作实例。显示了主机上的设备外类/资源加载功能280和KVM240之间的通信。示例请求可以如下示出:
[0052] [0053]
[0054] 概而言之,本发明的实施例可允许以更有效和/或稳健以便可由第三方应用开发者使用的方式对要在J2ME设备中执行的Java应用程序进行设备上源级调试。设备制造商可不必向第三方开发者为其正在销售的每个J2ME设备提供设备准确的仿真器。相反,Java开发者可利用可能的最准确的环境开发应用程序:实际的J2ME设备。此外,开发者可利用他们选择的IDE调试应用程序。
[0055] 在附图和说明书中,公开了本发明的实施例,尽管采用了特定的术语,但它们仅在一般的和说明性的意义上使用,而不是为了限制,本发明的范围在以下权利要求书中陈述。