论文部分内容阅读
Java语言是一种优秀的面向对象程序设计语言,它具有跨平台、健壮安全和通用性等诸多优点。基于这些优点,Java语言在个人PC、游戏控制台、数据中心和互联网等很多领域得到了广泛的应用。随着互联网越来越深入人们的日常生活,特别是云计算技术和移动设备的高速发展,Java相比于其他高级编程语言更具备了显著优势和光明的未来。但同时Java语言也有一个相当明显的缺点,相比于C/C++,它的运行效率比较低,这在一定程度上影响了Java语言的应用前景。Java技术区别于其他高级语言的最重要部分是对Java虚拟机的引入,所有的Java程序都在Java虚拟机上运行。在程序运行时,Java虚拟机把Java源程序的字节码编译成机器可以执行的本地代码。这个编译过程是在程序运行时发生的,所以其性能消耗是影响Java运行效率的主要原因。为了缩短编译时间提高程序运行效率,已经有多种编译技术被提出。
为了在实时环境下提高Java程序的响应能力和获得较高的运行效率,论文采用提前(AOT,ahead of time)编译技术,即在开源Java社区Harmony上实现提前编译器。AOT编译技术的主要思想是把方法的高效可执行代码,文中选用的是即时编译器生成的本地代码,及与代码运行相关的数据,以二进制文件形式存入本地磁盘或远程服务器,在虚拟机启动后将此二进制文件读入虚拟机并解析。当方法第一次被调用时,提前编译器将其本地机器代码取出做相应的处理,使代码可以正确运行。处理操作包括对方法本地代码的重定位操作、将方法的异常信息注册至虚拟机、为方法构建运行时常量数据区和类的动态装载。编译后的本地代码被保存在虚拟机中,可以重复调用。最后将AOT的编译执行效率与解释执行和即时编译技术作比较分析,实验结果表明AOT编译技术的编译效率达到设计要求。