CN1197004C - 用于管理嵌入设备中的应用程序的方法 - Google Patents

用于管理嵌入设备中的应用程序的方法 Download PDF

Info

Publication number
CN1197004C
CN1197004C CN00103710.2A CN00103710A CN1197004C CN 1197004 C CN1197004 C CN 1197004C CN 00103710 A CN00103710 A CN 00103710A CN 1197004 C CN1197004 C CN 1197004C
Authority
CN
China
Prior art keywords
class
application program
target
application
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 - Fee Related
Application number
CN00103710.2A
Other languages
English (en)
Other versions
CN1265489A (zh
Inventor
F·P·贾奇
C·-C·多兰
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of CN1265489A publication Critical patent/CN1265489A/zh
Application granted granted Critical
Publication of CN1197004C publication Critical patent/CN1197004C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/44594Unloading
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • 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/953Organization of data
    • Y10S707/955Object-oriented
    • 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/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

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)
  • Devices For Executing Special Programs (AREA)

Abstract

一个Java应用程序管理程序(24)控制在一个单个Java虚拟机(JVM)(22)内运行的Java应用程序(26a、26b、26c)的下载、执行和高速缓存器。应用程序管理程序(24)接受应用程序类下载(load()/Loadandlnit())、实例应用程序类(lnit())和控制应用程序(26a、26b、26c)的生存周期。

Description

用于管理嵌入设备中的应用程序的方法
技术领域
本发明涉及用于管理嵌入设备中的Java应用程序的方法。
背景技术
在嵌入设备环境中,在设备上常安装一个与硬件无关的处理机例如Java虚拟机,以便允许下载程序和在设备上执行。这样一个系统允许一个以与硬件无关的语言例如Sun Micro Systems Java缩写的程序下载到任何硬件支持Java环境,以便为一特殊用途定制它。这个定制常被称为设备的“个性”。多个应用程序可以在一个嵌入设备一齐被运行,以便确定该设备的个性。用这种方法可以使设备动态地以不同的独特方式起作用。例如,一个嵌入设备如一台冰箱可以被定制为自动地跟踪其内容。就象食物类型和同类食物的命名习惯可能随文化背景不同而异一性,嵌入设备冰箱可能通过下载一个描述食物类型和命名习惯的新的个性到Java使能嵌入冰箱设备来定制用户的特定文化。
在嵌入设备域中,在设备上安装一个与硬件无关的处理机例如Java虚拟机,以便允许下载应用程序和在设备上执行。Java语言提供建造动态地装载新程序的程序的基本功能。然而,Java语言不提供程序的装入程序的实现,也没有能力在装载后管理程序。Java语言也不提供在存储器受限制的嵌入设备内下载和管理应用程序的工具。
几种现有的Java技术支持程序的装入程序类型的功能。SunMicrosystem’s Servlet API允许一个Java使能Web服务器动态地扩充服务器的能力。Servlet API主要被创建来替代Web服务器中典型的CGI功能。Servlets较之CGI类型程序的优点包括与平台无关、复用性(通过面向目标技术重复使用Java类的能力)、性能效率(Servlet的可配置的启动方式,其允许相同的Servlet实例处理许多请求)(与为每个至CGI原来的调用创建一个新进程相反))和管理效率(基于Web服务器的Sun’s Java提供一个Java管理小应用程序,其很容易管理增添的新Servlet类,以及启动和停止Servlets)。
Servlet API通过委托所有Servlets实现三个方法:init()、Service()和des troy()来规定一个Servlet的生存日期。当Servlet第一次被调用时,调用init()方法;Service()方法被调用来处理来自一个客户的每个请求;以及当Servlet被停止(即Web服务器关闭)时调用destroy()。ServletAPI不直接支持存储器管理或提供一个管理Servlets的公共包。
HP公司的Embedded JavaLab SmallWeb提供一个在JVM中执行的至基于Java目标的基于Web的接口。SmallWeb当需要时可以装载目标,同时对目标提供一个把它们的功能(通过方法调用)转出到Web浏览器的装置。SmallWeb不直接提供停止应用程序目标或存储器管理特性。此外,SmallWeb通常要求一个文件系统,同时对某些嵌入环境,SmallWeb的辅助操作要求可能太大。
在许多嵌入领域中使用Java的一个问题是Java存储器子系统的非确定的方面。Java语言的非确定存储器管理方案允许通过一个垃圾回收站方法gc()回收未引用目标;然而,垃圾回收站没有规定如何或何时回收这些目标。原来的应用程序一般通过调用JavaRuntime类gc()方法来使垃圾回收站出现。如果JVM运行存储器溢出,则出现一个OutofMemory-Error错误。虽然不必管理存储器是Java语言的一个优点,但大多数嵌入应用程序需要在如何管理存储器方面较之在Java语言中目前提供的更严格的控制。需要更严格的控制是因为有些嵌入应用程序必须继续在低存储器环境中执行。这一般通过在原来的非Java嵌入应用程序中补充一个存储器管理程序来解决,以确保为了继续执行有足够存储器仍是可用的。
因此,为了下载到Java使能嵌入设备中和控制在Java使能嵌入设备中的应用程序的寿命,对通用方法存在一个需求。对一个存储器管理处理程序也存在一个要求,存储器管理处理程序处理在设备上执行应用程序期间检测到的低存储器或没有存储器的情况,同时该处理程序按照基于优先的算法释放存储器。
发明内容
本发明是一个新颖的系统和方法,用于管理在存储器受限制的嵌入设备环境中应用程序的下载和生存周期。一个基于Java的应用程序管理程序控制在嵌入设备上安装的单个Java虚拟机(JVM-Java Virtual Machine)内运行的Java应用程序的下载、执行和高速缓存器。一个有网络能力的应用程序接口(API-Application Program Interface)被规定,它提供装载类文件、启动、初始化和停止应用程序执行的功能,以及在Java使能嵌入设备中存储器管理的功能。本发明使嵌入设备能方便地重新编程以及单独管理嵌入设备使用的硬件类型。
根据本发明的一种嵌入设备,包括:一个网络接口,用于通过一个网络与一个计算机系统进行通信;一个包括一个应用程序高速缓存器的存储器;一个硬件无关处理器,它处理编写在一个硬件无关语言中的代码,所述硬件无关处理器在所述嵌入设备上安装并运行,并且在所述嵌入设备上能下载和执行编写在所述硬件无关语言中的代码;和,一个应用程序管理程序,它管理一个或多个应用程序,每一个所述一个或多个应用程序包括:一个具有一个或多个类目标入口的类目标列表,每一个入口包括一个当前装载在所述嵌入设备中的一个对应的类目标的标识;一个具有一个或多个实例入口的实例列表,每一个所述一个或多个实例入口包括一个对应于当前装载在所述嵌入设备中的所述类目标的所述各个实例的标识;和,一个类装入程序方法,它装载一个经由所述网络接口从客户所接收的应用程序类,为所述应用程序类创建一个类目标,将所述类目标存储在所述应用程序高速缓存器中,将包含一个所述类目标的标识的一个类目标入口添加到所述类目标列表,例示所述添加的类目标的一个或多个实例,并且将包含一个所述类目标的所述各个实例的标识的各个实例入口的添加到所述实例列表。
根据本发明的一种用于管理嵌入设备中的应用程序的方法,包括:接收一个应用程序类;为所述应用程序类创建一个类目标;将所述类目标存储在所述嵌入设备的一个应用程序高速缓存器中;将包含所述类目标的一个标识的一个类目标入口添加到保持在所述嵌入设备中的一个类目标列表中;例示所述类目标的一个或多个实例;以及,对于所述类目标的每一个例示的一个或多个实例,将包含所述类目标的所述各个实例的一个标识的各个实例入口添加到保持在所述嵌入设备中的一个实例列表中。
附图说明
根据阅读下面的详细描述并结合附图将会更好地理解本发明,在附图中,同样的参考标志被用来标记相同的元件,其中附图如下所示:
图1是本发明工作的网络系统的系统图;
图2是本发明所实现的嵌入设备的方块图;
图3是说明应用程序如何完成生命的流程图;
图4是按照本发明实现的一个应用程序管理程序的一个实施例的工作流程图;
图5是按照本发明实现的一个应用程序管理程序的一个实现的类图;
图6是说明为执行一个装载操作在图5所示的类之间通信的流程图;
图7是说明为执行一个启动操作在图5所示的类之间通信的流程图;
图8是说明为执行一个停止操作在图5所示的类之间通信的流程图;以及
图9是说明为处理一个存储器溢出状态在图5所示的类之间通信的流程图。
具体实施方式
下面详述嵌入设备的一种新颖的应用程序管理程序。虽然本发明从Java环境的角度加以描述,但业内专业人士将会懂得,本发明的原理适用于由处理以与硬件无关的语言编写的代码的一个与硬件无关的处理器组成的任何系统。
现在回到图1,其中示出一个网络系统10,其包含一个经由网络14与一嵌入设备20通讯的计算机系统12。网络14可以是普通的陆上连接的有线网络如LAN(局域网)或WAN(广域网),或者可以是一个无线网络,或者它们的任何组合。
计算机系统12在这个系统中用作为一个客户,执行一个客户应用程序2,其经由一个客户接口4通过网络14与服务器设备(例如,嵌入设备20)相连。在这个例子中,客户应用程序又发送请求(例如,下载App13,启动App13,停止App12)到嵌入设备20,其用作一个服务器以便服务该请求。客户应用程序2可以在计算机系统12上它自己的环境中执行,或者用另一个办法在一个Java使能Web浏览器(未示出)内执行,该浏览器包含它自己的Java虚拟机(JVM-JavaVirtual Machine)(未示出)。Web浏览器用嵌入的Java小应用程序解释Web文件,Java小应用程序规定主客户应用程序小应用程序类文件的地点。Web浏览器启动它的JVM并传送客户应用程序小应用程序类文件的地点到它自己的类装入程序6。每个类文件知道它请求的任何附加的类文件的名字。这些附加的类文件可以来自于网络14(即与网络14相连的其它机器)或客户计算机系统12。
嵌入设备20是一个Java使能设备,具有安装在它上面的Java虚拟机(JVM)22。图2是更详细说明嵌入设备的一个方块图。嵌入设备20包括一个JVM22、一个由应用程序高速缓存器52和数据高速缓存器54组成的存储器50以及一个网络接口25。JVM22包括一个类装入程序42和一个执行单元46。最好JVM22也包括一个字节代码检验器44,虽然在有些存储器受限制的设备中这不可能实现。按照本发明,类装入程序42采用本发明的应用程序管理程序24来实现。应用程序管理程序24是一个负责下载、执行和高速缓存器其它基于Java的程序的Java程序。当JVM22开始在嵌入设备20上执行时,它开始执行应用程序管理程序24。
应用程序管理程序24是一个服务器设备,用作一个基于网络的类装入程序,能通过网络14经由一个网络协议48接收应用程序类文件40,并把在应用程序类文件40中包含的应用程序类传到文件中。如本专业技术人员所知,一个类文件40是包括与硬件体系结构无关的由Java编译程序产生的字节代码的一个文件。字节代码仅由JVM例如JVM22才可执行。应用程序管理程序24是一个非典型的基于网络的Classloader,根据需要从网络14装载类40。不是象由典型类装入程序通常所做的那样通过Javaload Class()方法装载类文件40,应用程序管理程序24代之以在服务器套接字或其它协议48上等待下载类文件40的一个请求。当接收到一个下载请求时,应用程序管理程序24从网络14接收类文件40,把它传到类28a、28b,然后调用JavaClassLoader.define class()方法。类28a、28b应被解析以确保通过调用JavaClass Loader、resolve Class()方法它准备好用于目标实例。
图3说明应用程序26a、26b、26c如何带来生命力。如图所示,这通过例示一个应用程序的Java类28a、28b,创建类28a、28b的一个实例目标30a、30b、30c,然后调用在目标30a、30b、30c上的一个main方法以运行应用程序26a、26b、26c来完成。相同应用程序的多个实例可以通过创建相同Java类的多个实例同时被执行。例如,如图3所示,目标30a和30b是相同类28a的实例,而目标30c是不同类28b的一个实例。因此,应用程序26a和26b是相同应用程序的不同实例,其可以同时运行,而应用程序26c是一个完全不同的应用程序。
应用程序管理程序24提供下载、启动、停止、查询和存储器管理能力。为了通过网络14提供这些能力,嵌入设备20包括一个实现网络协议48的网络接口25,其允许客户12发送请求到嵌入设备20的应用程序管理程序24。在优选实施例中,网络接口25使用由应用程序管理程序24规定的一种通用Java语言应用程序接口(API)对应用程序管理程序24说话。通用API给远程设备例如计算机系统12提供规定设备20的所希望的管理的能力。附录A列出在本发明示例性实施例中定义的APIs。
特别是,应用程序管理程序24允许新应用程序通过网络14下载到设备20。在优选实施例中,这经由API的loadApplClass()方法来实现。loadApplClass()方法处理Java类文件40的下载和检验,把在类文件40中包含的应用程序类28a、28b装载到设备20上的Java环境,以及准备通过采用一个Java解释程序或一个Just in Time(JIT)编译程序(未示出)例示应用程序目标30a、30b、30c来执行的类28a、28b。应用程序管理程序24也管理在嵌入设备20上的Java应用程序26a、26b、26c的启动和停止,以便允许在计算机系统12或其它连网设备上的一个用户控制在嵌入设备20上所装载的Java应用程序26a、26b、26c的执行。在优选实施例中,这经由通用API的StartAppl()方法和stopAppl()方法来完成。应用程序管理程序24也允许查询应用程序信息例如哪个类目标28a、28b目前被装载,哪个类具有应用程序实例30a、30b、30c,以及每个应用程序实例处于什么执行状态(例如;“初始化”、“执行”、“停止”)。这在优选实施例中分别经由方法applClasses()、applications()和appllnstances()来完成。每个被装载的类目标28a、28b的名字在应用程序管理程序24目标内被作为一个属性,最好作为一个散列表被保存在一个应用程序列表23中。应用程序管理程序24也允许从Java环境中查询信息,例如可用存储器数量和总存储器数量。在优选实施例中,这个信息采用freeMemory()方法和totalMemory()方法来查询。应用程序管理程序24也提供存储器管理能力,包括在一个已装载应用程序必须被卸载之前设置所要求的空闲存储器数量的范围的能力,以及设置卸载已高速缓存器的应用程序的次序的能力。这在优选实施例中采用SetFreeMemoryLimit()和SetFreeAppsFirst()方法来完成。空闲存储器范围和卸载应用程序的次序可以采用getFreeMemoryLimit()和getFreeAppsFirstPolicy()方法来查询。这个信息保存在应用程序管理程序24目标内的一个散列表中,无论是作为每个应用程序列表23入口的一个单独字段,或是作为一个单独的卸载优先权列表21。
网络协议48被用作提供经由网络接口25对应用程序管理程序24的网络访问。网络协议48可以按照几种可供选择的实施例中的任何一种来实现。
在第一个实施例中,网络协议48采用Java远程方法支持(RMI)实现Java RMI允许在驻留在其它JVMs中的目标上进行直接方法调用。RMI一般要求大量存储器以支持目标连续、识别和方法发送。如果嵌入设备支持运行RMI的高存储器辅助操作,包括支持RMI名字服务器的运行,那么RMI是一个好的实现选择,如果与嵌入设备20相互作用的客户应用程序和应用程序管理程序24是基于Java的话。其它分布式目标机理(例如CORBA、DCOM)与RMI之间确实存在桥梁,同样允许客户以其它语言编写。使用RMI,应用程序管理程序24可以接受来自远程客户12的直接调用,以装载、启动和管理应用程序26a、26b、26c。基于RMI的应用程序管理程序接口的一个简单例子在附录B中给出。
在第二个可供选择的实施例中,网络协议48采用网络套接字(例如TCP/IP套接字协议)实现。如果在客户12侧也使用Java,那么把协议48包装在一个Java类(或多个类)内是有利的,以确保协议48在客户12侧和服务器(嵌入设备20)侧保持一致。为了确保网络协议48不执行由客户12或应用程序管理程序24可能拖延引起的网络的阻塞阅读,最好经由JavaSocket。setSoTimeout()方法或通过使用JavaInputStream。available()方法对read()操作设置一个等待超时,以确定多少数据可以无阻塞地阅读。
在这样一个网络套接字协议方案的一个实现中,识别所调用方法的单个字节,后面跟着由包装程序为那个特定方法译码的附加数据被传送。例如,要下载一个类文件40,客户12传送一个‘D’字符字节以表示该请求是为下载,后面跟着被传送的总数据长度,后面再跟着嵌入设备20的网络地址。在另一个实施例中,实际的数据是一个零终止字符类名字,后面跟着一个表示该类是否包括一个main方法的字节,后面再跟着包含类数据的字节。一个支持虚拟译码方法的目标模型被创建以执行协议译码。返回方法调用结果到客户12也可以在所使用的类似协议情况下被包装,以这一方法,结果被异步地从请求被返回,同时客户12实际上可以用作结果的一个网络服务器。如果客户12仅与一个嵌入JVM22交谈,同时是空闲地等待结果,那么可以采用一个较简单的方案,其中客户12等待(在一个超时情况下)结果同步地返回来。
在优选实施例中,应用程序管理程序被作为一个Java网络服务器应用程序来实现,其接受编码成一个应用程序协议48的请求,例如Java远程方法支持(RMI)协议、Web主机请求的超级文本传送协议(HTTP),或在TCP/IP套接字上的一个应用程序级协议。如前所述,在协议48中一个请求类型是一个应用程序的Java类文件40的下载。在优选实施例中,类文件40的下载通过调用方法loadApplClass()或方法loadAndlnit()实现。如前所述,类文件40是由JVM22使用的一个二进制Java字节代码流,以创建一个Java类目标30a、30b、30c。除了下载应用程序类文件40到存储器50外,应用程序26a、26b、26c继承的任何基(base)类或具有在类文件40中包含的应用程序类28a、28b的接口也被下载到存储器50中的一个应用程序高速缓存器52中。因为应用程序管理程序24允许在存储器50中的类文件40的高速缓存器,所以应用程序协议48允许经由跟随一个startAppl()方法调用的方法initAppl()执行驻留在存储器50中的已被下载的类文件。一旦一个类文件40被下载,JavaClassLoaderAPI就被用于例示与类文件40有关的类目标28a、28b。ClassLoader。defineClass()方法从类文件字节数组中建立一个类目标28a、28b。一旦被定义,该类必须被解析以执行类链接,其允许实例目标创建和方法调用。解析进程通过调用JavaClassLoader.resolveClass()API被初始化。
一旦一个类28a、28b被装载和定义,类28a、28b的一个实例目标30a、30b、30c被创建,在示例性实施例中通过JavaClass.newlnstance()API创建。需要目标30a、30b、30c,以便调用所希望的方法启动应用程序26a、26b、26c。为了调用newInstance(),类28a、28b必须有一个缺省的设计函数,其没有自变量。
应用程序26a、26b、26c通过调用在前面创建的目标30a、30b、30c上所希望的方法,传递任何自变量到该方法来执行。应用程序管理程序24必须知道访问目标的方法和传递什么自变量(如果有的话)。这可以用几种方法中的一种来完成。
在一个实施例中,要求所有应用程序以便实现规定所调用的方法的一个Java接口。下面示出一个简单接口。
公共接口ApplBase
{
公共空主线(InetAddress O);
}
这个接口规定一个实例方法“main()”,其是当一个应用程序26a、26b、26c执行时被调用的第一个方法。因为它是一个实例方法,所以在执行main()之前必须由应用程序管理程序24创建类28a、28b的一个目标30a、30b、30c。这个目标在应用程序管理程序24中可以是一个JavaAppl Base目标,因为仅仅main()被调用。在这个例子中,main()方法接收一个lnetAddress自变量,其包含下载类的客户1 2的网络地址。以这个方法,如果需要的话,应用程序可以通过一已知端口返回去与客户12通讯。
在另一个实施例中,如果JVM22支持反射,例如通过JavaRMI。那么方法名字被下载到应用程序管理程序24以及反射被用来搜索所希望方法的应用程序类。一旦类28a、28b被装载,则JavagetDeclaredMethod()被调用在该类上以便查找所希望的方法。getDeclaredMethod()返回一个Method目标,其可以通用调用invoke()依次被用于执行该方法。
在还有一个实施例中,从所有应用程序都从中继承的一个公共基类扩充的一个方法被调用。
一旦执行之后,应用程序管理程序24记录应用程序26a、26b、26c的新运行状态。每个应用程序类28a、28b包括一个各自的实例列表29a、29b,其识别它的类存在的每个实例。在实例列表29a、29b中每个入口包括一个执行状态变量,它在实例应用程序26a、26b、26c的生存周期内由应用程序管理程序24更新。
应用程序管理程序24处理在应用程序26a、26b、26c中产生的所有Java异常或错误,其要不然会引起JVM22终止。在应用程序终止情况下,应用程序管理程序24记录应用程序26a、26b、26c不再在运行(通过更新相应于在实例列表29a、29b中所识别的实例的执行状态),同时如果类28a、28b没有被高速缓存器到存储器50,则让类目标28a、28b作为垃圾被回收。
类28a、28b的高速缓存器是本发明的一个独特的特性,它便于获得更好的性能。每一次一个应用程序26a、26b被执行时不是下载应用程序类,而是应用程序管理程序24最好按照缺省高速缓存器类目标28a、28b,同时只有当明显地请求使用unloadAppl()方法或只有当存储器管理处理程序27由于低存储器或无存储器状态选择类被卸载时才卸载类28a、28b。在优选实施例中,当前已装载的类由存储器管理处理程序27卸载的次序采用SetFreeAppsFirst()方法设置。setFreeAppsFirst()方法允许客户在低存储器或无存储器状态中设置或更改应用程序被卸载的次序。这可以用几种方法中的任何一种来完成,包括通过在应用程序列表中增添一个卸载优先权字段到每个入口,它表示卸载类用的应用程序的顺序。通过高速缓存器类,应用程序管理程序24对该类保留一个标记,因而使Java虚所机22不会当垃圾回收28a、28b。应用程序类28a、28b则可以被重新使用以便创建类28a、28b的新实例30a、30b、30c,同时重新执行应用程序功能度。
应用程序管理程序24最好也允许将应用程序数据高速缓存器到存储器50中的数据高速缓存器54中,甚至在一个应用程序已终止和/或被卸载之后也是如此。一个例子是在电子试验域中的Java应用程序。应用程序的第一次执行应保存安装信息,这使得该应用程序将来运行时能较快地执行。在这个例子中,应用程序管理程序24能高速缓存器试验系统校准信息。另外,通过高速缓存器试验系统校准信息进数据高速缓存器54,应用程序管理程序54保留对一个数据的标记,因而使Java虚拟机不会当垃圾回收数据。因此,以这个方式的数据高速缓存器允许信息被保存以供同一应用程序或不同应用程序下次运行用。
应用程序管理程序24企图让应用程序26a、26b、26c能继续在低存储器或无存储器状态下执行。如果在应用程序26a、26b、26c执行期间JVM22运行存储器溢出,则产生OutOfMemoryError错误。应用程序管理程序24包括一个存储器管理处理程序27。它处理低存储器或无存储器状态。在优选实施例中,存储器管理处理程序27通过由JVM22产生的OutOfMemoryError的出现被触发进入运行。在一个实施例中,存储器管理处理程序27通过来自它的应用程序高速缓存器的明智地转储类目标28a、28b和应用程序目标30a、30b和30c来起反应。卸载被高速缓存器的类目标28a、28b和应用程序目标30a、30b和30c的次序采用setFreeAppsFirst()方法设置。另一方面,该次序按照在存储器管理处理程序27本身内被编码的一个预定算法来确定。通过调用JavaRuntime.gc()方法,应用程序管理程序通知JVM22卸载的类目标28a、28b和应用程序目标30a、30b和30c是可以用来被回收。来自应用程序高速缓存器52的类目标28a、28b的卸载迫使与类28a、28b有关的应用程序目标30a、30b和30c被终止以及同样被卸载。因此,如果应用程序执行的启动速度是重要的话,那么可能最好是在卸载类目标28a、28b之前卸载应用程序目标30a、30b和30c。另一方面,如果保持一个特定的应用程序无论如何总运行是重要的,那么可能最好是与那些目标有关的类一道卸载另一个类的所有应用程序目标,以便释放足够的存储器来保持该特定应用程序运行。让应用程序终止的解决办法是单独监视对低存储器状态起反应的存储器水平,或到检验点应用程序结果允许在一个检验点之后继续重新启动应用程序。这些方法可以允许执行应用程序使之继续不间断,或至少尽可能地接近不间断。
应用程序管理程序24最好提供存储器管理功能度。在一个实施例中,应用程序管理程序24标记类目标28a、28b,应用程序目标30a、30b以及在各自的应用程序52和数据54高速缓存器中的全局数据,因而确保它们有关的目标不会被当作垃圾回收。
在另一个实施例中,存储器管理处理程序27不断地监视空闲存储器水平,同时在低存储器或无有用存储器场合,从它的高速缓存器52、54中删除目标并启动垃圾回收站以便释放如所需要的那样更多的存储器。如前所述,在从应用程序高速缓存器52或数据高速缓存器54中删除入口之后,通过调用JavaRuntime.ge()方法启动垃圾回收站。关于应用程序管理程序24如何在低存储器状态管理存储器50,在实现一个应用程序管理程序24时必须进行选择。一个选择是哪个高速缓存器,应用程序高速缓存器52或是数据高速缓存器54,具有当低有用存储器产生时首先从中被删除的入口。在大多数情况下,它可能很容易删除应用程序目标和30a、30b、30c和有关的类目标28a、28b,同时当需要时重新下载它们。这个决定在它可以使用的长时间内被预测,以重新创建全局数据。
应用程序和全局数据目标最好被设计成尽可能地独立,以使高速缓存器方案能正确地工作。如果一个全局数据类被标记为类目标28a、28b的一个成员,则未被标记的数据类对释放存储器毫无作为,除非类目标28a、28b也未被标记。一个标记为类目标28a、28b的全局数据类的相反情况也引起相同结果。类目标28a、28b应仅标记为在方法中,而不是在类成员中的全局数据类。最好全局数据目标决不标记为类目标28a、28b。
图4是说明应用程序类高速缓存器52的管理的一个示例性实施例的工作流程图。应用程序管理程序24接收402来自一个客户12的请求。如果该请求的执行导致有用存储器的使用(例如,loadAppl()、loadAndlnit()、lniAppl()),则对于所接收请求的执行是否会导致一个低存储器或无存储器状态作出一个决定404。如果是的话,类目标28a、28b和/或应用程序目标30a、30b、30c被选择406,以便从应用程序高速缓存器52中卸载。所选的目标则从应用程序高速缓存器42中被卸载408。如果所接收的请求是一个loadAppl()或ladAndlnitAppl()请求,则一个类目标从网络14被装载和被定义410。如果请求是一个loadApp()请求,则该请求被完成。如果请求是一个loadAndlnitAppl()请求或一个lnitAppl()请求,则应用程序目标30a、30b、30c被例示412同时请求被完成。如果请求是一个startAppl()请求,则应用程序被启动414,一般通过调用在应用程序目标30a、30b、30c上的一个main()方法来实现。如果请求是一个stopAppl()请求,则应用程序被停止416。如果请求是一个unload()请求,则类目标28a、28b被卸载418。如果请求是一setFreeMemoryLimit()请求,则作为低存储器状态依据的空闲存储器阈值被设置420。如果请求是一个setFreeAppsFirst()请求,则为了在检测到低存储器或无存储器状态时卸载,选择应用程序类28a、28b和目标类30a、30b、30c的次序被设置422。如果请求是一个查询(例如,哪个应用程序类被装载(applClasses()),哪个应用程序被初始化(applications()),哪个应用程序目前正在运行(appllnstances()),存在多少可用存储器(freeMemory()),存在多少总存储器(totalMemory()),已存在的空闲存储器范围阈值是什么(getFreeMemoryLimit()),或已存在的卸载类和应用程序目标的次序是什么(getFreeAppsFirstPolicy()),则查询被执行,返回被请求参数424。
当已确定404一个低存储器或无存储器状态存在时,在示例性实施例中应用程序管理程序24删除被选择为卸载的目标的标记,并通过调用javaRuntime.gc()方法使得未标记目标从应用程序高速缓存器52中被删除。如前所述,仅仅未标记的类28a、28b被从高速缓存器52中删除,因为只有未标记的类可以通过JavaRuntime.gc()方法作为垃圾被回收。在有些JVM22实现中,类的ClassLoader目标可能也必须是未被标记为当作垃圾被回收的类。
图5是说明采用本发明的一个系统500的一个示例实现的一个类图。在图5的示例实现中所定义和使用的每个类的说明示于下面表1中。表2包含在图5的示例实现中所使用的每个类中所定义的主要属性的说明。如在图5中所示,类ApplMgr502管理应用程序类的一对多实例510。类ApplMgr502使用一个ServerProtocol类504,其与ClientProtocol类506交谈,以便与一个客户类ApplClient相连通。如在表1中所示,类ApplMgr 502是实现应用程序管理程序24的类。应用程序类51O模拟一个单一应用程序。ServerProtocol类504和ClientProtocol类506实现客户接口4。同时它们包装在应用程序管理程序类ApplMgr502和客户类ApplClient508之间的网络协议48。
                           表1
说明
ApplMgr 总的应用程序管理程序类
Application 建造一个单一应用程序
ServerprotocolClientprotocol 包装在代表由ApplMgr支持的接口的ApplMgr和Applelint类之间的网络协议
ApplBase 定义方法的接口,一个应用程序必须定义为由ApplMgr所使用
ApplClient 示例客户侧应用程序,用于与ApplMgr类相互作用
                                表2
名字 类别 说明
ApplMgr.idata 属性 全局数据值的散列表,它必须持续得超出应用程序类的寿命。通过get和set方法访问。
ApplMgr.iappls 属性 应用程序目标集,其已告诉ApplMgr来管理。
Application.icasses 属性 与这个应用程序有关的类的散列表。类用名字唯一地标识。一个类层次可以被用于创建一个应用程序,它要求使用一个散列表。
Application.iappls 属性 当前执行的应用程序的实例集。实例用类名标识,对所创建的每个实例,实例计数器增1。
Application.imainClass 属性 包含被执行的main()子程序的类。被执行的应用程序目标从这个类中被创建。
ServerProtocol.isock 属性 用于与ApplMgr通讯的ServerSocket。
ServerProtocol.iapplmgr 属性 ServerProtocol译码任何请求,然后在ApplMgr上进行适当的调用以便处理请求。ServerProtocol另一方面可以用直接RMI调用到ApplMgr来替代。
ClientProtocol.isok 属性 ClientProtocol与ServerProtocol通讯用的套接字
图6是说明类之间的通讯以完成一个新类的装载的系统500的方块图。表3规定初始假设、装载操作的结果和为完成装载所要求的代理程序。如所描述的那样,假设一个应用程序管理程序类ApplMgr 502正在嵌入设备20的JVM22中运行,同时通过指令ApplClient 508在客户计算机12上运行以便把新类下载到嵌入设备20,一个用户已请求一个下载。
                       表3
    假设 ApplMgr已经正在JVM中运行。
    结果 与应用程序有关的类被装载到JVM,“main类”的一个实例被创建,同时在这个新实例上init()方法被访问。
    代理程序 Dser=指令ApplClient下载新应用程序类到运行ApplMgr的嵌入设备ApplClient=下载Appl类的主机侧程序ClientProtocol=处理客户的网络通讯的主机侧类ServerProtocol=处理ApplMgr的网络通讯的服务器侧类ApplMgr=应用程序管理程序类Application=模拟一个被下载的应用程序的应用程序类
如图6中所示,一个下载操作用从一个客户用户应用程序例如客户用户类ApplclientU 516至客户应用程序ApplClient 508的一个用户请求602开始。在这个例子中,客户用户类ApplclientU 516通过遵照先传送一个‘D’字符,后跟包含类数据的文件名,再后跟类数据所要传送抵达的网络结点的协议产生一个下载请求。在这个例子中,类数据起名为‘test’,嵌入设备20的网络结点地址起名为‘HP’。请求602使得Applclient 508被运行以便下载类‘test’到结点‘HP’。Applclient 508读出在‘test’中所包含的类数据到存储器中,然后调用Client Protocol.Load Class()方法604下载该类。ClientProtocol 506形成一个至结点‘HP’的ServerProtocol的网络14连接,同时经由网络14发送606与类数据文件‘test’有关的类数据。ServerProtocol 504译码该请求和类数据,然后调用ApplMgr.loadClass()方法608装载类。如果需的话(即类已经不被高速缓存器在应用程序高速缓存器中),ApplMgr 502创建用于该类的一个应用程序目标610。ApplMgr 502则调用在应用程序510上的loadClass()方法612,传送与类‘test’有关的所有类数据。新应用程序目标被添加616到应用程序的ApplMgr高速缓存器,应用程序列表ApplMgr.iapps23被更新616以反映类‘test’添加到它管理的它们应用程序目标的事实。如果被装载的类‘test’是一个main类,则应用程序定义和解析该类,创建该类的一个实例,同时调用实例的init()方法,618。一个真正的结果被传送620回到Applclient通知成功地装载类。
在实现中,如果希望的话,ServerProtocol类504可以创建处理每个请求的一个单独的线索表,让多个请求同时被处理。如果以这个方式实现,由类ApplMgr502和Application510实现的方法必须适当地被同步。
如果一个应用程序510被配制为多个类,则对每个类将进行一个loadClass()请求。这要求ApplMgr502能查找并添加类到一个已存在的应用程序目标510。应用程序用一个唯一的名字,与main类相同的名字来识别。按照惯例,在装载main类之前先装载base类和接口,以确保main类的实例被正确地创建。另一个方案是创建一个新ApplMgr方法以创建一个应用程序的一个实例。这使得相同类的多个应用程序能同时被执行。
图7是说明为执行一个应用程序的启动在类之间的通讯的系统500的一个方块图。表4规定初始假设、启动操作的结果和为执行启动所要求的代理程序。如所描述的那样,假设一个应用程序管理程序类ApplMgr正在嵌入设备20的JVM22中运行,同时通过指令ApplClient在用户的机器上运行来启动嵌入设备20上的应用程序,一个用户已请求一个启动。
                        表4
假设 ApplMgr已经在JVM中运行。应用程序类以前已由ApplMgr装载
结果 所希望的应用程序开始执行
代理程序 Vser=指令ApplClient在结点‘HP’上启动应用程序‘test’。Applclient=启动应用程序的主机侧程序ClientProtocol=处理客户的网络通讯的主机侧类ServerProtocol=处理ApplMgr网络通讯的服务器侧类AppMgr=应用程序管理程序类Application=模拟被启动应用程序的应用程序类ApplBase=被启动的应用程序实例
如图7中所示,一个启动操作用从一个客户用户应用程序例如客户用户类ApplClientu 516至客户应用程序Applclient 508的一个用户请求702来开始。在这个例子中,客户用户类ApplClientu 516通过遵照先传送一个‘B’字符(为‘begin’),后面跟应用程序名‘test’,再后面跟类数据要传送抵达的网络结点‘HP’的协议产生一个启动请求。请求702使得ApplClient 508被运行以便启动在结点‘HP’上的应用程序‘test’。ApplClient 508调用ClientProtocol.StartAppl()方法704启动应用程序。ClientProtocol 506形成一个至结点上的ServerProtocol 504的网络连接,同时发送706一个启动消息。ServerProtocol 504译码启动请求,然后调用ApplMgr.StarAppl()方法708。ApplMgr 502查出正确的应用程序目标510,然后调用710在应用程序510上的startAppl()方法。应用程序目标510创建712一个新线索表518以便执行714它自己的run()方法。在run()方法内,ApplBase实例514的main方法被调用716,传递任何参数。如果没有参数被传递到应用程序实例,则run()方法应被直接调用。应用程序目标510则更改718应用程序实例的状态以便执行。
在另一个实施例中,一个ApplClass目标(即一个类装入程序512)管理模拟应用程序类510的一个实例的应用程序类。
图8是说明为执行一个应用程序的停止在类之间通讯的系统500的方块图。表5规定初始假设、停止操作的结果和执行停止所要求的代理程序。如所描述的那样,假设一个应用程序管理程序类ApplMgr正在嵌入设备20的JVM22中运行,同时通过指令ApplClient在用户的机器上运行来停止嵌入设备20上的应用程序,一个用户已请求一个停止。
                         表5
假设 ApplMgr已经在JVM中运行。应用程序类以前已由ApplMgr装载。应用程序已经正在运行。
结果 所希望的应用程序停止执行。
代理程序 User=指令ApplClient停止在结点HP上的应用程序‘test’。ApplClient=启动应用程序的主机侧程序ClientProtocol=处理客户的网络通讯的主机侧类ServeProtocol=处理ApplMgr网络通讯的服务器侧类ApplMgr=应用程序管理程序类Application=包含被停止的ApplBase实例的应用程序类ApplBase=被停止的执行应用程序实例
如图8中所示,一个停止操作用从一个客户用户应用程序例如客户用户类ApplClientU 516至客户应用程序ApplClient 508的一个用户请求802来开始。在这个例子中,客户用户类ApplClientU 516通过遵照先传送一个‘E’字符(为‘end’),后面跟应用程序名‘test’,再后面跟类数据要传送抵达的网络结点‘HP’的协议产生一个停止请求。请求802使得ApplClient 508被运行以便停止在结点‘HP’上应用程序‘test’的执行。ApplClient 508调用ClientProtocol.StopAppl()804方法停止应用程序。ClientProtocol 506形成一个至结点‘HP’上的ServerProtocol 504的网络连接,同时发送806一个停止消息。ServerProtocol 504译码停止请求,然后调用ApplMgr.StopAppl()方法808。ApplMgr 502查出正确的应用程序目标510,然后调用8l0在应用程序510上的stopAppl()方法。应用程序目标510通过传递到stopAppl()的名字查出ApplBase 514实例,同时调用它的terminate()方法812。应用程序则使用Thread.join()以确保ApplBase已终止。应用程序目标510更好ApplBase 514实例的状态814以便终止。
停止一个ApplBase 514实例是一个异步事件,因为应用程序正在以它自己的线索表执行。可能希望实际上不等待应用程序停止,因为如果应用程序不轮询它的终止标志,它将不停止。因此,在实现中,设计可以另外使用一个具有超时的join()方法,然后通过调用stop()迫使终止。
图9是说明当在执行应用程序510的一个实例期间出现低存储器或无存储器状态时类之间通讯的系统500的一个方块图。表6规定初始假设,存储器溢出状态的结果和执行处理该状态所要求的代理程序。如所描述的那样,假设一个应用程序管理程序类ApplMgr 502正在嵌入设备20的JVM22中运行,同时一个或多个应用程序类被装载和执行。
                       表6
假设 ApplMgr已经在JVM中运行。一个或多个应用程序类被装载和执行
结果 JVM和ApplMgr继续执行,同时通过管理用户应用程序类和实例高速缓存器释放存储器。
代理程序 User=指令ApplClient停止在结点‘HP’上应用程序‘test’。ApplClient=启动应用程序的主机侧程序ClientProtocol=处理客户的网络通讯的主机侧类ServeProtocol=处理ApplMgr网络通讯的服务器侧类ApplMgr=应用程序管理程序类Application=包含被停止的ApplBase实例的应用程序类ApplBase=被停止的执行应用程序实例
如图9中所示,一个运行应用程序510的一个实例ApplBase 514产生一个OutofMemoryError 902。最好Out of Memory Error由Application.run()方法内的存储器管理处理程序27处理904。处理程序27通过调用一个ApplMgr.out of Memory()方法906把状态通知ApplMgr 502。应用程序510则从run()返回以便停止ApplBase514线索表908。ApplMgr 502反复通过它的应用程序高速缓存器52,通过调用Application applcount()方法908发现不具有已执行的ApplBases的类。那些没有执行的ApplBases的应用程序被指示到freeMemory()910,其使得它们能从应用程序高速缓存器52中转除它们的类。ApplMgr 502则从它的应用程序高速缓存器52中删除912那些应用程序,同时调用Runtime.gc()914以使垃圾回收站回收未标记的目标因而释放存储器。
如上面详细描述的那样,本发明提供一个应用程序管理程序和API特性,其在一个Java虚拟机内运行,打算将该Java虚拟机用于电子设备或装置中以及在具有有限资源限制环境的其它嵌入系统中。当存储器资源变得有限时本发明提供高速缓存器和终止应用程序供将来运行的灵活性,以便为较高优先权的应用程序释放存储器。

Claims (7)

1.一种用于管理嵌入设备(20)中的应用程序的方法,包括:
接收一个应用程序类;
为所述应用程序类创建一个类目标(28a、28b);
将所述类目标存储在所述嵌入设备的一个应用程序高速缓存器(52)中;
将包含所述类目标(28a、28b)的一个标识的一个类目标入口添加到保持在所述嵌入设备中的一个类目标列表(23)中;
例示所述类目标(28a、28b)的一个或多个实例(30a、30b);以及
对于所述类目标(28a、28b)的每一个例示的一个或多个实例(30a、30b),将包含所述类目标(28a、28b)的所述各个实例的一个标识的各个实例入口添加到保持在所述嵌入设备中的一个实例列表(29a、29b)中。
2.按照权利要求1所述的方法,其特征在于,包括:
对每个在所述类目标列表(23)中标识的类目标(28a、28b)保持分开的实例列表(29a、29b)。
3.按照权利要求1或2所述的方法,其特征在于,包括:
接收一个指示要被启动的类目标的一个实例的启动应用程序的请求(startAppl ());
如果所述要被启动的实例不存在,则例示所述要被启动的类目标的所述实例,并且将对应于所述要被启动的实例的一个实例入口添加到所述实例列表中;以及
使所述更被启动的实例开始执行。
4.按照权利要求3所述的方法,其特征在于,包括:
接收一个指示要被停止的类目标的一个实例的停止应用程序的请求(stopAppl ());以及
如果所述要被停止的实例存在并当前正在执行中,则使所述要被停止的实例停止执行。
5.按照权利要求1或2所述的方法,其特征在于,包括:
接收一个指示要被卸载的类目标的一个实例的应用程序的请求(unloadAppl ());以及
如果所述要被卸载的实例存在,则使所述更被卸载的实例从所述应用程序高速缓存器(52)清除和使对应于所述要被卸载的实例的所述实例入口从所述实例列表(29a、29b)清除。
6.按照权利要求1或2所述的方法,其特征在于,包括:
对于所述实例列表中的每一个实例入口,更新一个指示对应于所述实例入口的所述实例的一个当前执行状态的执行状态变量。
7.按照权利要求1或2所述的方法,其特征在于,包括:
检测一个低存储器或无存储器状态(OutOfMemoryError()),所述低存储器或无存储器状态指示所述应用程序高速缓冲器(52)不具有所要求的自由存储器的量;
选择装载在要被卸载的应用程序高速缓存器(52)中的一个类目标(28a、28b);并且
从所述应用程序高速缓存器卸载所述选择的类目标。
CN00103710.2A 1999-03-01 2000-03-01 用于管理嵌入设备中的应用程序的方法 Expired - Fee Related CN1197004C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/259,616 US6430570B1 (en) 1999-03-01 1999-03-01 Java application manager for embedded device
US09/259,616 1999-03-01
US09/259616 1999-03-01

Publications (2)

Publication Number Publication Date
CN1265489A CN1265489A (zh) 2000-09-06
CN1197004C true CN1197004C (zh) 2005-04-13

Family

ID=22985656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN00103710.2A Expired - Fee Related CN1197004C (zh) 1999-03-01 2000-03-01 用于管理嵌入设备中的应用程序的方法

Country Status (3)

Country Link
US (1) US6430570B1 (zh)
JP (1) JP2000250758A (zh)
CN (1) CN1197004C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100410886C (zh) * 2005-09-02 2008-08-13 国际商业机器公司 管理任务实例的装置、系统和方法

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938254B1 (en) * 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
EP1073957B1 (en) * 1998-03-23 2003-05-21 Microsoft Corporation Application program interfaces in an operating system
US7283991B1 (en) * 1999-03-11 2007-10-16 Microsoft Corporation Caching system for path search optimization
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
EP1188291B1 (en) * 1999-06-11 2005-04-27 Microsoft Corporation General api for remote control of devices
DE19929751A1 (de) * 1999-06-30 2001-01-18 Siemens Ag System und Verfahren zur Übertragung von Daten, insbesondere zwischen einem Anwender- und einem Serverprogramm im Bereich der Automatisierungstechnik mit verteilten Objekten
US7257812B1 (en) 1999-12-16 2007-08-14 Sun Microsystems, Inc. Methods and apparatus for managing an application
US6874145B1 (en) * 1999-07-13 2005-03-29 Sun Microsystems, Inc. Methods and apparatus for implementing an application lifecycle design for applications
US6701334B1 (en) * 1999-07-13 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for implementing individual class loaders
US7882501B1 (en) * 1999-08-13 2011-02-01 Oracle America, Inc. System and method for enabling dynamic modifed class reloading in an application server environment
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
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
US6757291B1 (en) 2000-02-10 2004-06-29 Simpletech, Inc. System for bypassing a server to achieve higher throughput between data network and data storage system
EP1280051A4 (en) * 2000-05-04 2007-10-24 Access Co Ltd METHOD AND SYSTEM FOR PROCESSING INFORMATION
US20010049726A1 (en) * 2000-06-02 2001-12-06 Guillaume Comeau Data path engine
US6941351B2 (en) * 2000-07-11 2005-09-06 Microsoft Corporation Application program caching
US6829758B1 (en) * 2000-07-14 2004-12-07 Nokia Internet Communications, Inc. Interface markup language and method for making application code
US7012622B2 (en) * 2000-08-14 2006-03-14 Twin Communications Of America, Inc. Portable operating environment for information devices
US6651140B1 (en) * 2000-09-01 2003-11-18 Sun Microsystems, Inc. Caching pattern and method for caching in an object-oriented programming environment
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US20110213869A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Processing data flows with a data flow processor
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US20110219035A1 (en) * 2000-09-25 2011-09-08 Yevgeny Korsunsky Database security via data flow processing
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US8010469B2 (en) 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US9525696B2 (en) 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20110214157A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Securing a network with data flow processing
EP1207454A1 (en) * 2000-11-15 2002-05-22 International Business Machines Corporation Java run-time system with modified linking identifiers
US7191453B2 (en) * 2000-11-30 2007-03-13 Intel Corporation Discovery and integration of Jini services in non-Java clients
US20020083430A1 (en) * 2000-12-26 2002-06-27 Tadao Kusuda Uninstall control apparatus which controls uninstallation of device control software
US20020129351A1 (en) * 2001-03-07 2002-09-12 Nexusedge Technologies Pty. Ltd. Software engine and method for software application loading
US6836796B2 (en) * 2001-03-16 2004-12-28 Digi International, Inc. System and method to manage network-enabled embedded devices operating under various protocols
JP2004532456A (ja) * 2001-03-23 2004-10-21 エス2・テクノロジーズ・インコーポレイテッド 開発およびテストシステム並びに方法
US7530076B2 (en) * 2001-03-23 2009-05-05 S2 Technologies, Inc. Dynamic interception of calls by a target device
JP2002287990A (ja) * 2001-03-26 2002-10-04 Canon Inc アプリケーション管理装置、アプリケーション管理方法、記憶媒体及びプログラム
JP2002351680A (ja) * 2001-05-29 2002-12-06 Matsushita Electric Ind Co Ltd アプリケーション管理装置とアプリケーション管理システム
US20030055911A1 (en) * 2001-09-17 2003-03-20 Peterson Erik Lawrence System and method for retrieving data over a network
US20030192038A1 (en) * 2002-04-09 2003-10-09 Thomas Hagmann Linking data objects to a project development system
JP2003330732A (ja) * 2002-05-17 2003-11-21 Canon Inc 画像形成装置、制御方法、制御プログラム
US7529822B2 (en) * 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
FI116166B (fi) * 2002-06-20 2005-09-30 Nokia Corp Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite
US20040003018A1 (en) * 2002-06-26 2004-01-01 Pentkovski Vladimir M. Method and system for efficient handlings of serial and parallel java operations
CN1818871B (zh) * 2002-07-26 2010-05-05 株式会社理光 信息处理装置
US7554685B2 (en) * 2002-07-26 2009-06-30 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
US7526482B2 (en) * 2002-08-01 2009-04-28 Xerox Corporation System and method for enabling components on arbitrary networks to communicate
GB0229670D0 (en) * 2002-12-19 2003-01-29 Ibm System and method for managing memory resources in a shared memory system
US7089340B2 (en) * 2002-12-31 2006-08-08 Intel Corporation Hardware management of java threads utilizing a thread processor to manage a plurality of active threads with synchronization primitives
US20040153996A1 (en) * 2003-01-30 2004-08-05 International Business Machines Corporation Method and system for determining the defining classLoader of a Java class as it is being defined
JP4523991B2 (ja) * 2003-03-25 2010-08-11 株式会社リコー 端末装置、方法、システム、及びプログラム
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
US7337434B2 (en) * 2003-04-29 2008-02-26 Sony Ericsson Mobile Communications Ab Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device
US7870352B2 (en) * 2003-11-13 2011-01-11 Stalker Altan J State-based memory unloading
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
JP4303101B2 (ja) * 2003-12-26 2009-07-29 株式会社エヌ・ティ・ティ・ドコモ 通信端末およびプログラム
CN100365568C (zh) * 2004-01-06 2008-01-30 英业达股份有限公司 Java小应用程序下插件功能的实现方法
JP4731814B2 (ja) * 2004-01-19 2011-07-27 株式会社ネットワークス・プラス ウェブ広告システム
US7526515B2 (en) * 2004-01-21 2009-04-28 International Business Machines Corporation Method and system for a grid-enabled virtual machine with movable objects
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US7168513B2 (en) * 2004-02-27 2007-01-30 The Regents Of The University Of California Dynamic legged robot
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US7610586B2 (en) * 2004-04-30 2009-10-27 Tvworks, Llc Resource manager for clients in an information distribution system
KR100559251B1 (ko) * 2004-05-12 2006-03-15 한국생산기술연구원 개방형 인터넷망 기반의 로봇 개발을 위한 분산소프트웨어 통합서비스방법
US7831965B1 (en) * 2004-08-12 2010-11-09 Oracle America, Inc. Method and apparatus for facilitating intermediate linking of binary files in a virtual machine
US7398523B2 (en) * 2004-08-19 2008-07-08 International Business Machines Corporation Adaptive class loading
US7930693B2 (en) * 2005-04-04 2011-04-19 Cisco Technology, Inc. Method and system for accessing and launching a java based applet as a locally installed application
EP1739518B1 (en) * 2005-06-29 2007-10-03 Research In Motion Limited System and method for privilege management and revocation
US20070006065A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Conditional event timing for interactive multimedia presentations
US7721308B2 (en) * 2005-07-01 2010-05-18 Microsoft Corproation Synchronization aspects of interactive multimedia presentation management
US8020084B2 (en) * 2005-07-01 2011-09-13 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8656268B2 (en) * 2005-07-01 2014-02-18 Microsoft Corporation Queueing events in an interactive media environment
US20070006238A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Managing application states in an interactive media environment
US20070006062A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8799757B2 (en) 2005-07-01 2014-08-05 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006079A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation State-based timing for interactive multimedia presentations
US8305398B2 (en) * 2005-07-01 2012-11-06 Microsoft Corporation Rendering and compositing multiple applications in an interactive media environment
US20070006078A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
US7941522B2 (en) * 2005-07-01 2011-05-10 Microsoft Corporation Application security in an interactive media environment
US8108787B2 (en) * 2005-07-01 2012-01-31 Microsoft Corporation Distributing input events to multiple applications in an interactive media environment
US8326990B1 (en) 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
US9606846B2 (en) 2005-07-29 2017-03-28 Sap Se System and method for dynamic proxy generation
DE102005045904B4 (de) * 2005-09-26 2022-01-05 Siemens Healthcare Gmbh Datenverarbeitungseinrichtung mit Performance-Steuerung
US7765537B2 (en) * 2005-11-21 2010-07-27 International Business Machines Corporation Profiling interface assisted class loading for byte code instrumented logic
US8151201B2 (en) * 2006-08-17 2012-04-03 Research In Motion Limited User interface manager and method for reacting to a change in system status
CA2660366C (en) 2006-08-17 2016-08-09 Research In Motion Limited Enhanced user interface manager and method for managing non-contemporaneous user interface modules
US20080114962A1 (en) * 2006-10-05 2008-05-15 Holt John M Silent memory reclamation
CN100471135C (zh) 2007-01-26 2009-03-18 华为技术有限公司 实现业务分发与同步的设备、系统及方法
JP4855970B2 (ja) * 2007-02-20 2012-01-18 株式会社エヌ・ティ・ティ・ドコモ 端末装置およびプログラム
US8448193B2 (en) * 2007-04-27 2013-05-21 Ricoh Company, Ltd. Image forming device, information processing method, and information processing program
US8010973B2 (en) * 2007-05-31 2011-08-30 Calix, Inc. Class loader for managing a network
US8239861B2 (en) * 2008-02-07 2012-08-07 Arm Limited Software-based unloading and reloading of an inactive function to reduce memory usage of a data processing task performed using a virtual machine
JP5184268B2 (ja) * 2008-09-08 2013-04-17 株式会社エヌ・ティ・ティ・ドコモ 情報処理装置及びプログラム
JP2010187070A (ja) * 2009-02-10 2010-08-26 Sony Corp 情報処理装置、情報処理方法、プログラムおよび情報処理システム
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8732855B2 (en) 2010-09-30 2014-05-20 Google Inc. Launching a cached web application based on authentication status
US9165136B1 (en) * 2010-10-27 2015-10-20 Amazon Technologies, Inc. Supervising execution of untrusted code
US9229743B2 (en) * 2011-09-23 2016-01-05 International Business Machines Corporation Prevention of classloader memory leaks in multitier enterprise applications
US9348678B1 (en) * 2012-06-20 2016-05-24 Mobile Iron, Inc. Partitioned application environment
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
JP2016509305A (ja) * 2013-01-31 2016-03-24 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. ファームウェアインタフェース変数リポジトリに書き込まれるデータを示すためのコミットリストの更新
CN105095198B (zh) * 2014-04-16 2018-12-04 阿里巴巴集团控股有限公司 一种访问数据实体的方法及装置
EP2975516B1 (en) * 2014-07-11 2018-06-13 Accenture Global Services Limited Intelligent application back stack management
US9405578B2 (en) 2014-07-11 2016-08-02 Accenture Global Services Limited Intelligent application back stack management
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
US11129213B2 (en) 2018-10-12 2021-09-21 Charter Communications Operating, Llc Apparatus and methods for cell identification in wireless networks
US11922220B2 (en) * 2018-11-08 2024-03-05 Intel Corporation Function as a service (FaaS) system enhancements
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
US11340955B2 (en) * 2020-01-02 2022-05-24 International Business Machines Corporation Thread pool management for multiple applications

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026474A (en) * 1996-11-22 2000-02-15 Mangosoft Corporation Shared client-side web caching using globally addressable memory
US6067550A (en) * 1997-03-10 2000-05-23 Microsoft Corporation Database computer system with application recovery and dependency handling write cache
US6073173A (en) * 1997-03-17 2000-06-06 International Business Machines Corporation Method and apparatus for optimal rebasing of web page transmission
US5991795A (en) * 1997-04-18 1999-11-23 Emware, Inc. Communication system and methods using dynamic expansion for computer networks
US6173318B1 (en) * 1997-12-16 2001-01-09 Intel Corporation Method and apparatus for pre-fetching data for an application using a winsock client layered service provider and a transparent proxy

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100410886C (zh) * 2005-09-02 2008-08-13 国际商业机器公司 管理任务实例的装置、系统和方法

Also Published As

Publication number Publication date
US6430570B1 (en) 2002-08-06
CN1265489A (zh) 2000-09-06
JP2000250758A (ja) 2000-09-14

Similar Documents

Publication Publication Date Title
CN1197004C (zh) 用于管理嵌入设备中的应用程序的方法
US6430564B1 (en) Java data manager for embedded device
CN1256666C (zh) 无线设备上系统服务的动态下载和执行
US7107592B2 (en) Method, system, and program for making objects available for access to a client over a network
RU2302089C2 (ru) Система для обновления программного обеспечения в беспроводном устройстве
CN1416057A (zh) 用于应用程序执行的动态java类的加载
US7827373B2 (en) System and method for managing a short-term heap memory
RU2339076C2 (ru) Выполнение неверифицированных программ в операционной среде устройства радиосвязи
CN1427587A (zh) 用于远端更新家用设备功能的方法和系统
US20040019887A1 (en) Method, system, and program for loading program components
US7234137B2 (en) Method, system, and program for processing objects in a distributed computing environment
CN1834909A (zh) 用于远程设备系统软件的升级方法
US8510733B2 (en) Management of a grid computing network using independent software installation packages
EP1194846A1 (en) Network proxy for devices with limited resources
CN1707462A (zh) 用于动态托管分区页面分配的方法和设备
JP2009528589A (ja) 適応コンパイルコード
US20060248130A1 (en) Process and system for real-time relocation of objects during garbage collection
US20070203959A1 (en) Apparatus and method for managing resources using virtual ID in multiple Java application environment
US6519652B1 (en) Method and system for activation and deactivation of distributed objects in a distributed objects system
US7743377B2 (en) Cooperative threading in a managed code execution environment
US8312062B1 (en) Automatic resource leak detection
US6675381B1 (en) Software-module dynamic loader, a software-module dynamic loading method and a medium storing the software-module dynamic loading method
US20060101439A1 (en) Memory management in a managed code execution environment
CN1279439C (zh) 将数据流式传输至一网络中的计算机的系统和方法
WO1999044134A1 (en) Method and system for facilitating access to a lookup service

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050413

Termination date: 20100301