Java,一门常年在TIOBE世界语言排行榜上霸榜的语言,有很多企业都需要招聘Java开发工程师。所以,以下这些面试官常问的问题值得你认真理解。
- jdk、jvm、jre分别是什么?
- Java通过什么实现跨平台性?
- 配置jdk环境变量时,path、classpath、JAVA_HOM分别有什么作用?
- windows平台和Linux平台如何配置jdk?
01 定义
JVM (Java Virtual Machine),也就是我们常说的Java 虚拟机。它只认识 以.class结尾的字节码文件,它能将字节码指令进行识别并调用操作系统向上的 API 完成动作。所以,jvm虚拟机是Java跨平台的核心。
JRE (Java Runtime Environment),Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK (Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。显然,这三者是一层层嵌套的关系:JDK>JRE>JVM。
02 跨平台性
所谓跨平台性是指Java代码可以一次编译多平台运行,Java实际上是通过不同平台的jvm虚拟机来实现跨平台的,不同平台的虚拟机都可以识别并解释字节码文件。所以说同一段Java代码编译后产生一个或多个字节码文件,这些字节码文件通过不同平台的jvm虚拟机映射到各平台的API接口,实现跨平台性。(插一句话,不同平台硬件不一样,架构不一样,暴露给上层的系统调用接口不一样,所以当然需要每个平台定制一套jvm来屏蔽各平台的不一致性)03 环境变量是什么?
在安装完jdk后,需要我们配置环境变量,那么在配置环境变量的过程中,遇到的path、classpath以及JAVA_HOME有又是什么呢?它们有什么作用?
-
path环境变量作用是指定命令搜索路径,比如常用的Java和javac命令就在path指定的路径下查找。
-
classpth环境变量作用是指定类搜索路径,jvm虚拟机就是通过classpath来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到classpath中,当然,当前目录“.”也必须加入到该变量中。
-
JAVA_HOME环境变量,它指向jdk的安装目,Eclipse/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
04 安装jdk实战
-
下载jdk安装jdk前,需要我们在Oracle官网(https://www.oracle.com/java/technologies/javase-downloads.html)下载适合你操作系统的jdk,我下载的是jdk-8u241-windows-x64.exe以及jdk-8u241-linux-x64.tar.gz,你也可以下载其它系统其它版本。
-
安装windows系统jdk
windows系统的jdk安装较为简单,使用默认安装即可,这里不再赘述。
- 配置windows系统环境变量
右键“我的电脑”--》“属性”--》高级系统设置--》环境变量,在系统环境变量中新建JAVA_HOME,值为C:\Program Files\Java\jdk1.8.0_191新建path,值有两个,一个是%JAVA_HOME%\jre\bin,另一个是%JAVA_HOME%\bin,新建classpath,值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 安装Linux系统jdk
步骤1:scp命令远程传输文件命令格式:scp 文件路径 用户名@IP地址:存放路径
例如:scp C:\Users\DELL\Desktop\jdk-8u241-linux-x64.tar.gz root@49.223.164.95:/usr/local/soft/
步骤2:打开Linux终端,解压jdk压缩包到指定目录命令格式:tar -zxvf 压缩包名称 -C 指定路径名例如:tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local/softins为方便记忆,我给解压后的jdk软件包改名,命令为:mv jdk1.8.0_241/ jdk1.8
05 配置Linux系统环境变量
linux中安装jdk,重在环境变量的配置:步骤1:打开配置环境变量的文件,命令是 vi /etc/profile步骤2:在配置文件只能底部添加JAVA_HOME,path,classpath的路径
#JAVA_HOME是jdk的安装路径
export JAVA_HOME=/usr/local/softins/jdk1.8
#CLASSPATH中'.'代表本级目录,另外添加了两个工具包rt.jar和dejar,中间用冒号隔开
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
步骤3:保存退出后让配置文件生效,命令为source /etc/profile06
步骤4:测试是否安装成功
windows平台打开命令行窗口,Linux平台则打开终端,输入java -version,如果正常输出jdk版本信息,则安装成功。
题外话:不知道你是否注意到,windows平台安装完jdk后,有两个jre,一个和jdk同一级目录,另一个在jdk文件夹下,那么这两个jre有区别吗?
另外,配置jdk时为何要添加path,是因为path路径下有java.exe、javac.exe 命令以及其它命令,javac负责编译源文件,java命令则将字节码文件交给虚拟机解释执行。而这些命令上它们本身又都是由 Java 编写的,所以在 jdk 目录下的 jre 既提供了这些工具的运行时环境,也提供了我们编写完成的 Java 程序的运行时环境。
网友评论