我的JAVA笔记001----JAVA语言概述和开发环境

我的JAVA笔记

----------------------------------第一章JAVA语言概述和开发环境
----------------------------------2018.11.14

1. 编译型语言和解释型语言

要运行一个机器,我们就要给他一个指令,但是我们给的指令,机器能懂吗?明显是不的,我们给的指令就是源程序,而机器能识别的语言是机器语言。在两者之间,我们就有两种方式来使得机器理解我们的语言。
在这里插入图片描述

编译型:

优势:性能更快,可以独立运行
缺点:集中翻译成哪个平台(操作系统)的指令,将只能在该平台上执行
e.g C/C++

解释型:

优势:运行时可以针对不同平台进行不同解释,跨平台
缺点:性能略差,不能脱离解释器独立运行
e.g Ruby,Python

2. JAVA运行机制

那么Java是属于哪一种呢?
准确来说,Java是不完全编译的,因为它编译的结果并不是机器指令,而是字节码文件(Byte,计算机中我们以二进制存储,8bit=1Byte)
在这里插入图片描述

JVM作用:

Java编译器将Java源代码编译成字节码文件*.class(不彻底的编译,并未编译成机器指令)。JVM(Java Virtual Machine,可以运行Java字节码文件的虚拟计算机,不同平台上的JVM不同)将字节码文件解释成对应平台的机器指令,这就是Java跨平台的原因。
举一个简单的例子来说,有两支不同的笔,但需要把一个笔帽套在两支不同的笔上,那么我们可以为这两支笔分别提供一个转换器。其中,我们可以把笔帽认为是Java字节码文件,转换器就对应JVM,两支不同的笔就是两个不同的操作系统。或者,再比如手机的充电接口有micro-USB(梯形的那种)、Type C(支持正反盲插的)、Lightning(苹果的),数据线就像是我们的“转换器”,一端总是Type A,另一端就是不同的手机接口。

JVM细节

类加载机制:反射
内存管理、GC
JVM代码解析、处理引擎
暂时不做了解,后续会学习到

3. JDK、JRE和JVM

JDK(Java Development Kit),包括Java编译器、Java运行时环境、常用的Java类库。(我们常说的SDK就是Software Development Kit)
JRE(Java Runtime Environment,运行时环境),包括JVM、各种基础类库和Java类库。
三者的关系,简单来说就是JDK包括JRE,JRE包括JVM。

4. Java环境变量的配置

(1)PATH环境变量

指定可执行程序的位置

编译和运行Java程序有两步:
首先,将源文件编译成字节码。
然后,解释执行字节码程序。

以上两个步骤所需的命令分别为javac和java。
安装完JDK之后,在windows系统下,运行cmd,在命令行窗口依次输入两个指令,此时我们暂时还没有配置PATH环境变量,窗口将输出不是内部或外部命令,也不是可运行的程序或批处理文件。其实我们安装之后计算机里面是有这两个命令的(在bin目录下),只是计算机现在不知道它在哪里,所以我们可以新建一个PATH的用户变量(系统变量和用户变量没有多大区别,只是用户变量针对的是当前用户,系统变量是对所有用户有效),将bin路径放到该变量的值中。

(2)JAVA_HOME

配置JDK的目录

重装系统后,无需重新下载JDK,但是由于注册表等等其他文件已经没有了,所以我们需要让计算机知道上哪里去找Java。
在Windows系统下,%JAVA_HOME%表示变量
在Mac系统下,$ JAVA_HOME$ 表示变量
我们就可以设置PATH的值为%JAVA_HOME%\bin($ JAVA_HOME$\bin),到时候仅修改JAVA_HOME的值就可以了。

(3)CLASSPATH环境变量

指定到哪里去找运行时需要用到的类代码(字节码)

在CLASSPATH设置的路径下搜索Java类。
可设可不设,不设置的话,默认在当前路径下搜索Java类。

学习一些基本的命令行

常用的命令
windows/linux
cd :转向哪个路径
dir/list:列出当前路径下的目录
mkdir/md:创建新文件
常用的目录修饰符
. :当前目录
… :上级目录
\ :根目录

猜你喜欢

转载自blog.csdn.net/guys_19/article/details/84073550