计算机编程语言分为三代。第一代即机器语言。指令以二进制代码形式存在;第二代即汇编语言,使用助记符表示一条机器指令;第三代即高级语言,如C、C++、Java、Python等。比较高级语言中的C和Java来说,C语言的开发周期更长,但是运行效率却更高;Java语言的开发周期较短,但是运行效率相比较而言较低。C语言更适合于开发一些更底层的东西,而Java语言更适合开发应用程序。
Java语言相比较于C语言来讲:1、舍弃了C语言中指针,避免了空指针异常;
2、增加了垃圾回收器(Garbage Collection,GC)功能
Java的两种核心机制:JVM(Java虚拟机)和GC(垃圾回收)
-JDK(Java Development Kit)是Java开发工具包,提供编译、调试和运行一个Java程序所需要的所有工具,可执行二进制文件。JDK包括Java开发工具和JRE(Java运行环境)
-JRE(Java Runtime Environment)是指java运行时环境,是JVM的实现,在运行Java程序时使用。JRE包括了JVM和Java程序所需的核心类库(JavaSE API)
-JVM(Java Virtual Machine)是指Java虚拟机,当我们运行一个程序的时候,Java虚拟机将字节码文件转换为特定的机器代码,JVM提供了GC(垃圾回收机制)等
可能会有小伙伴有疑问:既然JDK包含了JRE,那么在安装JDK的时候,为什么最后还要安装一个单独的JRE呢?可不可以不装单独的JRE呢?本人建议还是装上单独的JRE。这样做可以防止在之后的学习中,安装集成开发工具eclipse的时候启动不起来,eclipse要去识别JRE,所以都装上比较好。
Java语言具有跨平台性,即一次编写,到处运行(Write once , Run Anywhere)。
Java语言的跨平台性是通过Java虚拟机实现的。因为Java程序运行在Java虚拟机(JVM)上,JVM屏蔽了不同电脑的底层操作系统和硬件的差异。我们在下载JDK时候,会根据提示选择对应不同操作系统的JDK进行下载,而JDK包括JVM,即下载了不同的JDK就会拥有不同的JVM。在程序运行时,先将Java源文件(即“.java”文件)编译成字节码文件(即“.class”文件),然后将字节码文件交给Java虚拟机(JVM)解释成特定的电脑上的机器码(即0和1组合);Java语言的另一个跨平台性的基础是Java的语言规范中规定了基本数据类型的取值范围等在各个平台上是保持一致的。
我们可以得出另一个结论,即因为Java的执行是先编译、后执行的语言,故不可单纯的归结为编译性语言或解释型语言。
下载完JDK之后,JDK文件夹中会包含这样的一个目录。
点开其中的bin目录会看到以下一些内容:
这些就是运行java程序时所用到的一些命令。最初下载完JDK时,在DOS窗口运行这些命令必须先进到该命令所在文件夹下才可以运行,如若在其他文件夹下使用该命令则会出错;为此,我们需要在安装完JDK时进行环境变量的配置,使得无论在任何目录下都可以成功执行这些命令。在配置环境变量是,需要改变的就是path这个环境变量(用户变量中),这个路径就是计算机在执行命令时寻找命令的路径(即在当前目录下找不到该命令,就会在path的环境变量指向的目录中寻找该命令),在这些路径中去寻找环境变量。在path这个环境变量中加上JDK的bin目录的路径,即可在任何目录下指令java命令。
配置环境变量有两种方式:
-直接加。即直接在path环境变量中加入JDK中bin目录的全路径,加“;”与其他的内容分隔开。(Win10可以直接新建一项内容,更方便)
-新建“JAVA_HOME”环境变量,赋值为bin目录的上层目录,然后引用该变量。即在path环境变量中加入的不再是全路径,而是“%JAVA_HOME%\bin”其中两个百分号就是指引用这个环境变量。