技术标签: jdk Java java 教程/入门使用 javase
说明:
本文介绍的是 Windows 下安装 Java 的方法。对于 Linux 下 Java 的安装,可见笔者的另一篇博客:
在 Linux 操作系统中安装 Java:
https://blog.csdn.net/wangpaiblog/article/details/120093325
笔者的安装环境:
JDK 17
Windows 10 教育版
安装 Java 就是安装 JDK。Java 有三大分支,这里选择的是 Java SE。关于这些分支的区别,可见笔者的另一篇博客:
Java SE、OpenJDK、Java EE、Java 框架、Java ME 等概念之间的区别:
https://blog.csdn.net/wangpaiblog/article/details/112342415
此外,对于 JDK,也更替了很多个版本,其中也分为 LTS 版本和非 LTS 版本。LTS 指长期支持版(Long Term Support)。对于这个概念,这里不多作解释,读者可以简单将它们理解为稳定版与快照版。
(Java 的 LTS 版本目前有:Java 8、Java 11、Java 17。网址:https://www.oracle.com/java/technologies/java-se-support-roadmap.html)
笔者的意见是,最好下载最新的 LTS 版本。但对于一些刚刚学习 Java 的读者来说,下载哪个版本区别不大,因为它们之间的区别不会在简单的 Java 程序中体现。编写本教程的时候,笔者下载的是当时的最新 LTS 版 Java SE 17
。
进入 Oracle 官网下载 Java SE,也就是 JDK 的安装包。
Java 的官网下载链接:https://www.oracle.com/java/technologies/downloads/
Java 17 下载处的最终网址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows
(在 Java 17 以前,下载还需要注册一个 Oracle 账号。但在 Java 17 之后,Oracle 决定推出商业免费版。也许是担忧 Java 的市场份额每况愈下,垄断看来不够格。对于 Java 17,下载不需要注册账号,但之前的版本仍然需要。)
因为是国外的网站,所以可能网站加载缓慢。部分浏览器可能禁用此网站上的某些控件,所以如下的过程如果发现网站上缺失某些界面选项,可以试试换个浏览器。
【说明】
在前面的下载中,可以看到,Windows 下的 JDK 数据包有三种可选的下载:Windows x64 Compressed Archive
、Windows x64 Installer
和 Windows x64 MSI Installer
。其中,前者为 JDK 的免安装版本,后两者均为 JDK 的离线安装包版本,其中一个是 WIndows 的 EXE 安装包,另一个是 MSI 安装包。这两种安装包没有太大的区别,这里使用的是 EXE 安装包。
也可以选择 JDK 的免安装版。很多“免安装”狂热者很喜欢选择任何软件的免安装版本。不过,由于这两者没有本质上的区别,没有任何理由非要使用免安装版本。通常,使用离线安装包版本能减少很多麻烦。
下载好了之后应该有一个名叫 jdk-17_windows-x64_bin.exe
的安装包。运行安装包,这里 JDK 的默认路径是 C:\Program Files\Java\jdk-17\
。请记住这个路径,下面会用上。如图:
这一步完成之后就可以开始设定 Path 路径了,进行这一步是为了能在 Windows 的 CMD 中识别出 C:\Program Files\Java\jdk-17\
下 Java 的相关命令。
这要进入 Windows 的环境变量界面(这里以 Win10 教育版为例),如图(请顺着图片用鼠标点击画红圈部分):
这里需要在 Path
中填写 Java 的命令工具的路径。不过在这之前,需要先创建环境变量 JAVA_HOME
。设置 JAVA_HOME
的值为 C:\Program Files\Java\jdk-17
。
(如果电脑不打算设置多用户,则这里选择 用户变量
还是 系统变量
的 Path 区别不大。这里选择 用户变量
。)
在设置完 JAVA_HOME
之后,在 Path
中添加新的一行 %JAVA_HOME%\bin
。
【Q & A】
阅读本教程的很多读者可能是初次学习编程,他们看到此处时可能有如下这些疑问。笔者将这些疑问解答于此。如果这些疑问没有覆盖全部的问题,也可以在下方留言提问。
这些问题与 Java 安装没有必然的联系,如果读者暂时不想了解这些内容,可以先收藏本博客,然后跳过这些内容,日后再来阅读。
Q1
:环境变量 Path 有什么用?为什么要设置?
A1
:这个问题解释起来很复杂,限于篇幅,这里简单解释一下。我们知道,使用 Java 之前要先安装,但使用 Java 的应用并不在乎 Java 有没有安装,实际上,它们也无法知道 Java 有没有安装。它们只是需要使用 Java 的一些命令(如 java
、javac
等),这些命令对应着 Java 安装目录下的一些可执行程序。如果设置了环境变量,它们就可以借助操作系统来使用 Java 的命令,否则,对它们而言就相当于没有安装 Java。
在 Windows 中,如果设置了环境变量 Path,则这些命令的来源(路径)可以通过输入命令 where
来找到,如:
C:\Users\XXX>where java
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files\Java\jdk-17\bin\java.exe
如果想知道关于环境变量 Path 更多的信息,可见笔者的另一篇博客:
Windows 中的环境变量 Path 的作用:
https://blog.csdn.net/wangpaiblog/article/details/113622196
Q2
:环境变量是什么?为什么要设置?
A2
:环境变量是操作系统提供的一种简易的、对应用公开的键值数据库。它可以用来存放某应用想要传达给其它应用或记录给自己的信息。可以理解为每个应用自己主动设置的 QQ 签名。
特别地,对于环境变量 Path,它特指可执行文件的绝对路径。其中,该可执行文件的文件名将作为可在 CMD 中输入的命令名。如果不使用环境变量 Path,则执行这些命令时需要输入全路径。其它应用往往只知道所需的命令名,而不知道所需应用的路径,所以需要提前设置环境变量 Path。
Q3
:为什么要同时设置 JAVA_HOME
与 Path
?
A3
:对于简单的 Java 程序来说,实际上只需要将 Java 的命令工具的路径添加至 Path
中即可(对于简单的 Java 程序来说,实际上只需要设置 Path
:C:\Program Files\Java\jdk-17\bin\
)。不过,很多依赖 Java 的工具技术还要求设置其它环境变量,如 JAVA_HOME
,而且这个环境变量非常常用,因此这里选择在安装时就予以配置。换句话说,如果其它工具技术还要求设置更多环境变量,那就还需要单独配置。
环境变量并不是配置的越多越好,冗余是万恶之首,请按需配置。
Q4
:环境变量 Path
与 JAVA_HOME
有什么区别?
A4
:关于这方面的内容,可见笔者的另一篇博客:
Windows 中的环境变量 Path 与 XXXX_HOME 的区别:
https://blog.csdn.net/wangpaiblog/article/details/112644073
Q5
:为什么非要手动配置环境变量,为什么 Java 不让安装包来完成这些操作呢?
A5
:让安装包在安装时自动设置环境变量是一件很简单的事情(任何人使用一种 安装包制作工具
就可以做到这一点),Oracle 没有选择这么做主要是为了给用户提供更多的自由。用户有可能会在电脑上安装很多个版本 JDK,如果让安装包自动完成这项工作,这将影响用户原来设置的环境变量,因此安装包没有提供这项功能。
并不是所有的安装程序都不会帮用户设置环境变量,实际上,很多应用程序的安装包都会选择帮用户进行这种设定。帮用户设置环境变量一方面可以方便用户,另一方面则会污染操作系统中的环境变量。类似的问题还发生在 WIndows 中的注册表,如果每个应用没有自觉进行合理的使用,那么整个注册表将成为一个垃圾堆。
Q6
:环境变量 CLASSPATH
是什么?为什么很多教程都写要加这个环境变量?
A6
:关于网上其它教程的质量,这里不作评价。首先,对于 JDK 1.4
及以前的版本,才需要配置环境变量 CLASSPATH
。它的作用是指定运行 Java 程序所需的 .class
文件,以及运行所需的 JDK 包(dt.jar
、tools.jar
)。这涉及 Java 类加载器的类加载机制,此处不做过多介绍。
Q6.1
:用户所编写的 Java 程序的源文件的位置是不确定的,为什么可以预先设定呢?
A6.1
:可以在环境变量的路径值中使用 .
来表示当前路径。
Q6.2
:为什么不把这个设定提前融入到 JDK 中呢?
A6.2
:很遗憾,在 JDK 1.4
及以前,就是没有提供这样的功能。要知道,JDK 1.4
是 2002 年发布的,而 2001 年 Windows XP 才发布。对于 JDK 1.5
及之后的版本,也可以不用配置 CLASSPATH
。
Q7
:为什么安装完 Java 之后无法在安装目录下像其它软件一样双击直接打开?
A7
:安装的 Java 软件实际上只是一个 Java 代码的运行环境。一行代码都没有编写怎么会打得开呢?
Q7.1
:可是,有些 IDE 不就可以直接打开吗?如果软件不能打开要怎么编写代码?
A7.1
:编写代码本质上不需要 Java。代码只是一个文本,直接用记事本编写也可以(虽然不推荐这样做),运行 Java 代码才需要 Java。没有向 Java 提供代码,Java 不可能运行的。
至于 IDE 为什么能直接打开的问题,必须要理解,Java 与 Java 的 IDE 是不同的东西。Java 代码只有在编写的时候才可能需要 IDE,它运行的时候本质上是不需要 IDE 的。冗余是万恶之首,不需要的功能就不应该内置,所以 Java 没有内置 IDE。而 IDE 是第三方提供的功能,与 Java 官方无关。IDE 实际上是一种高级代码编辑器,它运行 Java 代码实际上还是需要 Java 的运行环境。因此,IDE 有没有提供 GUI 界面、编写 Java 代码的功能,这跟 Java 的运行没有必然关系。
总而言之,安装 Java 环境是为了运行 Java 代码的。Java 的 IDE 是为了编写、运行 Java 代码的。IDE 能不能打开跟 Java 能不能直接打开没有直接关系。
Q7.1.1
:你说的“向 Java 提供代码”要怎么完成?
A7.1.1
:对于运行 Java 代码,IDE 通常提供了这一功能,建议直接使用 IDE 完成。本文只是 Java 的下载安装教程,不是 Java 的入门教程,故此处不作介绍。
有些导师特别喜欢凡事从底层开始教学,有时候这样做确实有道理。但大多数人学 Java 是为了吃饭的,而不是研究学术。凡事有轻重缓急,建议学习 Java 直接从在 IDE 内编写代码开始,不要从记事本、Java 命令、命令行开始。笔者从来没听说过哪个奥运会运动员会花大把的时间来研究人类的直立行走。
当然,在命令行使用 Java 命令运行 Java 程序也不难,只是有些繁琐。但据笔者的观察,很多初学者有惯性思维以及喜欢浅尝辄止。他们在刚开始学会使用命令行之后会在很长一段时间都停留在这一阶段。有些甚至引以为豪,认为使用命令行这种原始的工具才是高级和专业的象征。这里不讨论到底原始代不代表高级,笔者只是想说,技术最终只是用来吃饭的,每种技术都有各自的专长和局限性,没有什么高低贵贱之分。考虑到工作效率,能用 IDE 的尽量使用 IDE。对于不支持使用 IDE 的环境,也要熟悉命令行的操作。
Q7.1.2
:那为什么 Java 没有像 IDE 这样的 GUI 界面呢?
A7.1.2
:你这个问题问到了编程的本质,因此这不是一种简单的问题,限于篇幅,这里就两点简单解释一下,后续读者随着编程经验的积累自然就懂了。
第一,不是什么程序都是需要 GUI 界面的。程序的划分方式有很多种,如前台和后台,前端和后端。像后台、后端这种一般都是不需要 GUI 界面的。实际上,一台计算机中绝大多数的程序都是不需要 GUI 界面的。原因有很多,很多程序不能让用户来控制,用户也不希望被打扰。另外,GUI 程序都是非常占用内存的。完全不能让每个程序都装载 GUI 界面。
前面已经说明,Java 环境只是来运行 Java 程序的,运行程序根本不需要额外的 GUI 界面。在商业生产环境下,使用傻瓜的 UI 界面启动程序不仅更繁琐,而且还会影响启动效率。冗余是万恶之首,不需要的功能就不应该内置,所以 Java 程序的运行没有内置 GUI 引导界面。但安装 Java 的引导界面还有(实际上这也不是必要的)。因为此界面只在安装时启动,所以不会影响运行时的效率。
第二,我们是开发者,不是普通的用户。造汽车的人可能坐在汽车里面造汽车吗?肯定不能,因为从逻辑上,造汽车必定要使用比汽车更原始的工具,不能用汽车造汽车。同样的道理,我们是开发者,必定要经常和原始的工具打交道,所以不能指望在傻瓜的 GUI 界面上点点点就可以实现编程。
Q8
:Java 为什么不能在安装时内置 IDE?
A8
:你认为每个人都喜欢在新买的电脑上看到 360 吗?
标准的环境变量为:
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk-17
变量名:Path
变量值:%JAVA_HOME%\bin
以上如果设置完成之后,进入 CMD 中输入 java
或 javac
后,应该会出现篇幅很长的说明文字,这说明前面的设置生效了。而之所以出现这些说明文字,是因为输入这些命令的时候没有输入任何参数,这种情况下,命令在运行后会提示此命令的语法格式。如果前面的设置不成功,则 CMD 会告知输入了它不认识的命令名。
进入 CMD 的方法有很多,这里只举一例。使用快捷键 Win + R
打开 运行
,然后输入 cmd
:
设置完成之后,就可以安装关于 Java 的集成开发工具 IDE 了。主流的 IDE 有 IntelliJ IDEA、Eclipse 、MyEclipse、NetBeans 等。这些软件简介如下:
IntelliJ IDEA:
Java 中功能最强大的 IDE。主流企业除非抵制等特殊原因,使用的都是该软件。一种观点认为,如果一个企业的 Java 开发如果没有使用该软件,而是 Eclipse,可以考虑换一家了。如果使用的是其它 IDE,可以连夜提桶跑路了。
IntelliJ IDEA 的下载安装非常傻瓜,不再另开博客作介绍。但很遗憾,该软件不是免费的。
IntelliJ IDEA 在 2021 年之后的版本已经以插件的形式给出了 IntelliJ IDEA 的官方汉化版。该插件名为:Chinese (Simplified) Language Pack
。
IntelliJ IDEA 官网:https://www.jetbrains.com/idea/
IntelliJ IDEA 历史版本下载:https://www.jetbrains.com/idea/download/other.html
Eclipse:
一款多年来一直流行的官方 Java IDE,支持官方汉化,完全免费。笔者在学生时代使用的第一款 Java 的 IDE 就是它。
关于 Eclipse 的中文简体版下载安装教程,可见笔者的另一篇博客:
Eclipse 的中文简体版安装教程:
https://blog.csdn.net/wangpaiblog/article/details/111502047
其它:
如果你在使用其它 Java IDE,或者打算使用手机、 CMD 进行编程,请尽快改掉这个坏习惯。因为就算笔者不此提醒,你也迟早会被迫使用 IDE 进行开发。而以软件工程的角度来说,任何漏洞越晚被发现,所带来的损失越大。研究底层不要以这种方法。这种方法就像是钻木取火、骑马登山。
最后的最后,考虑到很多读者可能是初次学习编程,为了减少可能会走的弯路,笔者还编写了如下博客。欢呼吧,少年!
编程开发使用的软件大全:https://blog.csdn.net/wangpaiblog/article/details/112760795
编程开发使用的辅助软件大全:https://blog.csdn.net/wangpaiblog/article/details/115223210
编程开发涉及的非原生英文名词的读法:https://blog.csdn.net/wangpaiblog/article/details/115019684
文章浏览阅读601次。在当今数字化时代,人工智能的快速发展为创意产生带来了全新的可能性。随着AI技术的不断进步,越来越多的创意灵感生成器应运而生,为创作者们带来了一键生成创意想法的便利。本文l1m0_将为大家介绍11个值得推荐的AI灵感生成器,探索它们如何激发创意思维并为我们开辟创新之路。
文章浏览阅读1k次。1、查看已分配内存,看到memory_max_target为20GSQL> show parameter sgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------lock_sga ...
文章浏览阅读3.3k次,点赞2次,收藏14次。版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/103874623相关需要,所以要实现这个,以下内容经验确实(经过验证确定属实)。参官方文档得:import arcpy as apap.env.workspace='D:/temp'先把shp文件...
文章浏览阅读4.6k次。使用pandas时 报错 ValueError: Shape of passed values is (6, 2), indices imply (6, 1)最近在看“使用python进行数据分析”一书时,在输入以下代码后出现如题所示的报错:righth = DataFrame(np.arange(12).reshape((6, 1)), index=[['Nevada', 'Nevada', 'Ohio', 'Ohio', 'Ohio', 'Ohio'], _shape of passed values is (6, 1), indices imply (6, 2)
文章浏览阅读879次。1,Algorithm意为“算法”,是C++的标准模板库(STL)中的重要头文件之一,提供了大量基于迭代器的非成员模板函数,此处介绍一下find(),swap(),sort(),for_each(). 对于一个容器vector<int> nums={8,7,5,4,2,9,6,1,3,0};find(nums.begin(),nums.end(),4); 返回第一次出现4的位置的迭代器...
文章浏览阅读1k次。本文主要参考自:https://www.cnblogs.com/lanleiming/p/7096973.html整理至自己博客近做留存。说明: 只是单纯的用JSON.parse(str)不能完全检验一个字符串是JSON格式的字符串。单纯的字符串,boolean类型的变量也可以被成功解析。 JSON.parse('123'); // 123 JSON.parse('{}..._js 判断是否可以json.parse
文章浏览阅读2.8k次。1.数据分析与挖掘的必要性数据量的规模由传统的GB,TB量级,变为PB,EB,ZB级别,大数据的"4V"特点即大量(volume)、高速(velocity)、多样(variety)、价值(value). 因此一般的大数据分析需要四个核心要素:基于云计算的基础设施,分布式的大数据体系,数据分析方法与算法,行业应用知识与经验。人类的数据生产能力达到空前,从数据挖掘方法入手,无疑是最佳选择。2..._数据挖掘与r语言概述
文章浏览阅读146次。上一篇博客写的是通过隐藏显示进行div的替换,接下来需要在原有的div前添加一个div,进行表单的提交,需要将div放置在正中间,然后类似C#中的模态窗口,在进行完新弹出的div操作之后,才可以进行下一步操作首先第一步,新建一个div窗口,代码暂时不贴,主贴的最后贴上完整代码效果如图所示:可以看出此时的DIV只是将元素展示了出来,还没有进行相应的优化,且不能对元素进行操作,主...
文章浏览阅读4.5k次。1.float:浮动浮动的核心:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素。 div{ width:100px; height:50px;} .div1{ background:#3F0; float:left;} .div2{ background:#CF0; float:left} .div3{ background:#F96; width:_wed前端浮动怎么写
文章浏览阅读6.5k次。现在很多使用的应用中,都有一些图文兼并的消息展示,并且是列表形式实现的! 其中不乏有一些是使用的Listview来展示出来的. 今天简单的写了个demo再来回顾一下基础知识. 先来看看效果 现在来说说代码这里我使用的是官方提供的Volley网络框架 在build中添加这个dependencies { compile 'eu.the4thfloor.volley:com.android.
文章浏览阅读3.5k次,点赞9次,收藏75次。我们知道,HTML的作用就是绘制页面的整体布局。在浏览页面的时候,映入眼前的是五彩缤纷的页面,我们通过HTML只能绘制单调的布局,不能呈现出五彩缤纷的页面,那么要怎么才能做出五彩缤纷的页面呢?我们需要借用一个小工具——CSSCSS简介CSS是层叠样式表(Cascading Style Sheets)的缩写,样式储存在CSS(层叠样式表)中,样式定义HTML元素在页面中如何显示,起到渲染页面的作用,好比色彩,能让空白的草画变得生动。引用CSS的方式CSS作为一个小工具,需要我们添加到我们编写好的元素中
文章浏览阅读594次。该专题旨在快速收集汇总交通领域权威期刊最新发表的文章,重点涉及文章标题,发表时间,文章链接等,实现快速获取最新发表的paper信息,方便追踪捕捉信息全力助跑科研!微信公众号(交通充电圈)同步更新,每周一更IEEETransactions onIntelligent Transportation Systems【1】A Graph Convolutional Stacked Bidirectional Unidirectional-LSTM Neural Network for Metro R.._real-time rain detection and wiper control employing embedded deep learning