美文网首页推文上热门(千万赞三)
从jdk、jvm、jre聊到path、classpath、Jav

从jdk、jvm、jre聊到path、classpath、Jav

作者: 学知 | 来源:发表于2020-02-25 23:47 被阅读0次

    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实战

    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 程序的运行时环境。

    相关文章

      网友评论

        本文标题:从jdk、jvm、jre聊到path、classpath、Jav

        本文链接:https://www.haomeiwen.com/subject/rdvkchtx.html