Java基础-环境篇:JDK安装与环境变量配置jdk8/11/17(保姆式详解)

news2024/10/5 17:28:08

目录

一、Java简介

Java版本

名词解释JDK、JRE

JDK版本选择

 二、JDK的下载

下载方式1:

(1)在Developers页面中间的技术分类部分,选择Java,单击进入,如图所示: 

(2)这里展示的是最新Java版本,例如Java17。单击Download Java,然后选择具体的版本下载。

(3)选择Download Jdk按钮后

(4)如果想安装Java8 可以选择如下位置:

(5)选择Accept License Agreement,​编辑

(6)注册或登录后下载:

JDK17下载:

JDK11下载:

下载方式二:(可忽略)

 进入官网,点击Products;点击Java

进入界面下划,找到Java下载界面,点击Download Java now 

点击Java archive进入历史版本中

找到对应自己电脑的JDK,点击下载。我这里选择的是JDK1.8 64位 

Jdk安装包8/11/17均已下载,可按需求下载:(开源免费,省的注册Oracle账号)

三、Windows JDK的安装

安装说明

安装步骤:

(1)双击jdk-8u381-windows-x64.exe文件,并单击下一步,如图所示:

 (2)修改安装路径,单击更改,如图所示:

(3)将安装路径修改为D:\Software\Java\jdk-1.8_381\,并单击下一步,如图所示: 

(4)稍后几秒,提示安装JRE,更改默认目录,新建目录名为 jre加版本号 ,如图所示: 

四、Windows配置path环境变量

1、理解path环境变量

什么是path环境变量?

为什么配置path?

以JDK为例演示

2、查看默认配置的环境变量

3、配置JAVA_HOME+path(推荐)


一、Java简介

Java最早是由SUN公司(已被Oracle收购)的詹姆斯·高斯林(高司令,人称Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响。谁料到互联网的崛起,让Oak重新焕发了生机,于是SUN公司改造了Oak,在1995年以Java的名称正式发布,原因是Oak已经被人注册了,因此SUN注册了Java这个商标。随着互联网的高速发展,Java逐渐成为最重要的网络编程语言。

Java介于编译型语言和解释型语言之间。编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低。而Java是将代码编译成一种“字节码”,它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果。当然,这是针对Java开发者而言。对于虚拟机,需要为每个平台分别开发。为了保证不同平台、不同公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上。

随着Java的发展,SUN给Java又分出了三个不同版本:

  • Java SE:Standard Edition

  • Java EE:Enterprise Edition

  • Java ME:Micro Edition

这三者之间有啥关系呢?

┌───────────────────────────┐
│Java EE                    │
│    ┌────────────────────┐ │
│    │Java SE             │ │
│    │    ┌─────────────┐ │ │
│    │    │   Java ME   │ │ │
│    │    └─────────────┘ │ │
│    └────────────────────┘ │
└───────────────────────────┘

简单来说,Java SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同。

Java ME就和Java SE不同,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”。

毫无疑问,Java SE是整个Java平台的核心,而Java EE是进一步学习Web应用所必须的。我们熟悉的Spring等框架都是Java EE开源生态系统的一部分。不幸的是,Java ME从来没有真正流行起来,反而是Android开发成为了移动平台的标准之一,因此,没有特殊需求,不建议学习Java ME。

因此我们推荐的Java学习路线图如下:

  1. 首先要学习Java SE,掌握Java语言本身、Java核心开发技术以及Java标准库的使用;

  2. 如果继续学习Java EE,那么Spring框架、数据库开发、分布式架构就是需要学习的;

  3. 如果要学习大数据开发,那么Hadoop、Spark、Flink这些大数据平台就是需要学习的,他们都基于Java或Scala开发;

  4. 如果想要学习移动开发,那么就深入Android平台,掌握Android App开发。

无论怎么选择,Java SE的核心技术是基础,这个教程的目的就是让你完全精通Java SE并掌握Java EE!

Java版本

从1995年发布1.0版本开始,到目前为止,最新的Java版本是Java 21:

发行版本发行时间备注
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 1.11997.02.19JavaOne会议召开,创当时全球同类会议规模之最。
Java 1.21998.12.08Java拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.32000.05.08-
Java1.42004.02.06-
Java 5.0(亦即Java 1.5)2004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.02006.12.112009.04.20 Oracle宣布收购SUN公司
2009.04.20Oracle公司收购SUN,交易价格74亿美元。
Java 7.02011.07.02-
Java 8.0(亦即 Java 1.8)2014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)
Java 9.02017.09.22①此版本开始,每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.02018.03.21-
Java 11.02018.09.25JDK安装包取消独立JRE安装包,是长期支持版本(LTS)
Java 12.02019.03.19-
-
Java17.02021.09发布Java 17.0,版本号也称为21.9,是长期支持版本。
-
Java19.02022.09发布Java19.0,版本号也称为22.9。
Java 20.02023.03Java 20
Java 21.02023.09Java 21

所谓"长期支持版本",意思是这个版本会“长期更新”。Java8.0为例,它是一个长期支持版本,即 若Java9.0已经发布,并不意味着Java8.0不再更新了,它还是会继续更新 解决Bug的。因此可以长期使用Java8.0。

而其它 不是长期支持的版本,例如Java7.0,它若存在一些Bug,你想要解决它,对不起!无法在当前版本解决,当Java8.0发布以后,Java7.0就不再更新,你想解决它的Bug,只能去新版本的Java,即使用Java8.0。


名词解释JDK、JRE

初学者学Java,经常听到JDK、JRE这些名词,它们到底是啥?

  • JDK:Java Development Kit
  • JRE:Java Runtime Environment
  • JDK (Java Development Kit):是Java程序开发工具包,包含JRE 和开发人员使用的工具。
  • JRE (Java Runtime Environment) :是Java程序的运行时环境,包含JVM 和运行时所需要的核心类库

简单地说,JRE就是运行Java字节码的虚拟机。但是,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具。

**JDK = JRE + 开发工具集(例如Javac编译工具等)**

**JRE = JVM + Java SE标准类库**

二者关系如下:

  ┌─    ┌──────────────────────────────────┐
  │     │     Compiler, debugger, etc.     │
  │     └──────────────────────────────────┘
 JDK ┌─ ┌──────────────────────────────────┐
  │  │  │                                  │
  │ JRE │      JVM + Runtime Library       │
  │  │  │                                  │
  └─ └─ └──────────────────────────────────┘
        ┌───────┐┌───────┐┌───────┐┌───────┐
        │Windows││ Linux ││ macOS ││others │
        └───────┘└───────┘└───────┘└───────┘

要学习Java开发,当然需要安装JDK了。


JDK版本选择

image-20221108221057540


image-20220310201541841

  • 自Java 8版本发布以来,其后的每次更新,都会有小伙伴高呼:Java8 YYDS!
  • 论坛的声音:“你发任你发,我用Java 8!

数据说话1:

JRebel 于2022年4月前后发布了《2022 年Java生态系统状况报告》,报告中提到使用Java11 的占比最多,Java 8 紧随其后,如下图。而此前2020年的报告显示,Java8占比达到了84.48%

d315

我的分析:

G1是最受欢迎的GC算法。Java 11及更高版本的G1收集器是默认的GC,而Java 8中并不是。出于对G1的喜爱,很多开发者才会选择抛弃Java 8。

数据说话2:

此外,某美国软件开发商在对近千名专业的Java开发者调研后,发布的《2022年Java开发者生产力报告》称:八年前发布的Java 8依然是Java中应用最广泛的版本,占比 37%,其次是 Java 11,占比29% 。

高斯林说话:


image-20220428151952049

Spring框架说话:

在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划在2022年第四季度实现总体可用性的高端基线:

  • Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)

  • Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)

Spring 官方说明:Spring Boot 3.0.0-M1 is now available

image-20220527155439683

意味着:springboot3.0 是需要用java17和spring6.0为基础建设。如果从企业选型最新springboot3.0作为架构来说,它搭配jdk17肯定是标配了。


 二、JDK的下载

教程使用的Java版本是最新版的Java 8,也是市面上最为主流最稳定的一个版本~~~

  • 下载网址(Oracle公司官网):Oracle | Cloud Applications and Cloud Platform

下载方式1:

如图所示,在官网底部选择Developers开发者

(1)在Developers页面中间的技术分类部分,选择Java,单击进入,如图所示: 

 

(2)这里展示的是最新Java版本,例如Java17。单击Download Java,然后选择具体的版本下载。

 

(3)选择Download Jdk按钮后

(4)如果想安装Java8 可以选择如下位置:

 ​

(5)选择Accept License Agreement,

(6)注册或登录后下载:

JDK17下载:

JDK11下载:

下载方式二:(可忽略)

同样进入Oracle官网:Oracle | Cloud Applications and Cloud Platform

 进入官网,点击Products;点击Java

进入界面下划,找到Java下载界面,点击Download Java now 

点击Java archive进入历史版本中

找到对应自己电脑的JDK,点击下载。我这里选择的是JDK1.8 64位 

 

 


Jdk安装包8/11/17均已下载,可按需求下载:(开源免费,省的注册Oracle账号)

 https://download.csdn.net/download/weixin_46474921/88368541

三、Windows JDK的安装

  • 安装说明

    • 傻瓜式安装,下一步即可。
    • 建议:安装路径不要有中文或者空格等特殊符号。
    • 暂时安装JDK8 ,并以JDK8为默认版本进行讲解。(之后会考虑安装jdk17)
  • 安装步骤:

之前win10系统配置的是jdk8u221,现在配置jdk8u381

(1)双击jdk-8u381-windows-x64.exe文件,并单击下一步,如图所示:

 

 (2)修改安装路径,单击更改,如图所示:

 

(3)将安装路径修改为D:\Software\Java\jdk-1.8_381\,并单击下一步,如图所示: 

 

 

jdk8 安装过程中会出现两次安装提示。第一次是安装jdk ,第二次是安装jre 。建议两个都安装在同一个java文件夹中的不同文件夹 

(4)稍后几秒,提示安装JRE,更改默认目录,新建目录名为 jre加版本号 ,如图所示: 

 (其实没有必要安装jre,因为jdk中已经包含jre,但若想安装则在jdk文件夹下新建文件夹)

 新建目录名为 jre加版本号 

 继续点击下一步

 (5)完成安装,点击关闭 

四、Windows配置path环境变量

1、理解path环境变量

什么是path环境变量?

答:window操作系统执行命令时,所要搜寻的路径。

为什么配置path?

答:希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。

以JDK为例演示

我们在C:\Users\目录下使用javac命令,结果如下:

1.8后的jdk会自动添加环境变量,所以我们不用配置环境 

2、查看默认配置的环境变量

右键“此电脑”,点击“属性”,点击“高级系统设置”,在“高级”一栏,点击“环境变量”

可以看到path变量已经自动配置了值C:\ProgramData\Oracle\Java\javapath 

正因如此,当我们查看java版本时会出现信息。 

但执行Javac命令时无响应,为了后续高级学习方便,手动配置环境变量。

3、配置JAVA_HOME+path(推荐)

  • 步骤:

(1)打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性

(2)选择高级系统设置

(3)在高级选项卡,单击环境变量,如图所示:

(4)在系统变量中,单击新建 ,创建新的环境变量,如图所示:

 

(5)变量名输入JAVA_HOME,变量值输入 D:\Software\Java\jdk-1.8_381 ,单击确定,如图所示:

(6)选中Path 环境变量,双击或者点击编辑 ,如图所示:

(7)在变量值的最前面,键入%JAVA_HOME%\bin。如图所示:

 

注意:强烈建议将%JAVA_HOME%\bin声明在path环境变量中所有变量的最前面! 

(8)环境变量配置完成,重启CMD命令行,在任意目录下输入javac 或java命令或java -version,运行成功。

 检验 java.exe 命令

检验javac 

 获取当前安装的 jdk 的版本信息:输入java -version

有的书籍、论坛、视频上还提到配置classpath,用于指名class文件识别的路径。其实是没必要的,反而建议大家如果配置了classpath环境变量,要删除。对于初学者,反而不友好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

set和map的学习

文章目录 1.set的原型2.set的成员函数1.构造函数2.代码演示 3.map的原型4.map的成员函数1.构造函数2.代码演示 5.OJ练习1.前K个高频单词2.两个数组的交集3.随即链表的复制 1.set的原型 template <class T, //set::key_typeclass Compare less<T>,…

【刷题-牛客】链表内指定区间反转

链表定区间翻转链表 题目链接题目描述核心思想详细图解代码实现复杂度分析 题目链接 链表内指定区间反转_牛客题霸_牛客网 (nowcoder.com) 题目描述 核心思想 遍历链表的过程中在进行原地翻转 [m,n]翻转区间记作子链表,找到子链表的 起始节点 left 和 终止节点 right记录在…

ForkJoin详解

1.分支合并 (大数据量的去使用) package com.kuang.forkjoin;import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.function.LongBinaryOperator; import java.util.stre…

【ROS入门】使用 ROS 话题(Topic)机制实现消息发布与订阅及launch文件的封装

文章结构 任务要求话题模型实现步骤创建工作空间并初始化创建功能包并添加依赖创建发布者代码&#xff08;C&#xff09;创建订阅方代码&#xff08;C&#xff09;配置CMakeLists.txt执行启动roscore编译启动发布和订阅节点 launch封装执行 任务要求 使用 ROS 话题(Topic)机制…

使用容器运行Nginx应用及Docker命令

目录 一、使用容器运行Nginx应用 1.1 使用docker run命令运行Nginx应用 1.1.1 观察下载容器镜像过程 1.1.2 观察容器运行情况 ​编辑 1.2 访问容器中运行的Nginx服务 1.2.1 确认容器IP地址 1.2.2 容器网络说明 1.2.3 在主机中使用curl命令容器IP地址访问 二、Docker命…

使用veth和bridge模拟容器网络

使用veth和bridge模拟容器网络 随着虚拟化技术、容器化技术的发展&#xff0c;我们在工作中会使用到虚拟化网络技术。简单来说&#xff0c;以往的网卡、交换机、路由器&#xff0c;当前可以通过操作系统使用程序来进行模拟。 通常使用最为广泛的是下面的虚拟设备&#xff1a;…

新一代爬虫工具 katana 配置及使用

新一代爬虫工具 katana 配置及使用。 功能&#xff1a; 快速且完全可配置的网络爬行 标准和无外设模式支持 JavaScript 解析/爬网 可定制的自动表单填写 范围控制 - 预配置字段/正则表达式 可自定义的输出 - 预配置字段 输入 - 标准输入、URL 和列表 输出 - 标准输出、…

【Java Web】CSS

目录 1.CSS(Cascading Style Sheets) 层叠样式表 2.标签 1.注释 2.三种书写样式 1.内部样式 2.内联样式 3.外部样式 3.CSS选择器 &#xff08;1&#xff09;标签选择器 &#xff08;2&#xff09;类选择器 &#xff08;3&#xff09;ID选择器 复合选择器 &#xf…

人力资源HR 怎么选择在线人才测评工具

测评已经是普及度很好了&#xff0c;不仅仅是大企业&#xff0c;中小企业也都在启用人才测评&#xff0c;也有叫素质测评等等&#xff0c;内容多样化。但是根本形式是一样的&#xff0c;那就是在线测评&#xff0c;目的也是一样的&#xff0c;就是为了招来最适合的职员。 而市…

细胞个数统计

1.1 应用示例目的与思路 (1) 对输入图像进行灰度化、滤波和阈值分割&#xff1b; (2) 对区域进行填充、连通域分析和面积筛选&#xff1b; (3) 对区域进行距离变换&#xff0c;对变换后的距离信息图像进行类型转换和图像增强&#xff1b; (4) 使用分水岭算法提取区域&#…

windows安装c环境

一. 下载安装mingw-w64 mingw-w64 解压后放到window环境变量路径 sysdm.cpl参看是否安装成功 二. 安装c idea Dev-Cpp下载及安装 新建文件 运行 编译&#xff08;F9&#xff09;、运行&#xff08;F10&#xff09;以及编译运行&#xff08;F11&#xff09; 参考 安装C…

使用 LangChain 和 Elasticsearch 对私人数据进行人工智能搜索

关于本博文的所有代码可以在地址下载&#xff1a;GitHub - liu-xiao-guo/python-vector-private 我将在本博文中其中深入研究人工智能和向量嵌入的深水区。 ChatGPT 令人大开眼界&#xff0c;但有一个主要问题。 这是一个封闭的托管系统。 在一个被大型网络公司改变的世界里生…

代码随想录—力扣算法题:07.链表相交. Java版(示例代码与导图详解)

版本说明 当前版本号[20230923]。 版本修改说明20230923初版 07. 链表相交 同&#xff1a;160.链表相交 力扣题目链接 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示…

C/C++正常血压 2019年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C正常血压 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C正常血压 2019年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 监护室每小时测量一次病人的血压&#x…

链式二叉树的实现及遍历(C语言版)

目录 1 基本概念 1.1 树的概念 1.2 二叉树的链式表示 1.2.1 "左孩子右兄弟"表示法 1.2.2 "左右子树"表示法 1.2.3 手动构建一棵树 2 树的遍历 2.1 前序遍历/先序遍历 2.2 中序遍历 2.3 后序遍历 2.4 层序遍历 2.4.1 算法思想 ​编辑 2.4.2 带头…

堆向上调整及堆向下调整

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 在堆这一节中&#xff0c;孩子和其父节点有如下关系&#xff1a; 左孩子&#xff1a;left_child parent * 2 1; 右孩子&#xff1a;right_child parent * 2 2; 父节点在计算时&#xff0c;因为兄弟…

【Java 基础篇】Java 接口组成与更新详解

在Java编程中&#xff0c;接口&#xff08;interface&#xff09;是一种非常重要的概念。它允许类定义一组抽象方法&#xff0c;这些方法可以在不同的类中实现。接口在Java中起到了重要的角色&#xff0c;被广泛应用于代码的组织和设计中。本文将详细解释Java接口的组成和最新的…

C++ - 红黑树 介绍 和 实现

前言 前面 学习了 AVL树&#xff0c;AVL树虽然在 查找方面始终拥有 O(log N &#xff09;的极高效率&#xff0c;但是&#xff0c;AVL 树在插入 ,删除等等 修改的操作当中非常的麻烦&#xff0c;尤其是 删除操作&#xff0c;在实现当中细节非常多&#xff0c;在实现上非常难掌控…

3、靶场——Pinkys-Place v3(3)

文章目录 一、获取flag41.1 关于SUID提权1.2 通过端口转发获取setuid文件1.3 运行pinksecd文件1.4 利用nm对文件进行分析1.5 构建payload1.6 Fire 二、获取flag52.1 生成ssh公钥2.2 免密登录ssh2.3 以pinksecmanagement的身份进行信息收集2.4 测试程序/usr/local/bin/PSMCCLI2.…

Vue的详细教程--Vue路由与nodejs

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Vue的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Vue路由是什么 二.使用Vue路由的步骤 1、…