Java工作原理
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,下面一起去了解一下Java工作原理吧,希望对大家有帮助!
Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用。同时,为了提高Java语言的性能和健壮性,还引入了如垃圾回收机制等的新功能,通过这些改进让Java具有其独特的工作原理。
Java虚拟机(JVM)
Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机。JVM是Java平台的核心,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全、兼容地执行保存在.class文件中的字节码。Java虚拟机的“机器码”保存在.class文件中,有时也可以称为字节码文件。
Java虚拟机的简历需要针对不同的软硬件平台来实现,既要考虑处理器的型号,也要考虑操作系统的种类。由此在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上,在UNIX、Linux、Windows和部分实时操作系统上都可以实现Java虚拟机。
为了让编译产生的字节码能更好的解释与执行,把Java虚拟机分成了6个部分:JVM解释器、JVM指令系统、寄存器、栈、存储区和碎片回收区。
JVM解释器:虚拟机处理字段码的CPU。
JVM指令系统:该系统和计算机很相似,一条指令由操作码和操作数两部分组成。操作码为8位二进制数,主要是为了说明一条指令的功能,操作数可以根据需要而定,JVM有256种不同的操作指令。
寄存器:JVM有自己的虚拟寄存器,这样就可以快速地与JVM的解释器进行数据交换。为了功能的需要,JVM设置了4个常用的32位寄存器:pc(程序计数器)、optop(操作数栈顶指针)、frame(当前执行环境指针)和vars(指向当前执行环境中第一个局部变量的指针)。
JVM栈:是指令执行时数据和信息存储的场所的'控制中心,它提供给JVM解释器运算所需要的信息。
存储区:JVM存储区用于存储编译过的字节码等信息。
碎片回收区:JVM碎片回收是指将使用过的Java类的具体实例从内存中进行回收,这就使得开发人员避免自己编程控制内存的麻烦和危险。随着JVM的不断升级,其碎片回收的技术和算法也更加合理。JVM 1.4.1版后产生了一种分代收集技术,简单来说就是依据对象在程序中生存的时间划分成代,以此为标准进行碎片回收。
无用内存自动回收机制
在程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行回收,很有可能导致内存泄露,进而引发系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序时把不再使用的对象内存释放掉,这种人为管理内存释放的方法往往会因程序员的疏忽而致使内存无法回收,同时也增加程序员的工作量。而在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并自动进行回收,避免了内存的泄露,也减轻了程序员的工作量。
代码安全性检查机制
安全和方便总是相对矛盾的。Java编程语言的出现使得客户端计算机可以方便的从网络中上传或下载Java程序到本地计算机上运行,但是如何保证该Java程序不携带病毒或没有其他危险目的呢?为了确保Java程序执行的安全性,Java语言通过Applet程序来控制非法
程序的安全性,也就是有了它才确保了Java语言的生存。