标签:
由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。这种字节码必须有java解释器来执行。因此可以认为:Java语言既是编译型语言,也是解释型语言,或者说Java不是纯粹的编译型语言,也不是纯粹的解释型语言。
Java程序的执行过程必须经过先编译、后解释两个步骤。
Java负责解释执行字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。JVM是一个抽象的计算机,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。Oracle公司制定的Java虚拟机规范在技术上规定JVM的统一标准,具体定义JVM的如下细节:指令集、寄存器、类文件的格式、栈、垃圾回收堆、存储区,提供了统一的标准,最终实现Java程序的跨平台无关性。
JDK中Devepment Tools组件:这是JDK的核心,包括编译Java程序必须的命令工具。实际上,这个选项里已经包含了运行Java程序的JRE,这个JRE会安装在JDK安装目录的子目录里,这也就是无须安装公共JRE的原因。
为什么不安装公共JRE?公共JRE是一个独立的JRE系统,会单独安装在系统其他路径下。公共JRE会向IE浏览器和系统中注册Java运行时环境。通过这种方式,系统中任何应用程序都可以使用公共JRE。由于现在在网页上执行Applet的机会越来越少,而且完全可以选择使用JDK目录下的JRE来运行Java程序,因此没有太大的必要安装公共JRE。
Source Code:安装这个选项将会安装Java所有核心类库的源代码。
安装完成JDK以后可以看到如下路径:
bin:该路径下存放了JDK的各种工具命令,常用的javac、java等命令就放在该路径下
db:该路径安装Java DB的路径
include:一些平台特定的头文件
jre:该路径下安装的就是运行Java程序所必须的JRE环境
lib:该路径下存放的是JDK工具命令的实际执行程序
javafx-src.zip:该压缩文件里存放的就是Java FX所有核心类库的源代码
src.zip:该压缩文件里存放Java所有核心类库的源代码
Java程序必须经过的两个步骤:1、将文件编译成字节码; 2、解释执行平台无关的字节码程序 分别使用java和javac两个命令。
如果编译出现‘XXX’不是内部或者外部命令,也不是可运行的程序,是因为程序找不到命令(windows系统不区分大小写,所以Path和PATH是一样的,而LinuX是区分大小写的,设置Path和PATH是有区别的,只需要设置PATH环境变量即可。不管是什么系统,只需把java和javac两个命令所在的路径添加到PATH环境变量中,就可以编译运行Java程序了)。
设置环境变量中用户变量是用于设置当前用户的环境变量,系统变量用于设置整个系统的环境变量。Windows系统,系统便令Path已经存在,可直接更改,在后面添加JDK安装目录bin文件安装目录,实际通常建议添加用户变量。
Java是严格区分大小写的语言。
Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序必须以类(class)的形式存在,类(class)是Java程序的最小程序单位。Java程序不允许可执行性语句、方法等成分独立存在,所有的程序部分都必须放在类定义里。
如果某个类能被编译器直接解释执行,则这个类必须包含main方法,而且这个main方法必须用public static void来修饰,且main方法的形参必须是字符串数组类型(String[] args是字符串数组类型)。也就是main方法的写法几乎是固定的。Java虚拟机从这个main方法开始解释执行,因此,main方法是Java程序的入口。
通常情况下,Java程序源文件的主文件名是可以任意的,但有一种情况除外,如果Java程序源代码定义了一个public类,则该源代码的主文件名必须与该public类(也就是该类定义使用来public关键字)的类名相同,因此,Java源文件里最多包含一个public定义的类。
Java所有的关键字都是小写的。
Java程序的内存分配和回收都是由JRE在后台自动进行的,JRE会负责回收那些不再使用的内存,这种机制被称为垃圾回收。通常JRE会提供一个后台线程来进行检测和控制,一般都是在CPU控线或内存不足时自动进行垃圾回收,程序员无法精确控制垃圾回收的时间和顺序等。
Java堆内存是一个运行时数据区,用于保存类的实例(对象),Java堆内存存储着正在运行的应用程序所建立的所有对象,这些对象不需要程序通过代码显式地释放。堆内存的回收由垃圾回收来负责,所有JVM实现都有一个垃圾回收器管理的堆内存。垃圾回收是一种动态存储管理技术,它自动释放不再被程序引用的对象,按照特定的垃圾回收算法来实现内存资源的自动回收功能。
为了让垃圾回收机制回收那些不再使用的对象,可以将该对象的引用变量设置为null,通过这种方式暗示垃圾回收机制可以回收该对象。
当编写Java程序时,一个基本的原则是:对于不在需要的对象,不要饮用它们。如果保持对这些对象的引用,垃圾回收机制暂时不会回收该对象,则会导致系统可用内存越来越少,当系统可用内存越来越少时,垃圾回收执行的频率就越来越高,从而导致系统的性能下降
标签:
原文地址:http://www.cnblogs.com/changzuidaerguai/p/5260153.html