JDK安装

一、安装

1、Linux

  • 查看是否安装open JDK
[root&localhost /]# rpm -qa|grep jdk

# 如果有 --> 卸载
[root&localhost /]# yum -y remove xxxx
[root&localhost /]# mkdir /app/java
[root&localhost /]# tar -zxvf jdk-8u341-linux-x64.tar.gz /app/java
  • 配置JDK环境变量
[root&localhost /]# vi  /etc/profile  
export JAVA_HOME=/app/jdk1.8.0_341
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
  • 刷新配置环境使其生效
[root&localhost /]# source /etc/profile
  • 查看
[root&localhost /]# javac
[root&localhost /]# java -version
[root&localhost /]# echo  $PATH

2、Windows

  • 下载安装oracle官网

    JDK

  • 双击下载完成的文件进行安装,选择安装路径(尽量安装在固态硬盘),之后一路下一步

JDK1

JDK2

JDK3

  • 配置环境变量

a. 右键 “此电脑/计算机”,点击 “属性”,点击 “高级系统设置”,点击 “环境变量”

env0

env1

env2

b. 新建 JAVA_HOME 变量:在系统变量中,点击 “新建”

env3

c. 选择性配置 CLASSPATH 变量:在系统变量中,点击 “新建”

ENV6

d.编辑Path变量,将“%JAVA_HOME%\bin”和“%JAVA_HOME%\jre\bin”加入Path的变量值中

env4

e.每次编辑完“环境变量”,都要点击“确定”加以保存,否则配置无效

  • 测试

点击win+R 输入cmd 打开命令行窗口,输入 java -version

version

3、JDK为何要配Path和ClassPath?

  • JDK运行原理

一个xxx.java文件要想被运行,首先要被javac.exe编译生成字节码文件 ----> xxx.class文件

然后JDK中的Java命令运行此xxx.class文件,java代码就可以被执行。

  • 为什么要配置Path

平时使用cmd运行JDK中的命令时,只能在JDK的安装目录下运行如 javac和java命令。但是一旦脱离了当前安装目录,对于编写的java文件就没办法继续执行,会提示没有此命令。所以要想在任何目录下都能运行JDK命令,就需要在path中配置JDK的安装路径。这样,在cmd中运行java命令时,会先从当前目录进行查找,如果查找不到此命令的执行程序,便会到path路径查找,path中配置了JDK的安装路径,所以此时在任何目录下都能编译执行Java文件。

  • 为什么要配置ClassPath

F:\workspace 目录下Java程序不能在 F:根目录执行,因为F盘根目录压根没有此java程序源码,调用javac和java无法执行。ClassPath的作用就是配置好一个java程序存放路径。当在其他任何目录下执行一个当前目录没有的java程序时,会优先去ClassPath配置的路径中进行查找,如果没有在到当前目录下查找。

jdk1.5以后一般都不配置ClassPah

特别注意:配置方式上有所不同,如果单纯的配置一个路径结尾没有 " ;. ",那么只会去ClassPath配置的路径下查找,找不到就会提示文件不存在。配置了“ ;. ” 才会在配置路径找不到文件的情况下再去当前目录查找。

4、jdk目录说明

bin文件里面存放了JDK的各种开发工具的可执行文件,主要的是编译器(javac.exe)

db文件是一个先进的全事务处理的基于Java技术的数据库(jdk自带数据库db的使用)

include文件里面是Java和jvm交互用的头文件

jre为java运行环境

lib文件存放的是JDK工具命令的实际执行程序

二、JDK、JRE、JVM

1、定义

**JVM(Java Vitrual Machine)**Java虚拟机:JVM就是一个虚拟的用于执行bytecode字节码的“虚拟计算机”

JRE(Java Runtime Environment) 是 Java 的运行环境。面向 Java 程序的使用者,而不是开发者。如果你仅下载并安装了 JRE,那么你的系统只能运行 Java 程序。JRE 是运行 Java 程序所必须环境的集合,包含 JVM 标准实现及 Java 核心类库。它包括 Java 虚拟机、Java 平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit) 又称 J2SDK(Java2 Software Development Kit),是 Java 开发工具包,它提供了 Java 的开发环境(提供了编译器 javac 等工具,用于将 java 文件编译为 class 文件)和运行环境(提 供了 JVM 和 Runtime 辅助包,用于解析 class 文件使其得到运行),面向Java程序的开发者。如果你下载并安装了 JDK,那么你不仅可以开发 Java 程序,也同时拥有了运行 Java 程序的平台。JDK 是整个 Java 的核心,包括了 Java 运行环境(JRE),一堆 Java工具 tools.jar 和 Java 标准类库 (rt.jar)

即:JDK包含JRE,JRE包含JVM

2、两套 JRE

安装JDK时一定会在其子目录下面安装一个JRE,同时在安装的过程也会询问你是否要安装一 个外部的JRE,如果我们选择安装则就同时拥有了两个JRE。

安装 JDK的时候会在其子目录下安装一个 JRE,同时在安装的过程也会询问是否要安装一个外部的公共 JRE。如果选择安装则就同时拥有了两个 JRE,一套一般在c:\program files\Java\jre 下,一套自己选择的JDK安装路径下,如:D:\program files\Java\jdk1.8\jre。前面那套少了Server端的Java虚拟机(jdk1.8.0_281/jre/bin 多了个server文件夹)。

《疯狂Java》:公共JRE是一个独立的JRE系统,会单独安装在系统的其他路径下。公共JRE会向IE浏览器和系统中注册JAVA运行时环境。通过这种方式,系统中任何应用程序都可以使用公共JRE。由于现在在网页上执行Applet的机会越来越少,而且完全可以使用JDK目录下的JRE来运行JAVA程序,因此没有太大必要安装公共JRE

这两个 JRE本质上并没有任何区别,最主要的区别在于:

  • JDK目录里面的 JRE主要是设计用来运行JDK自带的那些工具的(Bin目录下),包括javac.exe。这些开发工具可以理解为包装器Wrapper(/lib/tools.jar),制作的目的是为了让开发者免于输入太长的指命,比如:javac.exe与输入java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main是一样的,会得到相同的结果。 /lib目录下的程序都很小,不大于29K,JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于JDK目录下的那套JRE就是用来运行一般Java程序的。
  • 外部的 JRE在安装的时候会自动注册到操作系统的path里面,一般在System32文件夹下可以看到java.exejavaw.exejavaws.exe 三个文件。jdk 1.8版本,安装时候会注册到环境变量中,在我的电脑\属性\高级系统设置\环境变量\系统变量中的 path中有个C:\ProgramData\Oracle\Java\javapath路径值生成,卸载jdk该值依然存在,卸载jre该值自动消失。

因此我们只要安装了外部的JRE(即使JDK没有安装,环境变量没有配置)则运行Java程序时都是用的外部JRE的java.exe程序来运行的(即使安装了JDK且配置了环境变量)(系统的默认path具有优先)。

验证我们用到的java命令是jre/bin目录下的方法:把jdk/bin目录下的java.exe剪切到别的地方再运行java程序(或者卸载jdk),可以发现程序正常运行。

java.exe 决定使用哪套JRE

在我们的电脑里面至少有两套JRE(如果安装了Borland JBuilder等高级开发工具,电脑里面会有更多套的JRE),由java.exe来决定使用哪一套JRE

当我们在命令行输入:java xxx的时候,java.exe的任务就是在我们电脑上众多的JRE中找到合适的JRE来执行xxxjava.exe依据以下顺序来寻找JRE:

  • 自己的目录下有没有JRE目录;
  • 父目录下有没有JRE目录;
  • 查询注册表HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\

java.exe的执行结果与我们电脑里哪一个java.exe搜索一下就会发现我们电脑里面也不止一个java.exe)被执行以及哪套JRE来执行java程序有很大的关系。

另外,java.exe在找到合适的JRE以后,还有一个验证版本的程序,也就是java.exe与JRE的版本一致才可以执行。如果出现版本不一致的问题,一定要记得两件事情:

  • 哪一个java.exe被执行
  • java.exe找到哪一套JRE

只要这两件事情确定了,我们就抓住了问题的来龙去脉,解决起来也就轻而易举了。

3、环境变量的配置

没有配置环境变量的时候,在jdk/bin路径下,终端可以正常执行javac命令,切换到别的路径,则报错:“不是内部或外部命令”。

似乎使用集成开发环境如idea或eclipse等开发并编译Java程序,而不使用命令行javac的方式来编译Java程序,那么就可以不配置jdk的环境变量了?

4、JVM

JVM(JAVA Virtual Machine,JAVA虚拟机)是JRE的一部分,JRE是JVM的补充。那么JVM到底在哪里呢?我们打开jdk1.8.0——\jre\bin,会看到client和server两个目录,在这两个目录中分别可以看到jvm.dll,这就 是我们所说的JVM之所在。

jdk/jre/bin 下有两个目录:server与client,这就是真正的jvm.dll所在。 jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录底下的jvm.dll

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值