当编写运行一个Java程序时,把用java编写的源代码编译成为.class文件,然后再用虚拟机运行.class文件,当编写的程序调用JavaAPI时,如使用了Java中的I/O流,可以调用Java的API方法满足程序的调用需要。Java虚拟机提供了一个平台,所有的Java程序都需要在这上面编译,从1.2版本开始成为Java2平台,java程序可以在不同的计算机上执行,因为其平台可以用软件实现。

1.java虚拟机

     java面向网络的核心就是java虚拟机,它支持java面向网络体系结构的三大支柱的所有方面:平台无关性,安全性和网络移植性。

java的虚拟机安装在哪里 java虚拟机运行什么文件_java

     java虚拟机的主要任务就是装载class文件并且执行其中的字节码。运行机制可以简略为下图:

java的虚拟机安装在哪里 java虚拟机运行什么文件_java的虚拟机安装在哪里_02

     Java class文件:

此文件在平台无关性的任务是:为java程序提供独立于底层主机平台的二进制形式的服务,这种途径打破了C或者是C++的首先编译,然后被链接成为单独的、专门支持特定平台硬件和操作系统的二进制文件的形式。java的二进制文件可以运行在任何支持java虚拟机的硬件和操作系统上二进制文件。

    当java编译器将源文件编译成为字节码时,这种字节码就相当于java虚拟机的机器语言,而不是真正的机器语言,传统的二进制可执行文件依赖于具体平台的整数的字节顺序,比如X86系列的可执行文件为低位在前,而对于PowerPC处理器,则是高位在前。

Java API:

     一般的,为了能够访问本地资源,Java API调用了本地方法,运行Java程序时,虚拟机或将会加载的class文件,同时其将和本地方法的动态链接库以及其它的class文件共同加载实现程序的运行。通过Java API,可以调研用本地方法,Java程序就不再需要调用他们了,并且Java API class文件为底层主机提供了具有平台无关性的、标准的接口Java程序,对于程序和平台而言,都具有同样的表现和可预测性为。

     其在安全性方面也做了贡献:在进行任何危险操作,如本地磁盘写入,都会调用安全管理器检验是否获得授权,安全管理器是一个特殊的对象,其能够为用户提供自定义安全策略的功能。其在1.2之后被访问控制器所取代,访问控制器是一个类,该类执行检验,以确定是否符合稀客某种操作。

Java程序语言:

    首先,这是一门面向对象的编程语言,此技术的一个长处就是要提高代码的重用率,提高开发的效率,效率的提升主要来自于Java对直接内存操作的约束。于C++不同,没有通过强制类型转换指针类型或者通过进行指针运算直接访问内存的方法。

     其次,Java避免无意间破坏内存的办法为自动的垃圾收集,这个和C++一样,有一个new操作符可以通过其来为新的对象在堆上分配内存,但是和C++不同的是,没有new对应的delete一样的操作符,java中垃圾回收器会自动来清理不再需要的对象,收回其所占的内存。

     垃圾收集器不允许程序员显示的指明那个对象被释放,不再像C++那样会出现内存泄露,多次是放同一个对象导致内存冲突。在一个办法就是在运行时保护内存的完整性是边界检查。例如声明了一个容纳10个元素的数组,C++操作第10个元素时,这是一个错误用法,但是并不会限制这么操作,但是,在Java中,这个将会抛出一个异常。再有一个确保程序健壮性的对对象的引用的检查,每次使用的时候,java可以确保这些引用不为空null;