爪哇执行设备和爪哇执行方法技术

技术编号:2871375 阅读:173 留言:0更新日期:2012-04-11 18:40
一种Java执行设备,包括:    扩展类库,包含预编译标准类库中包含的类文件所获得的机器码类文件;以及    Java虚拟机(JVM),执行机器码类文件或扩展类库中包含的应用程序文件。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及Java平台,更具体地说,涉及Java(爪哇)执行设备、Java类文件的配置、Java执行方法、Java文件的预编译方法以及Java虚拟机(JVM)中的执行方法。
技术介绍
由于对各种电子设备和产品(例如微波炉或遥控器)中包含的软件所用的独立于平台的语言的需求,Sun Microsystems公司引入了Java语言。为了创建独立于平台的执行文件,Java将源代码编译成Java字节码,Java字节码在Java虚拟机(JVM)上执行。如图1所示,编译器120将java格式的Java程序110编译成类格式的Java执行文件。这个类格式的Java执行文件由驻留在JVM内的解释器130解释并执行。JVM执行3个步骤,即装载类,在此步骤中装载执行程序所需的所有类;验证,在此步骤中测试类文件格式、访问授权、数据格式转换;以及执行程序。图2示出执行Java程序240的Java平台的层次结构。该层次结构包含用Java语言编写的Java程序240、包含Java虚拟机(JVM)220和Java应用程序接口(API)230的Java平台以及硬件相关的平台210。由于Java执行文件是包含平台中性(platform-neutral)的执行代码(即Java字节码)的类文件,仅当提供Java运行环境(JRE)时才能执行Java执行文件,而与开发Java执行文件所用的系统无关。由于Java具有很多优点,例如确保“一次编写任何平台执行”(WORA)特性的平台中性、动态可扩展性等等,这使Java得到了广泛应用。Java被广泛用作web服务的服务器技术,并且在大多数情况下,web应用服务器是基于Java的。此外,在嵌入设备中,提供用户服务或执行控制应用程序的运行环境中也采用Java。特别是,用于移动电话的MexE、用于数字电视的MHP、DASE、OCAP等等是标准的规范,这些规范将嵌入设备的应用环境定义为基于Java的运行环境。因此,很明显,Java将会更广泛地用于嵌入设备市场中。尽管Java被广泛应用于各种用途,与本机应用程序相比,Java应用程序却不能表现出令人满意的性能。近来,已经开发了很多用来解决有关Java性能问题的方法,并且由此带来了一些好处。这些方法通过把方法中所用的Java字节码编译成机器码,来提高传统JVM中所用的解释方法的效率。这些方法可分为以下三种类型第一种类型是及时(JIT)编译方法。在JIT编译中,在JVM执行Java应用程序期间,把在方法调用点调用的方法编译成机器码,并且直接执行机器码而不是Java字节码。尽管JIT编译执行Java比解释方法快,但是除了Java应用程序所用的存储器之外,还需要若干兆字节的随机存取存储器(RAM),这是因为JIT编译需要相当数量的存储器,而且通过对方法进行编译所获得的机器码要保存在存储器中以便其他时间再次使用这些机器码。此外,由于JIT编译方法编译在Java应用程序执行期间调用的所有方法,在Java应用程序执行期间由JIT编译引起的开销增大。orp是一种正处于研究阶段的使用JIT编译的JVM类型,它由Intel公司开发。第二种类型是动态自适应编译方法。动态自适应编译采用JIT编译方法和解释方法两者。在动态自适应编译中,只编译对Java平台的性能产生较大影响的hot方法,而其他方法则使用解释方法编译。为了确定哪些方法是hot方法,如果调用的方法数目比预定义的数目大,则在Java应用程序执行期间利用多种方法(例如确定hot方法的方法)来进行特征分析。图3是使用动态自适应编译的Java平台300的通用配置。Java平台300包含类库320和Java虚拟机(JVM)330。JVM 330包含JIT编译器340、执行不进行JIT编译的方法的解释器350、从类文件中装载所需类的类装载器360,以及维护在Java应用程序执行期间所需的数据结构(例如方法区、Java堆栈等等)并且结合和管理全部组件的运行系统(runtime system)370。图4是在使用动态自适应编译的JVM中执行一种方法的典型流程图。在步骤S410中调用方法之后,在步骤S420中确定该方法是否已经进行过JIT编译并且拥有机器码。如果该方法已经由JIT编译方法编译,则在步骤S460中执行机器码,并且过程返回到步骤S410。如果方法未经JIT编译,则在步骤S430中提出并更新被调用方法的特征信息(profile information)。然后,在步骤S440中基于特征信息确定被调用方法是否是hot(热门)方法。如果被调用方法是hot方法,则在步骤S450中将关于该方法的信息传送给JIT编译器,并且对该方法的Java字节码进行JIT编译。通过JIT编译所获得的目标机器码作为JIT编译的结果执行。如果被调用方法不是hot方法,则在步骤S470中将被调用该方法的信息传送给解释器,并且执行被调用方法。被调用方法执行完成后,过程返回到调用方法之前的时间点。图4中的流程图也应用于方法执行期间调用的其他方法。由于使用动态自适应编译的JVM仅编译全部被执行方法的一部分,由编译全部被执行方法造成的等待时间比JIT编译少。由于要维护的机器码的数量少,存储器负荷变得相对较少。然而,由于hot方法以外的其他方法是先解释后执行的,该方法既需要解释器也需要JIT编译器,并且为确定hot方法所进行的特征分析会引起Java应用程序执行期间的超载。JIT编译方法和动态自适应编译方法各有各的利弊。然而,大多数情况下,在存储器容量有限的嵌入设备中,动态自适应编译方法使用得更为频繁。Sun Microsystems公司的CVM或Insignia Systems公司的Jeode等等是一种类型的动态自适应编译方法。第三种类型是提前(AOT)编译方法。JVM中包含的JIT编译器在Java应用程序执行期间运行。而提前(AOT)编译器与JVM分离,独立于JVM使用。AOT编译器用在应用程序开发环境中。通常,通过编译Java类文件来创建可在目标设备中执行的执行文件。图5示出使用AOT编译器的通用流程。由AOT编译器520将Java源文件或类文件格式的应用程序文件510编译成对象文件540,以便应用程序文件510能被用于执行Java应用程序的目标设备。这里,执行Java应用程序所需的库类530也随应用程序文件510被同时编译。可在目标设备中独立执行的执行文件570由连接器550通过将对象文件540与运行系统模块560链接而创建。运行系统模块560用于提供除字节码执行引擎外的各种JVM功能,提供诸如碎片(garbage)回收、类型反射等功能。第三种类型明显不同于第一种和第二种类型。AOT编译方法采用与处理用C/C++编写的程序相同的方法来处理用Java编写的程序,从而创建依赖于目标环境的执行文件。第一种和第二种类型以标准的Java执行文件格式(即类文件)发布Java应用程序,并且当Java应用程序在目标设备中对JVM执行编译时。然而,AOT编译方法在开发平台中执行编译,并在将Java类文件编译成可在目标环境中执行的执行文件之后,发布Java应用程序。由于这三种类型的方法中存在这些不同,如果采用AOT编译方法,则Java平台的两个重要的优点就会变得毫无本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:郑云教
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1