欢迎来到天天文库
浏览记录
ID:38047578
大小:35.50 KB
页数:3页
时间:2019-05-24
《Java工作原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java的工作原理Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用。同时,为了提高Java语言的性能和健壮性,还引入了如垃圾回收机制等新功能,通过这些改进让Java具有其独特的工作原理。1.Java虚拟机Java虚拟机(JavaVirtualMachine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全兼容地执行保存在.class文件中的字节码。Java虚拟机的“机器码”保存在.class文件中,有时也可以称之为字节码文件。Java程序的跨平
2、台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。Java虚拟机的建立需要针对不同的软硬件平台来实现,既要考虑处理器的型号,也要考虑操作系统的种类。由此在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上,在UNIX、Linux、Windows和部分实时操作系统上都可实现Java虚拟机。2.无用内存自动回收机制在程序的执行过程中,部分内存
3、在使用过后就处于废弃状态,如果不及时进行回收,很有可能会导致内存泄漏,进而引发系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序时把不再使用的对象内存释放掉,这种人为管理内存释放的方法往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。而在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并自动进行回收,避免了内存的泄露,也减轻了程序员的工作量。3.代码安全性检查机制安全和方便总是相对矛盾的。Java编程语言的出现使得客户端计算机可以方便地
4、从网络上上传或下载Java程序到本地计算机上运行,但是如何保证该Java程序不携带病毒或者没有其他危险目的呢?为了确保Java程序执行的安全性,Java语言通过Applet程序来控制非法程序的安全性,也就是有了它才确保Java语言的生存。Java字节码的执行需要经过以下3个步骤:(1)由类装载器(classloader)负责把类文件(.class文件)加载到Java虚拟机中。在此过程需要检验该类文件是否符合类文件规范。(2)字节码校验器(bytecodeverifier)检查该类文件的代码中是否存在着某些非法操作,例如Ap
5、plet程序中写本地计算机文件系统的操作。(3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。注意:Java虚拟机采用“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间以外的内存。如果是Applet程序,还不允许访问客户端机器的文件系统。Java的运行环境无论哪种语言都需要有它特定的运行环境,也就是平台。Java语言同样不例外。但是如何理解Java程序与硬件环境无关呢?几乎所有的语言都需要通过编译或者解释才可以被计算机执行,但是Java有一点
6、不同,它同时需要这两个过程。其实,也正是因为这个原因才使Java这种语言具有了平台无关性。当完成一个Java源程序后,首先,通过Java翻译程序将它编译成一种叫做字节码的中间代码,然后再由Java平台的解释器将它转换成为机器语言来执行,这一平台的核心就是JVM。Java的编译过程与其他的语言不同。像C++这样的语言,在编译时它是与计算机的硬件平台信息密不可分的。编译程序通过查表将所有指令的操作数和操作码等转换成内存的偏移量,即程序运行时的内存分配方式,目的是保证程序正常运行。而Java却是将指令转换成为一种.class的文
7、件,这种文件不包含硬件的信息,需要执行时只要经过安装有JVM的机器进行解释,创建内存分配后再通过查表来确定一条指令所在的地址。这样就有效地保证了Java的可移植性和安全性。Java平台具有这样的特性和它的结构有关。通常一个程序运行的平台是一个硬件或者软件运行的环境,目前比较流行的是WindowsXP、Linux、Solaris和MacOS。Java的平台不太一样,它由两个部分组成,即JVM和应用程序设计接口。1.JVMJVM是Java平台的核心,为了让编译产生的字节码能更好地解释与执行,因此把JVM分成了6个部分:JVM解
8、释器、指令系统、寄存器、栈、存储区和碎片回收区。 JVM解释器:即这个虚拟机处理字段码的CPU。 JVM指令系统:该系统与计算机很相似,一条指令由操作码和操作数两部分组成。
此文档下载收益归作者所有