JVM,JRE和JDK
- JVM(Java Virtual Machine):虚拟机,负责运行该系统中的java程序。在所有系统中运行java程序的时候代码可以不变,但要安装对应的虚拟机。java程序可以跨平台,但虚拟机不是跨平台的。
- JRE(Java Runtime Environment):包括虚拟机和java程序所需的核心类库,如果只需要运行一个开发好的java程序,只需要安装一个JRE就行了。
- JDK(Java Development Kit):其中包含了java的开发工具,也包括JRE。但安装JDK的时候还会提示是否安装JRE,这个时候可以选择不安装。
JDK的下载和安装
www.oracle.com,Downloads–>Java for Developers–>JDK Download,然后选择相应的版本下载即可,这里只显示最新的版本。
如果想要下载以前的版本,退回到上一步,找到页面最下边的Java Archive(档案),点击Download,里边有历史版本。
现在的最新版本是8,但还没有推广使用,现在企业中还在使用7.0(1.7.0)。
我用的是jdk-7u72-windows-i586.exe,7代表版本7,u是update的简写,72代表更新的72次,i586代表是32位系统的。建议用32位的,因为其可以向下兼容,并且x64的可能会报各种不明原因的错误。
我安装在了:D:\Java\jdk1.7.0_72
JDK安装目录下的文件
- bin文件夹:存放一些可执行程序
- javac.exe:java编译器,将.java文件编译成.class文件
- java.exe:java运行工具
- jar.exe:打包工具
- javadoc.exe:文档生成工具
- db文件夹:是一个小型的数据库,从JDK 6.0开始,Java中引用了一个新的成员JavaDB,这是一个纯Java实现、开源的数据库管理系统。这个数据库不仅轻便,而且支持JDBC 4.0所有的规范,在学习JDBC 时,不再需要额外地安装一个数据库软件,选择直接使用JavaDB即可。
- jre文件夹:包括虚拟机和运行时的类库。
- include目录:由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
- lib文件夹:lib是library的缩写,意为 Java 类库或库文件,是开发工具使用的归档包文件。
- src.zip文件:src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
配置path环境变量
在bin目录下新建一个hello.java文件,里面写上如下代码,保存
class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
打开dos窗体,进入到D:\Java\jdk1.7.0_72\bin这个目录下,
- 输入javac hello.java:这条指令是在将.java文件编译成.class文件,这条指令执行完之后,在当前目录下就会多出一个HelloWorld.class文件。
- 然后输入java HelloWorld:这是在执行这个class文件,之后会在下面输出HelloWorld。
因为javac.exe和java.exe都在这个bin文件夹下,所以要运行一个java程序的话都要进入到这个目录,并且.java文件都要放在这个目录下。
如何实现.java文件在别的目录下,当我进入到这个目录里,执行javac.exe也可以执行成功?
先举个例子,我在DOS窗口里,进入到随意一个目录,输入notepad都会打开记事本这个程序。
因为notepad.exe的所在路径配置到了path变量中,当操作系统在当前目录中找不到notepad.exe的时候,就会去path中找。
我的电脑–》右键–》属性–》高级系统设置–》环境变量
找到系统变量中的Path变量,编辑,在前边加入D:\Java\jdk1.7.0_72\bin;
这样在某个目录找不到javac.exe的时候,就会去Path中的目录去找了。
因为这个Path变量,如果不小心改了其他的,可能会导致系统出问题。
为了防止以后对Path的更改,我们新建一个名为Java_HOME的系统变量,里边的值为D:\Java\jdk1.7.0_72
然后把Path改为%JAVA_HOME%\bin; 这样以后我们就只改Java_HOME就行了,而不必该Path,导致不必要的麻烦。
小结
用javac.exe,这个程序编译,找到.java文件,编译成.class文件
用java.exe这个程序运行,找到.class文件,运行.class文件。
path配置的是可执行文件.exe。
配置了path路径之后,就可以在任意路径使用javac.exe和java.exe这两个程序了。
然后进入到.java文件所在的路径,将其编译成.class文件。
在JDK1.5版本之后,会在当前路径,即.java所在的路径,找.class文件。所以不用配置classpath也行。