java运行机制和java虚拟机以及语言特点
java是编译型与解释性语言的混合体。
首先来解释下编译性语言和解释性语言:
编译性语是指程序执行前需要一个专门的翻译过程,将源程序翻译成能够直接运行的目标文件,一般是指机器语言,以后在执行时不需要再翻译目标文件,直接用目标文件在机器上直接运行,效率较高,现在的语言一般都是编译语言,如c、c++、vf、pascal、delphi.
解释性语言:是指程序执行时再翻译,这个翻译过程是由特定的软件叫作解释器来完成的。例如basic语言,由专门的解释器逐条翻译,每执行一句翻译一句。解释性语言没执行一次就得翻译一次,效率较低。
那么为什么说java是编译性与解释性语言的混合体?
java语言源代码写好后,首先要经过编译,将.java文件转换.class字节码文件。.class文件可以直接在java虚拟机上运行(jvm),jvm顾名思义是一台虚拟的计算机,定义在操作系统上的由软件模拟的计算机,不同的操作系统不同的平台java提供有特定的jvm,.class文件可以直接在jvm上运行,而不需考虑平台的差异性,这就是java可移植性的由来。jvm将.class字节码加载到内存,然后由其内特定的解释器将其翻译成对应的平台上运行的程序。总之,java首先将.java源文件编译成.class字节码,然后,运行时由jvm读取并翻译成jvm对应的平台目标程序,.class与平台无关有jvm来适应平台。
现在我们来讲讲java的特点了。
1、java是一种简洁有效容易学习的语言,它封装了c++语言中所有难以理解和复杂的操作,如头文件、指针、结构、运算符重载和虚拟基础类等。
2、面向对象,作为现代语言,怎么能偏离面向对象这一方向
3、适宜分布式计算,java具有强大的易于使用的网络编程api和联网能力,非常适合分布式计算程序。java应用程序可以向访问本地文件系统那样通过url访问远程对象。
4、多线程处理能力。
5、具有较高的安全性,java在设计时安全性设计考虑得很仔细,而且java是开源的,安全方面的bug能够及时得得到发现,并修复。
6、更加健壮、防患于未然:java在编译时对程序可进行可检查性异常进行检查,在程序为执行前就提前规避了这类错误,避免在运行时因为这类错误导致系统崩溃,起到了防患于未然的作用。
7、可移植性,java的.class文件与平台无关,由特定的jvm来适应不同的平台,能做到一处编写到处运行的特点,移植性特别好。
8、一种动态语言:因为java的解释语言特性,它是一种动态语言,可在运行的程序中加入新代码。