JAVA 程序运行机制
计算机高级语言按程序的执行方式可分为编译型和解释型两种。
编译型:通过使用专门的编译器,针对特定的平台将源代码一次性“翻译”成可被该平台硬件执行的机器码,并包装成该平台可识别的可执行文件格式,因为是一次性的编译成机器码,所以可脱离开发环境独立运行,但是移植有困难,因为是针对当前平台翻译包装的。现有C、C++、FORTRAN、Pascal等语言。
解释型:使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。边解释边运行,所以运行不能脱离解释器,运行效率低。不过只要有解释器,跨平台很容易。现有Ruby、Python等语言。
JAVA程序运行时,先需要将 *.java 文件编译成 *.class 文件(一种与平台无关的字节码),但此文件不可执行。再借助解释器来解释执行。
所以JAVA既是解释型又是编译型。这里负责解释 *.class 文件的就是JAVA虚拟机 JVM 。大致过程就是编译器面向虚拟机 JVM ,生成字节码,这些字节码格式一样,这些字节码不面向任何平台只面向 JVM ,不同平台的 JVM 不同,但他们都提供相同接口,JVM 是 JAVA 跨平台的关键所在。
安装并配置 JAVA 开发环境
下载JDK开发包,提供了编译、运行JAVA所需的各种工具资源,包括JAVA编译器,运行时环境、以及常用的JAVA类库等。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html下载后,在 /usr/ 创建目录(mkdir java), 将 JDK 包移入目录下,解压。
设置环境变量,打开文件 /etc/bashrc,加入以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_101
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/bashrc 即可编译运行 Java 语言了。
Java 程序的基本规则
Java 程序是一种完全面向对象的程序设计语言,因此必须以类的形式存在,类是 Java 程序的最小程序单元。
Java 解释器也必须有 main 方法,而且 main 方法必须使用 public static void 修饰,形参必须为字符串数组类型( String[] args ) 。
垃圾回收机制
Java 程序还有一个显著优点是不需要控制内存回收,Java 程序的内存分配和回收都在后台自动进行。JRE(运行环境,包含JVM)提供一个后台线程来进行检测和控制负责回收不用的内存。但一个潜在缺点是它的开销影响程序性能。
垃圾回收有以下几个特点:
- 垃圾回收机制工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里的内存空间,只能回收内存资源,对其他物理资源,如数据库连接、磁盘I/O等资源无用。
- 若想尽快回收不用的,可将用完的对象设置为null。
- 垃圾回收发生的不可预知性。可能定时发生,可能当CPU空闲时发生,也有可能等内存消耗出现极致时回收。
- 垃圾回收精确性的两个方面:一是精确标记活着的对象,二是精确定位对象之间的引用关系,这是实现归并和复制等算法的必要条件。
- 存在多种不同的垃圾回收机制。