(一)PATH和CLASSPATH的作用

配置path路径,是为了让系统知道要用到的命令在哪里(省去每次执行命令都要先定到可执行文件所在目录,然后再执行命令的步骤)。CLASSPATH环境变量的作用是指定类搜索路径,JVM通过CLASSPATH来寻找类的.class文件。classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编译器就会到classpath参数对应的路径中去寻找对应的.class类文件,将其导入。
path是Windows查找.exe文件的路径;classpath是jvm查找.class文件的路径。

(二)在DOS界面下编译并运行Java程序

(假设已正确设置环境变量PATH和CLASSPATH)
javac命令:javac命令用来编译java源代码,生成相应的字节码.class文件
java命令:又叫Java解释器,用来解释执行正确编译之后生成的.class 文件(前提是这个类有主函数)

  • ps.使用java命令时,类名=包名+类名
    编译的时候带.java后缀名,解释执行时不用加.class*

在d:\test\source 文件夹中,新建HelloWorld.java。(在记事本中编写程序,将扩展名改为.java,需要管理员权限)(DOS不区分大小写,Java程序语法区分大小写)
`package ch1;

public class HelloWorld {

public static void main(String[] args)
{
    System.out.print("Hello四月朝阳");
}

}`

重点来了! 【编译-d参数】 【运行-cp参数】
-d参数的作用:
一是可以自动将编译生成的字节码.class文件保存到指定目录;二是可以根据源文件中的package包定义,自动生成相对应的目录,并将.class文件保存到它的包对应的目录中。
-cp参数(-classpath的简化)的作用:
在任意路径下使用,键入类的字节码文件绝对路径,找到.class文件。
ps.不加-cp,解释一个类时不能加绝对路径。

以上述代码为例,将生成的字节码文件存到d:\test\class文件中,并运行。
1.png

运行时还可以切换到这个类字节码文件所在目录进行运行
2.png

(三)Java中的几个概念

Java语言最重要的特点就是跨平台运行。Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。

首先,JDK
JDK(Java Development Kit) 是 Java 语言的软件开发工具包,包括运行环境、编译工具及其它工具、源代码等,基本上和J2SE等同。。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

然后,JRE
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)

最后,JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。使用JVM就是为了支持与操作系统无关,实现跨平台。


图来自CSDN兵哥LOVE坤

(四)Java安装时的几个问题

1、jre和 jdk 有什么区别? 为什么安装 jdk 后会有两套 jre

Ø jre 提供了 JAVA 程序运行的必要环境平台;jdk 提供了 java 的编程环境,它包含编译调试的环境功能,包含 jre。
如果只安装了 jre ,那么 cmd 命令行中只能执行 java 指令,不能执行 javac ;安装好 jdk 后才能执行 javac ,因为 jre 中不包含用于开发的编译环境;

Ø 之所以需要两套 jre ,是因为可以分担工作;当用户只需要执行 java 的程序时那么 c:\program files\java\jre 下的 jre 就够用 !当用户是 java 程序员,需要 java 开发环境,那么开发时,系统就会优先去找“ java 、 javac ”这些命令本身的目录或者他们的父目录的 jre ;这样开发时一般运行的是 jdk 下的 jre ;而运行外部程序时,一般运行的是c:\program files\java\jre ,实现了分工,不同的 jre 负责各自范围的内容。

Ø 补充一点jdk 下的 lib 与 jre 下的 lib 有何区别?

jdk下的lib包括java开发使用的jar包,jre下的lib是运行java程序的jar包。jar包文件格式就是zip。


C小羽
1 声望0 粉丝