杜天宇++景慎艳
摘要:伴随信息化大数据时代的到来,促使人们追求越来越便捷的生活方式,更高品质的科技产品应运而生。Java虚拟机凭借其自身动态添删性、跨平台性、高保密性、低风险性等显著优点。从开发至今逐步在身份识别、电子货币交易、个人信息存储等多个方面取得了广泛应用。详细描述了Java虚拟机的发展现状并根据Java虚拟机的基本特点,分析存在问题,同时有针对性地提 出Java虚拟机优化常用解决对策,以期望对该领域内的进一步研究具有借鉴意义。
关键词:Java;虚拟机;系统优化
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)01-0072-02
Research on System Optimization of Java Virtual Machine
DU Tian-yu,JING Shen-yan
(College of Information Management,Liaoning University of International Business and Economics, Dalian 116052, China)
Abstract: Along with the information the arrival of the era of big date, encourage people to pursue more and more convenient way of life, higher quality of science and technology products arises at the historic moment. Java relies on its own dynamically and remove features,cross-platform,high confidentiality,low risks and other significant advantages,Since developed gradually in the identification, electronic currency trading, personal information is stored in many way has a wide rang of applications.
Key words: Java; virtual machine; system optimization
1 Java虚拟机的定义和发展现状
1.1 Java虚拟机定义
Java虚拟机,缩写为JVM是一个虚构出来的计算机,实际的运行主要是通过在实际的计算机上仿真模拟各种计算机功能来实现,具有自己完善的硬件架构以及相应的指令系统。其实,虚拟机并不是Java语言本身,它是个为特定及其编写的解释性软件。Java的虚拟机就相当于世界通用语言,能够被所有的设备同时应用,这是个人类创造的目的就是使得不同语言之间的翻译沟通更加容易。目前在金融、交通运输、电子商务、无线通讯等行业具有前瞻性和适用性发展,与此同时网络交易更加快捷与安全,使得Java成为目前网络上流行的编程语言。
1.2 发展现状
Java虚拟机是Java语言的灵魂,是Java技术的核心关键之处,尤其适合于分布式计算环境或面积相对较小的智能嵌入式系统。Java开发是由Sun Microsystems公司在1995年设计并推出的,主要包括Java程序设计语言和Java平台等方面。Java语言发展至今,Java扩展管理规范面向Java平台为其真正运行与网络管理模式的选择提供了一种新型的、规范的管理框架;Java扩展管理规范还带来了一系列标准统一的代理及服务。就目前而言,无论哪个Java应用程序设计和开发的人员都完全可以使用这些代理及服务用来监测Java虚拟机的运行状况。Java扩展管理规范具备跨越异构的系统体系结构、异构的操作系统平台以及异构的网络传输协议对分布式系统管理问题有着自己独特的解决办法可以在不同的环境下使用,使得Java虚拟机的性能监测变得简单。
2 Java虚拟机特点
2.1 广泛的跨平台性
一般的高级编程语言,需要编译成不同的目标代码以满足在其他平台不同界面上能够成功运行。而Java语言具有独特的可移植性,正是通过Java虚拟机避免了特定平台的干扰,直接处理Java源代码编译成的字节码与平台无关,保障“编译一次,自由执行”的特性,因此只要在目标机器上实现了符合规范的运行程序环境,就可以运行所有的Java程序。
2.2 强健的安全性
因为Java不支持指针等对安全机制存在影响的程序,但鼓励垃圾回收机制以及代码安全性检测,可以随时申请、自动释放内存资源避免因为内存耗尽而死机并且在一切对内存进行的访问都必须经过对象变量来实现,在程序正常运行之前必须进行安全检查、未经授权禁止读写文件并采用隔离的方法限制非法入侵的范围。
2.3 灵活的动态性
Java语言程序为保证数据的安全和出于简单性原则本身是不允许多重继承,但是可以通过接口来支持多重继承,与其他严格的类继承相比较具有更高的自由性和扩展性。还可以根据用户的需要,实现动态添加和删除信息,下载重要资源,扩大软件配置、维护、更新的范围而不会影响用户原有程序的执行,操作简便易行,受到更多青睐,为日益普及的网络应用提供了良好的基础。
3 Java虚拟机运行时执行的性能较低
通过资料查询,可以发现Java语言程序更适合于计算机互联网络的开发应用,其中关键的一点原因就是运行的过程中使用了虚拟机,虚拟机的实质是一个用来解释Java系统指令的软件包。保证了Java语言程序在任何机器下运行成为可能。JVM的性能体现在工作站和服务器上已经得到了很大提高,但是使用虚拟机而带来增加的额外抽象造成应用在虚拟机上的执行要比在本地平台执行的速度更慢,有时性能达不到要求。
由于常见的服务器和PC工作站大多是拥有64位或以上宽度的内存总线以及高主频CPU,所以一些短暂的停滞显得微不足道,可以简单地忽略不计。但如果碰到比较低端的移动通信设备和智能终端,就极容易发生让程序的启动速度变得很慢、启动时间延长的现象,还有一定几率产生较为明显地在指令完成过程中出现停顿和反应迟钝。提升程序性能的途径有很多,对于Java语言的相关程序性能的进一步提升应该采取遵循它的跨平台性和安全性的前提之下,而Java虚拟机的存在就是保障Java程序跨平台性和安全性的基础性要求,因此应该采用多种编译优化技术提高虚拟机的运行能力。
4 优化虚拟机性能的常用方法
4.1 采用FPGA硬件支持
如何借助硬件方式来解决Java虚拟机性能缺陷一直是厂商长久以来研究的关注点。尤其是随着信息化发展FPGA性能的日益提高,为Java虚拟机开发与设计提供更高的硬件支持成为可能。
编程逻辑器件的相对优势:第一,我们可以清晰认识到硬件设备专向专项设计变通、储蓄运载功能强大等方向发展,其中最突出的是高密度的FPGA硬件设备,其无论从运行速度、功能消耗和销售价格在内的很多特点已经能够充分与ASIC器件相比较。FPGA硬件的可重构计算特点极大地缩小了ASIC器件同传统软件之间的距离;第二,由于可配置硬件器件的存在,为用户提供了多重选择,综合利用软件工具设计硬件从而达到快速原型生成的目的,缩短产品生产周期、产品上市时间提早,取得先发制人的优势;第三,自由灵活的可配置性也可以确保可重构计算能够在计算开始的初期,甚至在程序运行的过程中实现现场配置,一些研究性的工作通过为Java虚拟机设计提供FPGA硬件在性能上收获很大。
4.2 即时编译的手段
基于现行的动态编译的执行模式,本文对Java程序性能的优化方面主要集中体现在基于即时编译技术的运行过程中优化。多项数据显示,基于字节码的优化空间非常有限,以完整保留Java字节码的跨平台的特性为目的,性能优化加速率仅仅为1%—3%;同时,Java语言程序特有的一些动态语言特性,如动态类加载,也要求众多的基于Java程序的优化只能被推迟到运行时进行。因此,对于Java程序的性能优化更多的依赖即时编译技术。即时编译技术即是Just-In-Time,简称JIT。可以笼统认为是在运行JAVA程序时,任何程序语言的执行通过翻译成为本地的机器指令是唯一途径,而Java虚拟机会根据字节码进行翻译,整个编译过程一般在字节码运行的前面发生。实际上,最初采用JIT技术的JVM进行即时编译的时候利用一个通用接口来调用外部代码翻译单元,代码翻译单元并不包括在JVM程序里面。JIT方法的结构图如图1所示:
图1 即时编译的运行结构图
即时编译的最小单位就是Java 方法。在运行一个Java方法之前,Java虚拟机就会把这方法的一些有关信息提供给JIT单元,同时直接运行编译后的本地代码。以后调用这种方法检测后都会对编译后的本地代码直接运行,其运行过程不受时间和次数的限制。
由于JVM与JIT单元摆脱了对Java的单一继承性,凭借开放式JIT接口的使用而促使相对独立,使得任何第三方开发人员都可以自由的进入系统实现编写JIT单元,无需受到来自JVM程序内部的其他要求的制约和干扰。Java程序的典型性运行方式主要是依靠目标终端的JVM用来执行Java的字节码文件。首先,解释器的翻译和执行性能相对较差,基本上除了嵌入式系统之外,大多数目标平台的JVM均会使用JIT对载入成功后的字节码统一进行优化编译并且执行。验证模块是用于对载入的字节码进行准确性检验,包括类型检查和字节码文件结构等。由于JIT技术的出现,对了Java程序的性能进行了显著地提高,几乎改变了过去人们对Java程序性能差的印象。
5 结论
基于Java语言程序的特点出发,保证强健的安全性是Java语言设计的最基本也是最重要的要求之一,虽然厂商和领域内针对Java平台的安全性从许多方面进行了富有专业性考虑,但是这些解决方案或多或少都存在不完善之处。主要是因为存储字节码的类文件的格式公开,又由于Java语言还要兼顾跨平台性以及可移植性,字节码的指令系统中一定会表现出相应的Java源代码中较多的信息,字节码的格式也比较固定,自然也就为反编译Java字节码文件来得到Java源代码提供了可能性。本文找到了现有Java虚拟机运行硬件性能不足的问题进行分析,确定采用方法内嵌、FPGA硬件支持、即时编译等手段对性能局限进行理解优化。对此完整地设计并实现了一套适于Java开发运行环境优化解决方案,为防止低水平重复开发、加快国产软件商品化、产业化的优先办法。
参考文献:
[1] 贺蕴彬. Java虚拟机的自适应动态优化[J]. 科技创新与应用, 2014(5).
[2] 尹相志, 胡百敬. SQL Server 2008 R2 Reporting Services 报表服务[M]. 北京: 中国水利水电出版社, 2012.
[3] 蔺华, 王玉清. Web 程序设计与架构[M]. 北京: 电子工业出版社, 2011.