先来介绍三个概念:
JVM----JAVA virtual machine
java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS
JRE----JAVA runtime environment
java运行时环境
JDK----java SE Development kit
java 标准版开发包
这是学习java最基础的三个概念,他们的关系如下
JDK(开发必备) | -|-----JAVA 类库 | ||
|-----JAVA编译器 | |||
|-----JRE(运行Java必装) | JVM | ||
类加载器 | -| | ||
字节码校验器 | |---运行java程序的其它环境支持 | ||
基础类库 | _| | ||
如图,平常跑跑java 程序 安装对应的JRE即可,如果需要开发 则需要jkd,单纯的jvm是没意义的(官方也没有对应的下载)
java从代码到运行:
java源文件(.java 文件)----->java编译器(使用javac编译)----->字节码文件(.class文件)---|
特定平台的机器码(OS可以运行的)<-- java虚拟机运行(使用java解释执行)<---|
java编译器生成的是与各个平台无关的字节码,这些字节码不面向任何的平台,他们只面向JVM,与此同时不同平台的JVM都是不同的,但是他们都提供了相同的接口来处理字节码,于此同时产生不同的接口对应不同的平台(linux/win)JVM可以说就是一个转换器。
另外jar包:
我们还会遇到.jar包。 jar (Java Archive File 译为java 存档文件)。直白点说就是一个压缩.class的zip包,但是由于他里边包含一个文件
META-INF/MANIFEST.MF(生成jar包时就有),使得里边的.class文件之间具有一定的结构。我们的程序就可以直接引用这些jar包(这里有点像C#中的dll文件),或者直接运行这个jar包
此处要注意
(1).java文件的名字是随意起的,但是倘若java 文件中有public 类,则.java文件的名字必须与这个类名保持一致,所以最多只能有一个public class。
(2)1、命名时大小写是敏感的(同时请记住,所有的关键字都是小写)。
2、默认的路径(jdk默认的路径)是 program files 中间有空格,最好选择无空格的路径(以及不要有中文字符,以免莫名其妙的错误)
环境变量:
为什么要设置环境变量呢?
在我们装好jdk后,如果不设置:在我们敲入java 或者javac命令时会提示:java、javac不是内部或外部命令,也不是可以运行的程序或批处理文件。这是因为:虽然我们已经在计算机上安装了JDK,而且JDK的路径下野有java和javac 这两个命令,但是计算机并不知道去哪里找这两个命令(换句话说计算机并不知道自己有这两个功能),所以我们需要设置一个指引(路径),告诉OS可以去这里看看。
Path:java编译运行工具的目录
ClassPath:java调用需要工具类所在的地址
JAVA_Home java安装目录的公有名字(就是JDK的安装目录)
java的内存回收机制(GC)
这个与C#的大同小异,这里就不多加赘述。只简单提下
(1)不及时回收内存--->可以用内存的数量空间就会变小--->回收的频率就会变高--->性能下降
(2)java始终都无法强制回收内存,只能建议jvm回收。
原文:http://www.cnblogs.com/jilodream/p/4275990.html