Java 的简要介绍及开发环境的搭建(超级详细)
目录 | CONTENT
Java 简介
一、什么是 Java
二、认识 Java 版本
三、选择哪个版本比较好
搭建 Java 开发环境
一、下载 Java 软件开发工具包 JDK
二、配置环境变量
自动配置
手动配置
三、下载合适的 IDE
IntelliJ IDEA
Visual Studio Code
Eclipse
NetBeans
JDeveloper
Java 简介
一、什么是 Java
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言,它可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。Java 语言具有功能强大和简单易用两个特征,具有简单性、面向对象、分布式等特点,可以编写桌面应用程序、Web 应用程序、分布式程序和嵌入式系统应用程序等。同时 Java 也是目前最受开发人员欢迎的编程语言之一。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今,Java 仍是企业和开发人员的首选开发平台,全球有数百万开发人员运行超过 60 亿台 Java 虚拟机。
二、认识 Java 版本
Java 和其他编程语言一样,有多个版本,但 Java 版本的命名规则是有点诡异的。有时候你会看到 jdk 1.8、J2SE 1.2,有时候你又看到 Java 新出了最新版 Java 20,还有 Java SE、Java ME、Java EE 和 JavaFX 等,看到这里大部分人都晕了,这里简单解释一下。
SE(Standard Edition)、ME(Micro Edition)、EE(Enterprise Edition)和 FX 分别指标准版、微型版、企业版和富客户端平台解决方案,这个 FX 具体干什么的我也不是很清楚,可以看一下百度百科。一般我们只考虑 Java SE 就行。
jdk 的全称是 Java Development Kit,即 Java 开发工具包。可以这么说,每一个 Java 版本对应着唯一的一个开发工具包 jdk,我们也不管它叫什么 jdk、J2SE、Java,总之就是一点,将 jdk1.X 视为 jdkX,J2SE1.X 视为 JavaX,也就是说,jdk 1.8 就是 jdk 8,J2SE1.2 就是 Java2。这些诡异的版本名都是以前的命名问题。若想详细地了解这个问题的话,可以参考一下这篇博客:一文彻底搞懂令人疑惑的Java和JDK的版本命名!_jdk版本命名_庆哥Java的博客-CSDN博客
三、选择哪个版本比较好
现在(2023/05/02)的 Java 最新版已经到 20.0.1 了,但是大部分的开发者仍然在使用 Java8,这其实是由三个原因导致的。
- 目前的 LTS (长期支持)版本只有 Java8、Java11 和 Java17,它们比较稳定;
- Java8u202 版本之后,商用要收费(但个人使用仍然是免费的);
- 旧的程序大部分都是使用 Java8 编写的,换成高版本 Java 存在兼容问题。
依据各自的需求,选择合适的 Java 版本就行,一般推荐是选择 LTS 版本的 Java。
搭建 Java 开发环境
搭建 Java 开发环境的方式可分为手动搭建和自动搭建:
手动搭建:自己去官网下载 JDK 文件并安装,可能需要自己添加并设置环境变量,下面的教程就是手动搭建的方式。
自动搭建:见文章下面介绍 IntelliJ IDEA 的部分。直接下载 IntelliJ IDEA 代码编辑器,内部可以直接下载多个供应商的几乎全部版本的 JDK,直接自动搭建,而无需自己再额外做什么。优点:无需自己配置,比较方便。缺点:下载 JDK 有点慢。
一、下载 Java 软件开发工具包 JDK
打开 Java 官网(可以直接百度搜索):Java | Oracle
点击 “Java SE 开发工具包” 按钮,跳转到 Java 开发工具包的下载页面
这里我们直接选择 JDK 20 版本(2023/05/02 最新版,你也可以选择其他版本,我选择这个是因为高版本它运行快啊),选择 Windows 系统(取决于你的系统),找到 X64 Installer(64位安装包,取决于你的系统)并下载即可。
在这个页面中,JDK 20 右边贴着的是 LTS 版本 JDK 17,继续往下滚动页面,可以看另外两个 LTS 版本的 Java。不过这里要注意一点的是,这里的 Java8 是 Java8u371,这个版本是在 Java8u202 之后的,商用是需要付费的。
我这里也给大家提供一下对应的链接(不用自己去找了):
LTS 版本 | Oracle 官网链接 |
Java8(最后的免费版本) | Java Archive Downloads - Java SE 8 (oracle.com) |
Java11 | Java Archive Downloads - Java SE 11 (oracle.com) |
Java17 | Java Archive Downloads - Java SE 17 (oracle.com) |
打开链接后,选择对应的系统和位数,选 Installer 的那个就可以了。另外,Java8 和 Java11 的 JDK 下载需要 Oracle 的账号,注册一个就行了。
运行下载好的文件,即可看见安装程序,按照提示正常安装即可
注意:安装路径要记住!一会儿可能会用到!
二、配置环境变量
自动配置
安装完 Java 的开发工具包之后还需要配置环境变量,但实际上配置环境变量并不一定是必须的(有时候需要),我们可以通过以下操作来检查是否需要配置环境变量:
打开命令提示符 cmd,输入 java 并回车,若没有提示:
'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。
则说明环境变量已经在安装 JDK 时就自动配置好了。
此时实际上在系统环境变量中至少可以找到下面标出的两个环境变量中的一个(第一个是 32 位的,第二个是 64 位的,那个 X86 就是 32 位的意思,有任意一个即可):
手动配置
有些情况下环境变量需要我们自己配置,下面说明一下如何手动配置环境变量,首先,打开此电脑,在空白处右键找到属性
然后在窗口左侧找到高级系统设置,有些电脑是在窗口右侧(上一步跳转到设置中去了)
再在系统属性中点击环境变量
然后下面一栏(系统变量)点击新建
添加一个变量名为 JAVA_HOME,变量值为之前开发工具包 JDK 的安装路径的系统变量;
再在其中原本就有的 Path 变量中添加一个值,所以要选中变量名为 Path 的系统变量后点击编辑
然后再新建两个值:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
新建之后一直点击确定即可。如果没有找到 Path 系统变量的话(不大可能)就自己再新建一个 Path 系统变量,操作和 JAVA_HOME 系统变量类似。
顺便一提,在 jdk1.6 及该版本以下的 Java 还有一个 CLASSPATH 的环境变量需要配置,值为:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
注意:值前面有一个点号,容易被遗漏!
实际上是新增一个名为 CLASSPATH,值有两个的系统变量(用分号隔开的),操作和 JAVA_HOME 变量类似。至于为什么需要这样做,可以参考这篇文章:配置JAVA环境变量中CLASSPATH变量的作用_java配置classpath的作用_喜欢路飞的银桑的博客-CSDN博客
全部弄完了之后,最后再像自动配置中说的那样测试一下,看看是否真的弄好了。
三、下载合适的 IDE
在配置好 Java 的开发环境和环境变量之后,还需要一个 IDE(代码编辑器)来编写 Java 代码。
可以编写 Java 程序的 IDE 有很多,比如 IntelliJ IDEA、Visual Studio Code、Eclipse、NetBeans 和 JDeveloper 等。这里推荐使用 IntelliJ IDEA,其他的 IDE 也简要介绍一下。
IntelliJ IDEA
官网下载链接:IntelliJ IDEA – 领先的 Java 和 Kotlin IDE (jetbrains.com.cn)
IDEA 全称 IntelliJ IDEA,是 Java 编程语言的集成开发环境。IntelliJ IDEA 在业界被公认为最好的 Java 开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具 (git、svn 等)、JUnit、CVS 整合、代码分析、 创新的 GUI 设计等方面的功能可以说是超常的。
刚下载的 IntelliJ IDEA 是英文的界面,我们需要下载中文插件并重新启动编辑器后才是中文的
下面的是重启之后的欢迎界面,这是新 UI 的 IntelliJ IDEA,新 UI 比之前旧版的 UI 要好看一些
点击新建项目按钮,红色框的地方可以选择 Java 版本。
你可以在你的电脑中安装多个版本的 Java,然后就可以自由切换 Java 的版本了 。同时,IntelliJ IDEA 也支持直接下载不同版本的 JDK。
创建一个默认的项目并打开之后的界面
可能有人不适应新版的 UI 设计,这也是可以在设置中调整为旧版的经典 UI 界面
下面是经典的 UI 界面
Visual Studio Code
官网下载链接:Visual Studio Code - Code Editing. Redefined
Visual Studio Code 简称 VSCode,是微软出品的一款免费开源的轻量级代码编辑器,几乎支持所有主流的编程语言的语法高亮和智能代码补全等,且拥有海量的插件和扩展可供用户使用。
Java 环境配置教程推荐:vscode配置java环境_vscode 配置java环境_爱吃番茄的小狐狸的博客-CSDN博客
Eclipse
官网下载链接:Eclipse Downloads | The Eclipse Foundation
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具(Java Development Kit,JDK)。
—— 百度百科
Eclipse 的扩展性很强,同样拥有海量的插件,不过都需要自己来手动安装也比较麻烦。
Java 环境配置教程推荐:eclipse配置java开发环境_Java中Eclipse开发环境配置_weixin_39736547的博客-CSDN博客
NetBeans
官网下载链接:Welcome to Apache NetBeans
NetBeans 是一个免费的开源集成开发环境,用于在 Windows、Mac、Linux 和 Solaris 操作系统上进行应用程序开发。NetBeans 简化了使用 Java 和 HTML5 平台的 Web、企业、桌面和移动应用程序的开发。IDE 还为 PHP 和 C/C++ 应用程序的开发提供支持。
Java 环境配置教程推荐:Java环境变量配置及NetBeans安装_陈沐的博客-CSDN博客
JDeveloper
官网下载链接:Oracle JDeveloper | Oracle 中国
JDeveloper 是 Oracle Fusion Middleware 产品套件的跨平台 IDE,可在 Windows,Linux,Mac OS X 和其他基于 UNIX 的系统上运行。它有两个版本,为 Java,SOA,Oracle WebCenter Portal,SQL和PL / SQL,HTML 和 JavaScript 提供基于 XML 的应用程序开发。
JDeveloper 通过用于建模、编码、调试、测试、分析、调优和部署应用的集成功能支持完整的开发生命周期,且提供了一种可视化和声明式开发方法,并与 Oracle ADF 协同工作以简化开发。
Java 环境配置教程推荐:Oracle JDeveloper安装的开发部署_邓 鑫的博客-CSDN博客
—— 到底了哦 ——
相关文章:
Java 的简要介绍及开发环境的搭建(超级详细)
图片来源于互联网 目录 | CONTENT Java 简介 一、什么是 Java 二、认识 Java 版本 三、选择哪个版本比较好 搭建 Java 开发环境 一、下载 Java 软件开发工具包 JDK 二、配置环境变量 自动配置 手动配置 三、下载合适的 IDE IntelliJ IDEA Visual Studio Code Eclip…...
每天一道算法练习题--Day15 第一章 --算法专题 --- -----------二叉树的遍历
概述 二叉树作为一个基础的数据结构,遍历算法作为一个基础的算法,两者结合当然是经典的组合了。很多题目都会有 ta 的身影,有直接问二叉树的遍历的,有间接问的。比如要你找到树中满足条件的节点,就是间接考察树的遍历…...
golang - 函数的使用
核心化编程 为什么需要函数? 代码冗余问题不利于代码维护函数可以解决这个问题 函数 函数:为完成某一功能的程序指令(语句)的集合,称为函数 在 Go 中,函数分为:自定义函数(自己写…...
真题详解(极限编程)-软件设计(六十一)
真题详解(二分查找平均值)-软件设计(六十)https://blog.csdn.net/ke1ying/article/details/130417464 VLANtag属于 数据链路层实现。 数据链路层:网桥交换机。 网络层:路由器。 物理层:中继器。 Telent…...
计算机网络笔记:TCP粘包
默认情况下, TCP 连接会启⽤延迟传送算法 (Nagle 算法), 在数据发送之前缓存他们. 如果短时间有多个数据发送, 会缓冲到⼀起作⼀次发送 , 这样可以减少 IO 消耗提⾼性能。 如果是传输⽂件的话, 那么根本不⽤处理粘包的问题, 来⼀个包拼⼀个包就好了。但是如果是多条消息, 或者…...
Vue(标签属性:ref、配置项:props、混入mixin、插件、样式属性:scroped)
一、ref(打标识) 前面提及到了标签属性:keys 这里将了解ref:打标识 正常布置脚手架并创建入口文件main.js,引入组件 1. 可以给元素注册引用信息(获取真实DOM) 给一个按钮获取上方的dom的方法,方…...
数仓建设规划核心问题!
小A进入一家网约车出现服务公司,负责公司数仓建设,试用期主要一项 OKR是制定数据仓库建设规划;因此小 A 本着从问题出发为原点,先对公司数仓现状进行一轮深入了解,理清存在问题,然后在以不忘初心原则提出解…...
容器镜像的导入导出
容器镜像的导入导出 第1关:导入导出容器 任务描述 本关任务是学习导入导出容器,要求学习者参照示例完成将busyboxContainer容器的文件系统保存为一个tar包,通过该tar包导入一个busybox:v1.0镜像。 相关知识 将 "容器的文件系统&…...
Java每日一练(20230502)
目录 1. 二叉搜索树的最近公共祖先 🌟🌟 2. 随机分组问题 🌟 3. K 个一组翻转链表 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…...
JVM学习(九):堆
一、堆(Heap)的概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。同时,堆内存的大小是可以调节的。《Java虚拟…...
golang - switch
switch 的使用 switch 语句用于基于不同条件执行不同操作,,直每一个 case 分支都是唯一的,从上到下逐一测试到匹配为止匹配项后面也不需要再加 break switch 表达式 {case 表达式1, 表达式2, ... :语句块1case 表达式2, 表达式3, ... :语句块…...
浙大数据结构与算法一些有意思的理论基础题
堆栈 有人给出了堆栈用数组实现的另一种方式,即直接在函数参数中传递数组和top变量(而不是两者组成的结构指针),其中Push操作函数设计如下。这个Push函数正确吗?为什么? #define MaxSize 100 ElementTyp…...
【热门框架】Mybatis-Plus怎样进行映射匹配兼容?Mybatis-Plus的ID有哪些生成策略
Mybatis-Plus提供了两种映射匹配兼容的方式:驼峰转下划线和全局配置。 驼峰转下划线 默认情况下,Mybatis-Plus会将Java类中的驼峰命名方式自动映射到数据库表中的下划线命名方式。例如,Java类中的userName属性会自动映射到表中的user_name字…...
Http1.0 、1.1、2.0、3.0的区别
巨人的肩膀 3.1 HTTP 常见面试题 | 小林coding HTTP1.0与HTTP1.1 HTTP1.1在HTTP1.0上的改进: 使用长连接的方式改善了HTTP1.0中短连接造成的性能开销支持管道网络传输,不必等到上一个的响应,就可以接着发送第二个请求,减少整体响…...
Python——基于YOLOV8的车牌识别(源码+教程)
目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 (教程) 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求,今天完成了,在此记录和分享 首先&#x…...
c# 数据保存为PDF(一) (spire pdf篇)
文章目录 前言了解 Spire使用Spire.PDF1 创建简单的PDF文档2 创建带有格式的PDF文档(使用Draw)头部信息页眉页脚测试数据完整的代码 3 创建带有格式的PDF文档(使用Gird)小结 先上一个效果图 前言 项目中需要将一些数据转存为PDF …...
Stable Diffusion使用方法
SD的本地安装教程有很多我就不重复了,这里主要是记录我在使用SD Webui的过程中遇到的问题,总结的一些提升出图效率,出好图概率的经验。 先搞几张看看效果 二次元妹妹 高达 ? Ok,以上只是一小部分成品 ,属…...
高性能:负载均衡
目录 什么是负载均衡 负载均衡分类 服务端负载均衡 服务端负载均衡——软硬件分类 服务端负载均衡——OSI模型分类 客户端负载均衡 负载均衡常见算法 七层负载均衡做法 DNS解析 反向代理 什么是负载均衡 将用户请求分摊(分流) 到不同的服务器上…...
Matplotlib 安装介绍
文章目录 安装步骤 Matplotlib 不止是一个数学绘图库,它也是可视化和分析工具中最流行之一。我们可用其制作简单的图表,如折线图和散点图。 安装步骤 先进入:python官网 跳转到界面: 录入并搜索 下载之前,看一下自…...
DNS:关于 DNS 基本概念的一些笔记整理
写在前面 分享一些 DNS 的笔记整理博文内容涉及: DNS 历史介绍DNS 解析顺序DNS 基本概念资源类型介绍DNS 安全 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺…...
机器人学一些知识
机器人动力学模型是用数学方法描述机器人运动和力学特性的模型。它包含机器人的几何结构、质量、惯性、摩擦等物理特性,以及机器人的控制系统和传感器等。机器人动力学模型可以用于机器人的运动规划、控制算法设计、仿真和优化等应用中。 机器人动力学模型通常采用…...
应用,auto,内联函数
6.引用: //指针 int main() {int a 0;int& b a;int& c b;int& d c;cout << &a << endl;cout << &b << endl;cout << &c << endl;cout << &d << endl;b;d;cout << a <<…...
Flask框架的学习---01
1.工程搭建: (1) 安装flask: pip3 install flask (2)命令行: (1)终端运行:flask run (2)绑定IP地址和端口:Flask run -h 127.0.0.1 -p 8083 修改端口号 (3࿰…...
免费gpt-4-国内使用gpt-4
如何用上gpt-4 GPT-4尚未正式发布和公开,因此我们无法提供对GPT-4的具体使用方法。但是,可以从GPT-4的前一代——GPT-3的使用经验和GPT-4的预期功能来看,建议如下: 了解GPT-4的语言处理能力和适用场景:GPT-4预计将进一…...
《程序员面试金典(第6版)面试题 16.09. 运算
题目描述 请实现整数数字的乘法、减法和除法运算,运算结果均为整数数字,程序中只允许使用加法运算符和逻辑运算符,允许程序中出现正负常数,不允许使用位运算。 你的实现应该支持如下操作: Operations() 构造函数minus…...
asp.net基于web的校园美食派送配送系统
1.系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。 2.系统用户管理:不管是…...
【JAVA】#详细介绍!!! 文件操作之File对象(1)!
本文内容不涉及文件内容操作,主要是对指定文件元信息的获取,以及通过java代码如何创建一个文件或者删除文件 目录 文件操作的File对象 File对象的基本操作方法 得到文件(夹)对象的信息元 1.getParent 2. getName 3.getPath 4…...
Vue基本的内置指令
前言 除了常见的v-bind,v-for,v-if,v-on.v-model等,本次学习一些vue提供的其他内置指令 1 v-text 给标签插入文本,类似于插值语法 它会把全部的字符串当成文本去解析,不会当成标签的,哪怕写的是标签结构 效果和插值语法是一样的 插值语法比v-text更加…...
华为孟晚舟当值首秀:2030年AI算力将增长500倍!
作者 | 范智林 来源 | 华商观察 微信号:HuashangGC 孟晚舟当值首次亮相。 4月19日,华为副董事长、轮值董事长、CFO孟晚舟在华为第20届全球分析师大会上进行演讲,这是她当值华为轮值董事长以来的首次公开亮相。 按照华为内部规定,…...
关于python异常的总结
Python异常是在程序执行时发生的错误,可能会导致程序终止运行。 在Python中,异常处理是一种机制,它允许开发人员在程序发生异常时捕获、处理和报告这些异常,以便程序可以继续运行或在出现异常时进行优雅的退出。 在Python中&…...
打开b站/企业建站都有什么网站
(给算法爱好者加星标,修炼编程内功)来源: 数据结构和算法-山大王wld问题描述今天我们就不做关于双指针的了,我们爬到树上玩会儿,做一道关于二叉树的题。今天的题就一句话,根据一棵树的前序遍历与中序遍历构造二叉树。注…...
手表网站代码/2022最近的新闻大事10条
▣ 作者 六爷 | 互联网营销官(ID:HLWCMO)随着“二次元”文化破圈,目前已发展为拥有4亿人群的庞大规模,主要涉及动画、漫画、游戏、小说等多个领域。二次元的受众群体正是当下占据消费主力军的年轻人,因此,品牌为了迎合…...
专门做婚姻法的网站/兰州seo整站优化服务商
2019独角兽企业重金招聘Python工程师标准>>> yield 生成器是PHP 5.5.0才引入的功能 如要深入,可以看鸟哥的文摘 协程实现多任务调度 生成器优点 生成器会对PHP应用的性能有非常大的影响PHP代码运行时节省大量的内存比较适合计算大量的数据那么࿰…...
中国建设银行官网站e路护航/谷歌搜索引擎大全
试了下, redis之del命令不支持按模式删除key, 如 del user:*这种行不通. 但是可以这样(先redis-cli连上redis-server): EVAL "return redis.call(del, unpack(redis.call(keys, ARGV[1])))" 0 user:*原因是: del命令支持不定参数, 而上面的unpack函数就可以将数组转…...
外贸是什么工作/常州网站建设优化
格式:[class 子类 extends 父类 implements 父接口...]。方法重写:返回值类型、方法名、参数类型及个数与父类完全相同。调用时优先调用子类的方法。初始化顺序:父类属性初始化->父类构造方法->子类属性初始化->子类构造方法final关…...
网站关键字太多/线上销售如何找到精准客户
大家应该都有这样经历,我们的手机在充电的同时也能边使用,有的同学就会说了,这是因为手机电池在充电的同时也在放电。如果这样想我们可能就把锂电池类比了一个蓄水池,以为它在进水的同时也能出水,其实这个比喻是错误的…...