專利名稱:選擇性地加載用于在Java微型設(shè)備中調(diào)試Java應(yīng)用程序的遠(yuǎn)程類或資源的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及利用Java的數(shù)據(jù)處理方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,更具體地說,涉及調(diào)試Java應(yīng)用程序的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
Java是一種功能全面的面向?qū)ο缶幊陶Z言。因此,Java程序(應(yīng)用程序)通過建立彼此交互作用的軟件部件的結(jié)構(gòu)化集合而產(chǎn)生期望效果。這些部件稱為對象,并且可以安排在對象類體系結(jié)構(gòu)中,對象類也簡稱為類。Java程序不是直接在計(jì)算機(jī)的操作系統(tǒng)上運(yùn)行,而是在Java虛擬機(jī)(JVM)上運(yùn)行,該Java虛擬機(jī)本身就是在計(jì)算機(jī)操作系統(tǒng)上運(yùn)行的程序。由于Java的面向?qū)ο筇匦约癑VM的標(biāo)準(zhǔn)化,Java程序可提供“一旦編寫,隨地運(yùn)行”(WORA)的能力。Java是計(jì)算機(jī)領(lǐng)域技術(shù)人員眾所周知的,不必在本文中進(jìn)一步描述。
由于Java的使用擴(kuò)展了,它已經(jīng)延伸至更大和更小規(guī)模的平臺。因此,Java現(xiàn)在擴(kuò)展到超出用于服務(wù)器和個(gè)人計(jì)算機(jī)的Java2平臺標(biāo)準(zhǔn)版(J2SE),擴(kuò)展到了Java2平臺企業(yè)版(J2EE),這是一個(gè)用于開發(fā)、建立和部署企業(yè)應(yīng)用程序的平臺無關(guān)的以Java為中心的環(huán)境,以及擴(kuò)展到了Java2平臺微型版(J2ME),它允許開發(fā)者使用Java來建立用于無線、移動(dòng)以及諸如個(gè)人數(shù)字助理、機(jī)頂盒、嵌入設(shè)備以及移動(dòng)電話等消費(fèi)設(shè)備的應(yīng)用程序。
在J2ME中,JVM經(jīng)常被稱為千字節(jié)虛擬機(jī)(KVM),以指示其尺寸小。J2ME移動(dòng)信息設(shè)備簡表(MIDP)允許開發(fā)者為J2ME設(shè)備編寫可下載應(yīng)用程序和服務(wù)。這些應(yīng)用程序和服務(wù)常常稱為MIDlet。
J2ME的設(shè)計(jì)和操作在例如Sun Microsystems公司于2002發(fā)布的題為“Java 2 Platform,Micro Edition”的數(shù)據(jù)表中進(jìn)行了概括。此外,可以理解,在本文中所用的術(shù)語“J2ME”用于表示利用Java微型版(Micro Edition)的任何存儲受限設(shè)備。
許多供應(yīng)商提供Java集成開發(fā)環(huán)境(IDE),作為軟件開發(fā)者軟件包(SDK)的一部分或者與之聯(lián)合。IDE也可以與SDK分開提供。如
圖1所示,IDE110可在主計(jì)算機(jī)上運(yùn)行,主計(jì)算機(jī)在本文中也簡單地稱為主機(jī)120,主機(jī)120可包括個(gè)人計(jì)算機(jī)或工作站,并且與仿真器130接口。IDE110還可以與其中包括KVM150和一個(gè)或多個(gè)應(yīng)用程序(MIDlet)160的實(shí)際J2ME設(shè)備140接口。主機(jī)120和J2ME設(shè)備140之間的連接170可以是有線和/或無線的。IDE110和仿真器130之間的接口112稱為統(tǒng)一仿真器接口(UEI)。可以通過有線和/或無線連接170在J2ME設(shè)備140上的KVM150和IDE110之間提供接口。
如本領(lǐng)域技術(shù)人員眾所周知的,在設(shè)計(jì)應(yīng)用程序(MIDlet)160時(shí),可能希望在設(shè)計(jì)階段期間和/或之后對應(yīng)用程序進(jìn)行調(diào)試。許多調(diào)試技術(shù)都是本領(lǐng)域技術(shù)人員熟知的,因此不必在本文中描述。事實(shí)上,IDE110通常提供利用仿真器130對應(yīng)用程序的源級調(diào)試。遺憾的是,為了成功地調(diào)試一個(gè)應(yīng)用程序160,可能需要為要編寫的用于各J2ME設(shè)備140的應(yīng)用程序160提供一個(gè)新的仿真器130。此外,可能希望在J2ME設(shè)備140本身中的KVM150上調(diào)試應(yīng)用程序160。但是,KVM150的有限尺寸可能使將調(diào)試程序加載到J2ME設(shè)備中非常費(fèi)時(shí)。此外,KVM150的有限尺寸在一些情況下可使在J2ME設(shè)備140上運(yùn)行調(diào)試程序不可能。開發(fā)者還知道要將所選文件打包以便在J2ME設(shè)備140上加載。
發(fā)明概述本發(fā)明的實(shí)施例可通過選擇性地將在J2ME設(shè)備中調(diào)試Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到J2ME設(shè)備中,以便在該J2ME設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,所述子集是從主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。因此,可以減少或消除在開始調(diào)試時(shí)就加載包含J2ME類和/或資源的整個(gè)集合的可能巨大的Java ARchive(JAR)文件的需要。事實(shí)上,在本發(fā)明的一些實(shí)施例中,僅僅在調(diào)試Java應(yīng)用程序期間使用的那些類/源可以自動(dòng)地從主計(jì)算機(jī)加載到J2ME設(shè)備中。
在一些動(dòng)態(tài)實(shí)施例中,在調(diào)試所述應(yīng)用程序期間引用Java類和/或Java資源文件時(shí)將它們從主計(jì)算機(jī)加載到J2ME設(shè)備中。在特定實(shí)施例中,在J2ME設(shè)備上安裝JAR文件,并且一些實(shí)施例中,在J2ME設(shè)備上安裝空的JAR文件。Java應(yīng)用程序在J2ME設(shè)備中進(jìn)行調(diào)試,直到Java類和/或Java資源文件被引用。從主計(jì)算機(jī)請求Java類和/或Java資源文件,并將其加載到KVM中。然后,利用加載到KVM中的Java類和/或Java資源文件在J2ME設(shè)備中繼續(xù)調(diào)試Java應(yīng)用程序。在調(diào)試期間引用新的Java類和/或新的Java資源文件時(shí),可以依次重復(fù)執(zhí)行請求Java類和/或Java資源文件,加載所請求的類和/或資源文件并繼續(xù)調(diào)試的操作。
在其它靜態(tài)實(shí)施例中,自動(dòng)地在主計(jì)算機(jī)確定調(diào)試期間使用的所述Java類和/或Java資源文件子集,并自動(dòng)地將該子集從主計(jì)算機(jī)加載到J2ME設(shè)備中。更具體地說,在一些實(shí)施例中,獲得調(diào)試Java應(yīng)用程序的入口點(diǎn)類。遞歸地確定在調(diào)試期間從入口點(diǎn)類引用的其它Java類和/或Java資源文件。預(yù)先安裝的類/源列表用于排除在J2ME設(shè)備中預(yù)先安裝的那些另外的Java類和/或Java資源文件。然后,在J2ME設(shè)備上安裝JAR文件,并且將除了J2ME設(shè)備中預(yù)先安裝的另外的Java類和/或Java資源文件之外的入口點(diǎn)類和遞歸確定的另外的Java和/或Java資源文件加載到KVM中。
在其它混合實(shí)施例中,可以組合如上所述的動(dòng)態(tài)實(shí)施例和靜態(tài)實(shí)施例的各方面。例如,在主計(jì)算機(jī)自動(dòng)地確定調(diào)試期間使用的所述Java類和/或Java資源文件子集中的一些,并且將其從主計(jì)算機(jī)加載到J2ME設(shè)備中,如以上所述。然后,在調(diào)試Java應(yīng)用程序期間,如果引用的是沒有加載到KVM中的Java類和/或Java資源文件,則將引用的Java類和/或Java資源文件從主計(jì)算機(jī)加載到J2ME設(shè)備中。還可以提供其它混合實(shí)施例。
在本發(fā)明的其它實(shí)施例中,在調(diào)試Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集在J2ME設(shè)備處于開發(fā)模式時(shí)自動(dòng)地從主計(jì)算機(jī)加載到J2ME設(shè)備中。相反,在部署模式下,使用預(yù)先安裝在J2ME設(shè)備中的Java類和/或資源文件。
以上主要就方法方面描述了本發(fā)明的實(shí)施例。但應(yīng)理解,本發(fā)明的實(shí)施例還可以提供用于在J2ME設(shè)備中調(diào)試Java應(yīng)用程序的系統(tǒng)和/或計(jì)算機(jī)程序產(chǎn)品,以及還可提供用于J2ME設(shè)備的IDE以及J2ME設(shè)備本身。此外,盡管已就J2ME設(shè)備中的MIDlet調(diào)試對本發(fā)明的實(shí)施例進(jìn)行了描述,但本發(fā)明的實(shí)施例還可以應(yīng)用于在任何Java設(shè)備,即運(yùn)行Java的任何設(shè)備中調(diào)試Java應(yīng)用程序。最后,本發(fā)明的其它實(shí)施例可用于調(diào)試在設(shè)備中運(yùn)行的任何應(yīng)用程序,無論該應(yīng)用程序是Java應(yīng)用程序、另一種面向?qū)ο缶幊痰膽?yīng)用程序或常規(guī)的功能應(yīng)用程序。設(shè)備可以是Java設(shè)備、利用非Java的面向?qū)ο缶幊滔到y(tǒng)操作的設(shè)備或利用常規(guī)功能編程的設(shè)備。因此,本發(fā)明的實(shí)施例可用于使用其它編程語言的代碼模塊(如對象、庫、子程序、類等)的設(shè)備外加載,其它編程語言例如為在普遍的、個(gè)人的、應(yīng)用和/或企業(yè)設(shè)備上運(yùn)行的C、C++、PERL、NET。
附圖簡述圖1是常規(guī)J2ME調(diào)試環(huán)境的方塊圖。
圖2是根據(jù)本發(fā)明的實(shí)施例,用于在J2ME設(shè)備中調(diào)試Java應(yīng)用程序的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。
圖3-8是根據(jù)本發(fā)明的各種實(shí)施例,可執(zhí)行以在J2ME設(shè)備中調(diào)試Java應(yīng)用程序的操作的流程圖。
圖9和10是說明根據(jù)本發(fā)明的實(shí)施例,在J2ME設(shè)備中調(diào)試Java應(yīng)用程序的實(shí)例的流程圖。
詳細(xì)說明隨后,將在下面參考顯示本發(fā)明的實(shí)施例的附圖更完整地描述本發(fā)明。然而,本發(fā)明可以許多替代形式實(shí)施,并且不應(yīng)將本發(fā)明視為限于本文所述的實(shí)施例。
因此,雖然本發(fā)明可以進(jìn)行各種修改并采取各種備選形式,但附圖中僅例示了本發(fā)明的一些特定實(shí)施例,并且本文將對這些特定實(shí)施例進(jìn)行詳細(xì)描述。但是,應(yīng)該理解,并不打算將本發(fā)明限制于所公開的特定形式,而是相反,本發(fā)明要涵蓋屬于權(quán)利要求所定義的本發(fā)明的精神和范圍的所有修改、等效物及替代形式。附圖描述中,相同的附圖標(biāo)記表示相同的部件。
下面參考根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和/或計(jì)算機(jī)程序產(chǎn)品的方塊圖和/或流程圖對本發(fā)明進(jìn)行描述。應(yīng)該理解,方塊圖和/或流程圖中的各個(gè)方塊以及方塊圖和/或流程圖中方塊的組合,可以用計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)和/或其它可編程數(shù)據(jù)處理裝置的處理器,以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)和/或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令建立用于實(shí)現(xiàn)一個(gè)/多個(gè)方塊圖和/或流程圖方塊中指定的功能動(dòng)作的部件。
這些計(jì)算機(jī)程序指令也可以保存在計(jì)算機(jī)可讀存儲器中,其可控制計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備以特定方式發(fā)揮作用,使得保存在計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生一個(gè)產(chǎn)品,該產(chǎn)品包括實(shí)現(xiàn)一個(gè)/多個(gè)方塊圖和/或流程圖塊中指定的功能/動(dòng)作的指令。
計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置中,導(dǎo)致在計(jì)算機(jī)或其它可編程設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生一個(gè)計(jì)算機(jī)實(shí)現(xiàn)的過程,使得在計(jì)算機(jī)和/或其它可編程數(shù)據(jù)處理設(shè)備上執(zhí)行的指令提供實(shí)現(xiàn)一個(gè)/多個(gè)方塊圖和/或流程圖方塊中指定的功能/動(dòng)作的步驟。
還應(yīng)注意,在一些備選實(shí)現(xiàn)方案中,方塊中給出的功能/動(dòng)作可能以與流程圖所示不同的順序發(fā)生。例如,順序顯示的兩個(gè)方塊事實(shí)上可基本上同時(shí)執(zhí)行,或者這些方塊有時(shí)可以相反的順序執(zhí)行,具體取決于所涉及的功能/動(dòng)作。
圖2是根據(jù)本發(fā)明的各種實(shí)施例,可用于在J2ME設(shè)備240中調(diào)試Java應(yīng)用程序或MIDlet260的系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品的方塊圖。主機(jī)220包括其上的IDE210。接口可用于在主機(jī)220和J2ME設(shè)備240之間提供用于調(diào)試的有線和/或無線連接270。應(yīng)用程序(MIDlet)260在J2ME設(shè)備240上的KVM250上運(yùn)行。此段落中描述的部件的設(shè)計(jì)和操作是本領(lǐng)域技術(shù)人員所熟知的,不需要在本文中進(jìn)一步描述。
仍參考圖2,根據(jù)本發(fā)明的實(shí)施例,可以提供偽仿真器230,它可利用UEI接口212與IDE210接口。主機(jī)設(shè)備外類/資源加載(或加載器)功能280可以添加到偽仿真器230中,并且設(shè)備設(shè)備外類/資源加載(或加載器)功能290可以添加到J2ME設(shè)備240中。主機(jī)設(shè)備外類/資源加載(或加載器)功能280可以設(shè)在一個(gè)或多個(gè)模塊和/或電路中,作為SDK的一部分,并且可以至少部分地集成在IDE210和/或偽仿真器230中,或者可包括與IDE210和/或仿真器230接口的一個(gè)或多個(gè)分離的模塊和/或電路。類似地,在J2ME設(shè)備240上,設(shè)備設(shè)備外類/資源加載(或加載器)功能290可以設(shè)在一個(gè)或多個(gè)模塊和/或電路中,至少部分集成在KVM250和/或應(yīng)用程序260中,或者可包括一個(gè)或多個(gè)分離的模塊和/或電路。
圖3是根據(jù)本發(fā)明的一些實(shí)施例,可執(zhí)行以在諸如J2ME設(shè)備240的J2ME設(shè)備中調(diào)試諸如應(yīng)用程序260的Java應(yīng)用程序的操作的流程圖。可以理解,這些操作可以通過圖2的主機(jī)設(shè)備外類/資源加載功能280和/或設(shè)備設(shè)備外類/資源加載功能290執(zhí)行。如圖3所示,在方塊320中,設(shè)備外類/資源加載310可以通過選擇性地將在J2ME設(shè)備240中調(diào)試Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從諸如主機(jī)220的主計(jì)算機(jī)加載到J2ME設(shè)備中來提供,所述子集是從主機(jī)220中的Java類和/或Java資源文件的集合中自動(dòng)選擇的。因此,可以減少加載時(shí)間,并且調(diào)試可以在一個(gè)小的KVM250上成功地執(zhí)行。
圖4和5是說明圖3的塊320的其它實(shí)施例的流程圖。具體地說,如圖4所示,在動(dòng)態(tài)實(shí)施例320′中,僅僅在方塊410中調(diào)試Java應(yīng)用程序260期間引用Java類和/或Java資源文件時(shí),才將它們從主計(jì)算機(jī)220加載到J2ME設(shè)備240中?;蛘?,如圖5所示,在靜態(tài)實(shí)施例320″中,在方塊510,在主機(jī)220自動(dòng)地確定將在調(diào)試Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集。然后,在方塊520,將在方塊510自動(dòng)確定的所述Java類和/或Java資源文件子集從主機(jī)220加載到J2ME240設(shè)備中。還可以提供組合圖4和5的各方面的混合實(shí)施例。圖4和/或圖5的實(shí)施例還可以在“每類/文件”的基礎(chǔ)上執(zhí)行和/或針對多類和/或文件執(zhí)行。可以理解,應(yīng)用程序中的一些程序結(jié)構(gòu)可旁路掉靜態(tài)確定運(yùn)行時(shí)可能引用哪些類的能力。因此,圖5的實(shí)施例可能不能夠自動(dòng)地確定將引用的所有類/資源文件。因此可以采用混合實(shí)施例。
圖6是可用于在調(diào)試Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從主計(jì)算機(jī)加載到J2ME設(shè)備中的操作的流程圖,它可對應(yīng)于圖4的方塊410。如方塊610所示,在J2ME設(shè)備上安裝空的JAR文件。如本領(lǐng)域技術(shù)人員所熟知的,JAR文件使開發(fā)者能夠?qū)⒍鄠€(gè)文件捆綁為單個(gè)檔案文件。通常,JAR文件會包含與應(yīng)用程序關(guān)聯(lián)的類文件和輔助資源。在方塊620,在J2ME設(shè)備240中調(diào)試Java應(yīng)用程序,直到引用Java類和/或Java資源文件。在方塊630,從主計(jì)算機(jī)220請求Java類和/或Java資源文件。在方塊640,將從主計(jì)算機(jī)220請求的Java類和/或Java資源文件加載到KVM中。在方塊650,在J2ME設(shè)備240中利用加載到KVM中的Java類和/或Java資源文件繼續(xù)調(diào)試。
仍繼續(xù)對圖6的描述,在一些實(shí)施例中,在方塊660,確定調(diào)試期間是否引用另一個(gè)Java類和/或Java資源文件。如果這樣,則重復(fù)塊630、640和650的操作直到不再需要Java類或資源文件或者調(diào)試結(jié)束。因此,在調(diào)試期間引用Java類和/或Java資源文件時(shí),可以依次重復(fù)執(zhí)行塊630、640和650的操作。
圖7是可用于在主計(jì)算機(jī)220確定在調(diào)試期間將使用的Java類和/或Java資源文件子集的操作的流程圖,其可對應(yīng)于圖5的方塊510。如圖7所示,在方塊710,獲得用于調(diào)試Java應(yīng)用程序的入口點(diǎn)類。然后,在方塊720,遞歸地確定在調(diào)試Java應(yīng)用程序期間從入口點(diǎn)類引用的另外的Java類和/或Java資源文件,從而確定引用的另外的類/資源文件和所述另外的類/資源文件引用的另外的類/資源文件等。在方塊730,排除預(yù)先安裝在J2ME設(shè)備中的另外的Java類和/或資源文件??梢岳斫猓綁K730的操作可以與方塊720的操作同時(shí)執(zhí)行和/或在其之后執(zhí)行。因此,除了預(yù)先安裝的那些Java類/資源之外,可以在方塊520將遞歸確定的要在調(diào)試期間引用的Java類和/或資源從主機(jī)加載到J2ME設(shè)備中。具體地說,在一些實(shí)施例中,通過在J2ME設(shè)備上安裝JAR文件執(zhí)行加載,并且除預(yù)先安裝的另外的Java類/資源以外,將遞歸確定的另外的類/資源文件加載到J2ME設(shè)備上的JAR文件中。
可以理解,在一些實(shí)施例中,方塊510和圖7的操作可以利用主計(jì)算機(jī)220上的偽仿真器230執(zhí)行,以便可以在主計(jì)算機(jī)220確定類和/或Java資源子集。然后,將這些Java類和/或Java資源文件加載到J2ME設(shè)備240中。還可以理解,可以根據(jù)本發(fā)明的其它實(shí)施例提供圖3-7的組合和子組合。
圖8是根據(jù)本發(fā)明的實(shí)施例,可用于集成J2ME設(shè)備的開發(fā)和部署模式的操作的流程圖。如圖8所示,在方塊810,利用常規(guī)技術(shù)在J2ME設(shè)備240中選擇設(shè)備模式。如果在方塊810選擇了開發(fā)模式,那么執(zhí)行根據(jù)本發(fā)明的實(shí)施例的方塊320的操作,以便選擇性地將在J2ME設(shè)備中調(diào)試Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到J2ME設(shè)備中,該子集是從主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。可以理解,在開發(fā)模式中應(yīng)用程序可以由開發(fā)者運(yùn)行和/或調(diào)試。相反,如果進(jìn)入了部署模式,那么在方塊820,預(yù)先安裝的Java類和/或Java資源文件用于在設(shè)備的部署模式期間運(yùn)行應(yīng)用程序。因此,設(shè)備外類加載用于開發(fā)模式,而設(shè)備上類加載用于部署模式。因此,在本發(fā)明的一些實(shí)施例中,JVM上的類加載器可加以修改,以便在開發(fā)模式期間從主機(jī)得到文件,但在部署模式期間從J2ME設(shè)備自己的文件系統(tǒng)得到文件。
現(xiàn)在將對本發(fā)明的實(shí)施例作進(jìn)一步討論。在本發(fā)明之前,當(dāng)執(zhí)行對Java應(yīng)用程序160的設(shè)備上源級調(diào)試時(shí),主機(jī)120常常將所有的類和其它資源文件封裝在一個(gè)CLASSPATH中,由Java IDE110通過UEI接口傳遞。本領(lǐng)域技術(shù)人員所熟知的是,CLASSPATH是JVM上的一個(gè)環(huán)境變量,它指示Java類和其它資源文件所處的位置。它列出含編譯的Java類的目錄的名稱。JAR文件包含Java類和/或資源本身。因此,此單個(gè)JAR文件的尺寸通常非常大。尺寸可以約為1Mb或更大的大JAR文件隨后會安裝在J2ME設(shè)備上。此安裝可花費(fèi)大量時(shí)間,例如大概幾分鐘,這可能使得設(shè)備上調(diào)試對Java開發(fā)者而言不可用。此外,在許多情形下,JAR文件完全超過J2ME設(shè)備的存儲容量,因此不會成功加載。在其它情形中,開發(fā)者可人工將調(diào)試期間可能需要的類/資源打包。但是,開發(fā)者的選擇可引入錯(cuò)誤。
本發(fā)明的一些實(shí)施例可基于這樣的實(shí)現(xiàn)CLASSPATH可包括可能不需要的額外的庫文件,但是Java IDE不會知道哪些類將用于調(diào)試Java應(yīng)用程序。這個(gè)問題不局限于Java類,因?yàn)樗€影響Java資源文件,比如可能包括在CLASSPATH中的圖像、音頻文件和/或任何其它數(shù)據(jù)文件。
但是,利用根據(jù)本發(fā)明的動(dòng)態(tài)實(shí)施例的設(shè)備外類加載,運(yùn)行J2ME設(shè)備240的KVM250開始運(yùn)行并調(diào)試MIDlet(應(yīng)用程序)260,而不需要預(yù)先加載Java類和/或資源文件到J2ME設(shè)備中。不是將CLASSPATH內(nèi)容打包到可能巨大的JAR文件中,而是將空的JAR文件安裝在J2ME設(shè)備240中,并且將入口點(diǎn)類(擴(kuò)展MIDlet的類)的名稱傳遞到KVM250。然后,KVM250開始運(yùn)行Java應(yīng)用程序260,并且當(dāng)它需要加載類或資源文件時(shí),它向通過串口、紅外線、藍(lán)牙和/或其它有線和/或無線接口270連接的主機(jī)220上運(yùn)行的IDE210發(fā)出請求與主機(jī)。主機(jī)220保持原始CLASSPATH的副本,定位請求的文件或者資源,然后將文件傳送給J2ME設(shè)備240。這樣,在一些實(shí)施例中,僅將調(diào)試期間KVM250所需要的文件傳送到J2ME設(shè)備。因此,可能的是,迅速地利用支持UEI接口的Java IDE執(zhí)行設(shè)備上調(diào)試會話。啟動(dòng)時(shí)間可以顯著降低。
在本發(fā)明的靜態(tài)實(shí)施例中,如例如圖4所示,靈活CLASSPATH打包器可從UEI CLASSPATH和入口點(diǎn)類開始。從這個(gè)入口點(diǎn)類開始,主機(jī)設(shè)備外類/資源加載功能280通過檢查類文件和尋找引用的類來確定哪些類被引用。以遞歸的方式,可以檢查每個(gè)新引用的類,以確定它引用哪些類。因此,建立運(yùn)行/調(diào)試MIDlet260所需的所有類的列表或子集。靈活CLASSPATH打包器還可以從這個(gè)列表中排除已知為預(yù)先安裝在例如特定J2ME設(shè)備的只讀存儲器(ROM)中的所有類。由此,可以建立一個(gè)短的類文件類列表,并將這個(gè)列表用于建立較小的JAR文件。CLASSPATH中的所有資源文件(非類文件)也可包含到該JAR文件中。確定會需要哪些資源文件的一種技術(shù)是在偽仿真器230中實(shí)際運(yùn)行/調(diào)試應(yīng)用程序。此外,資源集合可以是動(dòng)態(tài)的,因?yàn)樗扇Q于在應(yīng)用程序運(yùn)行/調(diào)試時(shí)執(zhí)行哪些代碼路徑。
現(xiàn)在將提供本發(fā)明的一些實(shí)施例的其它細(xì)節(jié)。圖9是一個(gè)特定操作實(shí)例的流程圖,可執(zhí)行這些操作以便在調(diào)試應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從主計(jì)算機(jī)220加載到J2ME設(shè)備240中(如例如圖3的方塊410所示),并具體說明了可在圖6中執(zhí)行的操作。
如圖9所示,IDE在操作910發(fā)起調(diào)試操作,并且在操作920將空的JAR文件安裝到KVM上,該操作920可對應(yīng)于圖6的方塊610。調(diào)試操作在操作930和940開始,這對應(yīng)于圖6的方塊630。在操作950,從主機(jī)請求Java類和/或Java資源文件,這可對應(yīng)于圖6的方塊630,并且在操作960,KVM加載類,這可對應(yīng)于方塊640。隨著調(diào)試的進(jìn)行,這些操作可在操作970繼續(xù),例如如圖6的方塊660所示。
可由J2ME設(shè)備240中的KVM250使用,以便與在主機(jī)220上運(yùn)行的主機(jī)設(shè)備外類/資源加載功能280通信的示例協(xié)議如下KVM請求的格式<getFile name=″[file_name]″/>
肯定的主機(jī)響應(yīng)格式[4-bytes size][N-bytes of data]4字節(jié)長度(4-bytes size)可以按最高有效字節(jié)最先,最低有效字節(jié)最后的大端(big endian)順序?qū)懭虢涌?70中。
否定的主機(jī)響應(yīng)的格式為
圖10中顯示了可以施行以便執(zhí)行圖9的getFile操作950、970的特定操作實(shí)例。顯示了主機(jī)上的設(shè)備外類/資源加載功能280和KVM240之間的通信。示例請求可以如下示出<getFile name=″/com/semc/example/ManyBalls.class″/>
<getFile name=″/rsc/Imagel.png″/>。
概而言之,本發(fā)明的實(shí)施例可允許以更有效和/或穩(wěn)健以便可由第三方應(yīng)用開發(fā)者使用的方式對要在J2ME設(shè)備中執(zhí)行的Java應(yīng)用程序進(jìn)行設(shè)備上源級調(diào)試。設(shè)備制造商可不必向第三方開發(fā)者為其正在銷售的每個(gè)J2ME設(shè)備提供設(shè)備準(zhǔn)確的仿真器。相反,Java開發(fā)者可利用可能的最準(zhǔn)確的環(huán)境開發(fā)應(yīng)用程序?qū)嶋H的J2ME設(shè)備。此外,開發(fā)者可利用他們選擇的IDE調(diào)試應(yīng)用程序。
在附圖和說明書中,公開了本發(fā)明的實(shí)施例,盡管采用了特定的術(shù)語,但它們僅在一般的和說明性的意義上使用,而不是為了限制,本發(fā)明的范圍在以下權(quán)利要求書中陳述。
權(quán)利要求
1.一種方法,用于在Java 2微型版(J2ME)設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,包括選擇性地將在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到所述J2ME設(shè)備中,所述子集是從所述主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。
2.如權(quán)利要求1所述的方法,其中所述選擇性地加載包括在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中。
3.如權(quán)利要求1所述的方法,其中所述選擇性地加載包括在所述主計(jì)算機(jī)確定在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或所述Java資源文件子集;以及從所述主計(jì)算機(jī)加載所確定的所述Java類和/或所述Java資源文件的子集到所述J2ME設(shè)備中。
4.如權(quán)利要求2所述的方法,其中在調(diào)試所述應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中還包括在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序直到Java類和/或Java資源文件被引用;從所述主計(jì)算機(jī)請求所述Java類和/或所述Java資源文件;將從所述主計(jì)算機(jī)請求的所述Java類和/或所述Java資源文件加載到所述J2ME設(shè)備中;以及利用加載到所述J2ME設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序。
5.如權(quán)利要求4所述的方法,其中所述安裝包括在所述J2ME設(shè)備上安裝空的JAR文件。
6.如權(quán)利要求4所述的方法,其中依次重復(fù)執(zhí)行所述在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序直到Java類和/或Java資源文件被引用;所述從所述主計(jì)算機(jī)請求所述Java類和/或所述Java資源文件;所述將從所述主計(jì)算機(jī)請求的所述Java類和/或所述Java資源文件加載到所述J2ME設(shè)備中;以及所述利用加載到所述J2ME設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序。
7.如權(quán)利要求3所述的方法,其中所述確定包括獲得用于調(diào)試所述Java應(yīng)用程序的入口點(diǎn)類;以及遞歸地確定所述調(diào)試Java應(yīng)用程序期間從所述入口點(diǎn)類引用的另外的Java類和/或資源文件,同時(shí)排除預(yù)先安裝在所述J2ME設(shè)備中的另外的Java類和/或資源文件。
8.如權(quán)利要求7所述的方法,其中所述從所述主計(jì)算機(jī)將確定的所述Java類和/或Java資源文件子集加載到所述J2ME設(shè)備中包括在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;以及將除了預(yù)先安裝在所述J2ME設(shè)備中的另外的Java類和/或Java資源文件以外的所述入口點(diǎn)類和遞歸確定的另外的Java類和/或Java資源文件加載到所述J2ME設(shè)備中。
9.如權(quán)利要求3所述的方法,其中所述確定包括在所述主計(jì)算機(jī)處的仿真器上調(diào)試所述Java應(yīng)用程序;以及基于所述在所述主計(jì)算機(jī)處的仿真器上調(diào)試所述Java應(yīng)用程序,在所述主計(jì)算機(jī)確定將在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集。
10.如權(quán)利要求3所述的方法,其中所述選擇性地加載還包括在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中。
11.如權(quán)利要求1所述的方法,其中所述選擇性地加載包括響應(yīng)于所述J2ME設(shè)備處于開發(fā)模式,選擇性地將在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到所述J2ME設(shè)備中,該子集是從所述主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。
12.如權(quán)利要求11所述的方法,還包括在部署模式期間使用預(yù)先安裝在所述J2ME設(shè)備上的Java類和/或Java資源文件。
13.一種方法,用于在Java設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,包括選擇性地將在所述Java設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到所述Java設(shè)備中,所述子集是從所述主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。
14.如權(quán)利要求13所述的方法,其中所述選擇性地加載包括在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述Java設(shè)備中。
15.如權(quán)利要求13所述的方法,其中所述選擇性地加載包括在所述主計(jì)算機(jī)確定將在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集;以及從所述主計(jì)算機(jī)加載所確定的所述Java類和/或Java資源文件子集到所述Java設(shè)備中。
16.如權(quán)利要求14所述的方法,其中所述在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述Java設(shè)備中還包括在所述Java設(shè)備上安裝Java ARchive(JAR)文件;在所述Java設(shè)備中調(diào)試所述Java應(yīng)用程序,直到Java類和/或Java資源文件被引用;從所述主計(jì)算機(jī)請求所述Java類和/或所述Java資源文件;將從所述主計(jì)算機(jī)請求的所述Java類和/或所述Java資源文件加載到所述Java設(shè)備中;以及利用加載到所述Java設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述Java設(shè)備中調(diào)試所述Java應(yīng)用程序。
17.如權(quán)利要求15所述的方法,其中所述確定包括獲得用于調(diào)試所述Java應(yīng)用程序的入口點(diǎn)類;以及遞歸地確定所述調(diào)試Java應(yīng)用程序期間從所述入口點(diǎn)類引用的另外的Java類和/或資源文件,同時(shí)排除預(yù)先安裝在所述Java設(shè)備中的另外的Java類和/或資源文件。
18.如權(quán)利要求15所述的方法,其中所述選擇性地加載包括在調(diào)試所述應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述Java設(shè)備中。
19.如權(quán)利要求13所述的方法,其中所述選擇性地加載包括響應(yīng)于所述Java設(shè)備處于開發(fā)模式,選擇性地將在所述Java設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到所述Java設(shè)備中,該子集是從所述主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。
20.如權(quán)利要求19所述的方法,還包括在部署模式期間使用預(yù)先安裝在所述Java設(shè)備上的Java類和/或Java資源文件。
21.一種Java 2微型版(J2ME)設(shè)備,包括千字節(jié)虛擬機(jī)(KVM);所述KVM上運(yùn)行的至少一個(gè)應(yīng)用程序;以及設(shè)備外類/資源加載器,它被配置為選擇性地將在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載到所述J2ME設(shè)備中,所述子集是從所述主計(jì)算機(jī)中的Java類和/或Java資源文件的集合中自動(dòng)選擇的。
22.如權(quán)利要求21所述的J2ME設(shè)備,其中所述設(shè)備外類/資源加載器還被配置為在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中。
23.如權(quán)利要求21所述的J2ME設(shè)備,其中所述設(shè)備外類/資源加載器還被配置為將在所述主計(jì)算機(jī)確定的在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中。
24.如權(quán)利要求22所述的J2ME設(shè)備,其中所述設(shè)備外類/資源加載器還被配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序直到Java類和/或Java資源文件被引用;從所述主計(jì)算機(jī)請求所述Java類和/或所述Java資源文件;將從所述主計(jì)算機(jī)請求的所述Java類和/或所述Java資源文件加載到所述J2ME設(shè)備中;以及利用加載到所述J2ME設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序。
25.如權(quán)利要求24所述的J2ME設(shè)備,其中所述設(shè)備外類/資源加載器還被配置為在所述J2ME設(shè)備上安裝空的JAR文件。
26.如權(quán)利要求21所述的J2ME設(shè)備,其中所述設(shè)備外類/資源加載器響應(yīng)于所述J2ME設(shè)備的開發(fā)模式。
27.如權(quán)利要求26所述的J2ME設(shè)備,還包括設(shè)備上類/資源加載器,它被配置為在部署模式期間使用預(yù)先安裝在所述J2ME設(shè)備上的Java類和/或Java資源文件。
28.一種系統(tǒng),用于在Java 2微型版(J2ME)設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,包括主計(jì)算機(jī);所述主計(jì)算機(jī)上的集成開發(fā)環(huán)境(IDE);以及設(shè)備外類/資源加載器,它被配置為選擇性地將在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源子集從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中,該子集是從所述主計(jì)算機(jī)中的Java類和/或Java資源文件的集合中自動(dòng)選擇的。
29.如權(quán)利要求28所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中。
30.如權(quán)利要求28所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為確定將在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集,以及將確定的所述Java類和/或Java資源文件子集加載到所述J2ME設(shè)備中。
31.如權(quán)利要求29所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序直到Java類和/或Java資源文件被引用;將從所述主計(jì)算機(jī)引用的所述Java類和/或所述Java資源文件加載到所述J2ME設(shè)備中;以及利用加載到所述J2ME設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序。
32.如權(quán)利要求31所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為在所述J2ME設(shè)備上安裝空的JAR文件。
33.如權(quán)利要求30所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為通過如下步驟確定將在所述調(diào)試期間使用的所述Java類和/或Java資源文件子集獲得用于調(diào)試所述Java應(yīng)用程序的入口點(diǎn)類;以及遞歸地確定所述調(diào)試Java應(yīng)用程序期間從所述入口點(diǎn)類引用的另外的Java類和/或資源文件,同時(shí)排除預(yù)先安裝在所述Java設(shè)備中的另外的Java類和/或資源文件。
34.如權(quán)利要求33所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為通過如下步驟從所述主計(jì)算機(jī)將確定的所述Java類和/或Java資源文件子集加載到所述J2ME設(shè)備中在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;以及將除了預(yù)先安裝在所述J2ME設(shè)備中的另外的Java類和/或Java資源文件以外的所述入口點(diǎn)類和遞歸確定的另外的Java類和/或Java資源文件加載到所述J2ME設(shè)備中。
35.如權(quán)利要求30所述的系統(tǒng),其中所述系統(tǒng)還包括所述主計(jì)算機(jī)上的仿真器,并且其中所述設(shè)備外類/資源加載器還被配置為通過如下步驟確定所述調(diào)試期間將使用的所述Java類和/或Java資源文件子集在所述仿真器上調(diào)試所述Java應(yīng)用程序;以及在所述主計(jì)算機(jī)確定在所述主計(jì)算機(jī)的所述仿真器上調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集。
36.如權(quán)利要求35所述的系統(tǒng),其中所述設(shè)備外類/資源加載器還被配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件;以及將在所述仿真器上調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集加載到所述J2ME設(shè)備中。
37.一種計(jì)算機(jī)程序產(chǎn)品,用于在設(shè)備中調(diào)試應(yīng)用程序,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可用存儲介質(zhì),所述介質(zhì)中嵌入有計(jì)算機(jī)可讀程序代碼,所述計(jì)算機(jī)可讀程序代碼包括配置為選擇性地將在所述設(shè)備中調(diào)試所述應(yīng)用程序期間使用的代碼模塊子集從主計(jì)算機(jī)加載到所述設(shè)備中的計(jì)算機(jī)可讀程序代碼,其中所述子集是從所述主計(jì)算機(jī)中的代碼模塊的集合中自動(dòng)選擇的。
38.如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其中配置為選擇性地加載的所述計(jì)算機(jī)可讀程序代碼包括配置為在調(diào)試所述應(yīng)用程序期間引用代碼模塊時(shí),將其所述主計(jì)算機(jī)加載到所述設(shè)備中。
39.如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其中配置為選擇性地加載的所述計(jì)算機(jī)可讀程序代碼包括配置為在所述主計(jì)算機(jī)確定所述調(diào)試所述應(yīng)用程序期間使用的代碼模塊子集的計(jì)算機(jī)可讀程序代碼;以及配置為將確定的所述代碼模塊子集從所述主計(jì)算機(jī)加載到所述設(shè)備中的計(jì)算機(jī)可讀程序代碼。
40.如權(quán)利要求38所述的計(jì)算機(jī)程序產(chǎn)品,其中所述應(yīng)用程序是Java應(yīng)用程序,其中所述代碼模塊是Java類和/或Java資源文件,并且其中配置為在調(diào)試所述應(yīng)用程序期間引用代碼模塊時(shí),將其從所述主計(jì)算機(jī)加載到所述設(shè)備中的計(jì)算機(jī)可讀程序代碼還包括配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件的計(jì)算機(jī)可讀程序代碼;配置為在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序直到Java類和/或Java資源文件被引用的計(jì)算機(jī)可讀程序代碼;配置為從所述主計(jì)算機(jī)請求所述Java類和/或所述Java資源文件的計(jì)算機(jī)可讀程序代碼;配置為將從所述主計(jì)算機(jī)請求的所述Java類和/或所述Java資源文件加載到所述J2ME設(shè)備中的計(jì)算機(jī)可讀程序代碼;以及配置為利用加載到所述J2ME設(shè)備中的所述Java類和/或所述Java資源文件繼續(xù)在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序的計(jì)算機(jī)可讀程序代碼。
41.如權(quán)利要求40所述的計(jì)算機(jī)程序產(chǎn)品,其中配置為要安裝的計(jì)算機(jī)可讀程序代碼包括配置為在所述J2ME設(shè)備上安裝空的JAR文件的計(jì)算機(jī)可讀程序代碼。
42.如權(quán)利要求39所述的計(jì)算機(jī)程序產(chǎn)品,其中所述應(yīng)用程序是Java應(yīng)用程序,其中所述代碼模塊是Java類和/或Java資源文件,并且其中配置為確定的所述代碼模塊包括配置為獲得用于調(diào)試所述Java應(yīng)用程序的入口點(diǎn)類的計(jì)算機(jī)可讀程序代碼;以及配置為遞歸地確定所述調(diào)試Java應(yīng)用程序期間從所述入口點(diǎn)類引用的另外的Java類和/或資源文件,同時(shí)排除預(yù)先安裝在所述J2ME設(shè)備中的另外的Java類和/或資源文件的計(jì)算機(jī)可讀程序代碼。
43.如權(quán)利要求42所述的計(jì)算機(jī)程序產(chǎn)品,其中配置為從所述主計(jì)算機(jī)加載所確定的所述Java類和/或Java資源文件子集到所述J2ME設(shè)備中的計(jì)算機(jī)可讀程序代碼包括配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件的計(jì)算機(jī)可讀程序代碼;以及配置為將除了預(yù)先安裝在所述J2ME設(shè)備中的另外的Java類和/或Java資源文件以外的所述入口點(diǎn)類和遞歸確定的另外的Java類和/或Java資源文件加載到所述J2ME設(shè)備中的計(jì)算機(jī)可讀程序代碼。
44.如權(quán)利要求39所述的計(jì)算機(jī)程序產(chǎn)品,其中配置為確定的所述計(jì)算機(jī)可讀程序代碼包括配置為在所述主計(jì)算機(jī)處的仿真器上調(diào)試所述應(yīng)用程序的計(jì)算機(jī)可讀程序代碼;以及配置為在所述主計(jì)算機(jī)基于配置為在所述主計(jì)算機(jī)處的仿真器上調(diào)試應(yīng)用程序的計(jì)算機(jī)可讀程序代碼,確定將在調(diào)試所述應(yīng)用程序期間使用的所述代碼模塊子集的計(jì)算機(jī)可讀程序代碼。
45.如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其中所述應(yīng)用程序是Java應(yīng)用程序,其中所述代碼模塊是Java類和/或Java資源文件,并且其中配置為從所述主計(jì)算機(jī)加載所確定的所述Java類和/或Java資源文件子集到所述J2ME設(shè)備中的計(jì)算機(jī)可讀程序代碼包括配置為在所述J2ME設(shè)備上安裝Java ARchive(JAR)文件的計(jì)算機(jī)可讀程序代碼;以及配置為將在所述主計(jì)算機(jī)處的仿真器上調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集加載到所述J2ME設(shè)備上的所述JAR文件中的計(jì)算機(jī)可讀程序代碼。
46.如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其中所述配置為選擇性地加載的所述計(jì)算機(jī)可讀程序代碼包括配置為響應(yīng)于所述設(shè)備處于開發(fā)模式,選擇性地將在所述設(shè)備中調(diào)試應(yīng)用程序期間使用的代碼模塊子集從主計(jì)算機(jī)加載所述設(shè)備中的計(jì)算機(jī)可讀程序代碼,其中所述子集是從所述主計(jì)算機(jī)中的代碼模塊的集合中自動(dòng)選擇的。
47.如權(quán)利要求46所述的計(jì)算機(jī)程序產(chǎn)品,還包括配置為在部署模式期間使用預(yù)先安裝在所述設(shè)備上的代碼模塊的計(jì)算機(jī)可讀程序代碼。
48.一種系統(tǒng),用于在Java 2微型版(J2ME)設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,包括主計(jì)算機(jī);以及用于選擇性地將在所述J2ME設(shè)備中調(diào)試所述Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中的部件,所述子集是從所述主計(jì)算機(jī)中的Java類和/或Java源文件的集合中自動(dòng)選擇的。
49.如權(quán)利要求48所述的系統(tǒng),其中用于所述選擇性地加載的部件包括用于在調(diào)試所述Java應(yīng)用程序期間引用Java類和/或Java資源文件時(shí),將它們從所述主計(jì)算機(jī)加載到所述J2ME設(shè)備中的部件。
50.如權(quán)利要求49所述的系統(tǒng),其中用于所述選擇性地加載的部件包括用于在所述主計(jì)算機(jī)確定在調(diào)試所述Java應(yīng)用程序期間使用的所述Java類和/或Java資源文件子集的部件;以及用于從所述主計(jì)算機(jī)加載所確定的所述Java類和/或Java資源文件子集到所述J2ME設(shè)備中的部件。
全文摘要
通過選擇性地將在Java微型設(shè)備中調(diào)試Java應(yīng)用程序期間使用的Java類和/或Java資源文件子集從主計(jì)算機(jī)加載該設(shè)備中,從而在該Java微型設(shè)備中對Java應(yīng)用程序進(jìn)行調(diào)試,該子集是從主計(jì)算機(jī)中的Java類和/或Java資源文件的集合中自動(dòng)選擇的。因此,可以減少或消除在開始調(diào)試時(shí)就加載含所有類和/或資源的可能巨大的Java ARchive(JAR)文件的需要。本發(fā)明還可用于從主計(jì)算機(jī)加載在設(shè)備上調(diào)試應(yīng)用程序期間使用的模塊。
文檔編號G06F9/54GK1781077SQ200480011187
公開日2006年5月31日 申請日期2004年1月14日 優(yōu)先權(quán)日2003年4月29日
發(fā)明者P·H·尼科爾斯, J·李, J·羅思 申請人:索尼愛立信移動(dòng)通訊股份有限公司