Java基础-Windows开发环境下Java8和OpenJDK17的自由切换

news2024/12/24 2:23:32

一、Java语言介绍

Java是一种广泛使用的编程语言和计算平台,具有平台无关性、稳定性和强大的生态系统。随着时间的推移,Java不断演进,推出了多个版本,每个版本都带来了新的功能和性能改进。

1. Java主流版本

Java的主流版本包括Java 8、Java 11、Java 17等。不同版本之间的区别主要体现在语言特性、API的扩展和性能优化上。

Java主流版本对比

特性Java 8Java 11Java 17
发布时间2014年3月2018年9月2021年9月
LTS(长期支持)
新增功能Lambda表达式, Stream APIvar关键字, 垃圾收集器增强Sealed classes, Records
性能稳定且成熟性能优化,模块化增强更多性能改进
社区支持广泛使用,文档丰富企业应用常用版本新版本,未来趋势

2. OpenJDK介绍

OpenJDK是Java的开源实现,是大多数Java发行版的基础。OpenJDK由Oracle、Red Hat、Amazon等多个企业和开发者社区共同维护。OpenJDK的版本更新通常与Oracle JDK保持同步,但它是完全开源且免费使用的。


二、不同Java版本切换步骤

在开发过程中,可能需要在不同版本的Java之间切换,特别是在维护旧系统和开发新项目时。以下是如何在Java 8和OpenJDK 17之间进行自由切换的步骤。

1. 安装多版本JDK

首先,需要在系统中安装多个版本的JDK。可以从Oracle官网、OpenJDK官网或其他提供JDK的镜像站点下载不同版本的JDK,并进行安装。

Java8下载地址:https://www.oracle.com/java/technologies/downloads/#java8

在这里插入图片描述

OpenJDK17下载地址:https://jdk.java.net/archive/

在这里插入图片描述


2. 分别配置环境变量

在Windows系统中,右键点击“我的电脑”或“此电脑”,选择“属性” -> “高级系统设置” -> “环境变量”。在“系统变量”中新建 JAVA8_HOME,将其值分别设置为Java 8的安装路径。在“系统变量”中新建 JAVA17_HOME,将其值分别设置为OpenJDK 17的安装路径。

在这里插入图片描述

在这里插入图片描述


3. 调整Path里先后顺序完成切换

在同一“环境变量”窗口中,找到 Path 变量,点击编辑。

如果需要在多个版本之间快速切换,可以通过调整 Path 中不同 JAVA_HOME 路径的顺序来实现。将需要优先使用的版本放在最前面,放在前面的 JAVA_HOME 路径会被设置为当前使用的JAVA版本的路径。

这里需要注意:要把下图中第一行的 javapath 删除掉!!!
如果不删除,会导致我们下面对java版本的优先级改动不生效!!!

在这里插入图片描述

保存设置后,打开命令提示符,输入 java -version 即可查看当前正在使用的Java版本。

在这里插入图片描述

改变顺序后,再输入 java -version 即可查看当前正在使用的Java版本。

在这里插入图片描述
在这里插入图片描述


三、操作总结

通过以上步骤,开发者可以在同一台机器上轻松切换不同版本的JDK,从而满足不同项目的需求。无论是开发新的功能还是维护老旧的系统,掌握Java版本的自由切换将大大提升工作效率。同时,了解Java各个版本的特性,也有助于更好地选择适合的Java版本进行开发。

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

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

相关文章

【排序篇】快速排序的非递归实现与归并排序的实现

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1 快速排序非递归2. 归并排序3.排序算法复杂度及稳定性分析 1 快速排序非递归 利…

Leetcode面试经典150题-14.最长公共前缀

解法都在代码里,不懂就留言或者私信 这个题比较简单,基本上是笔试的第一第二题 class Solution {/**最长公共前缀这种问题个人感觉最重要的是剪枝我理解可以先按照字符串的长度排个序,然后把第一个字符串的长度作为暂时的最长公共前缀的长度…

分享一个基于python爬虫的“今日头条”新闻数据分析可视化系统(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

【装修】出租屋改造计划,米家IoT全屋智能家居方案 投影仪与家庭ktv游戏影院方案

【装修】出租屋改造计划,米家IoT全屋智能家居方案 & 投影仪与家庭ktv游戏影院方案 文章目录 1、目标效果 & 预算2、网络:路由 & 中枢网关方案3、卧室:灯光系列 & 环境系列4、米家:其他房间(暂不装&…

C++ 内存布局 - Part2: 从内存布局角度看类型转换 static_cast, dynamic_cast, reinterpret_cast

0. 总论 开门见山,先把结论写在这里: 1)static_cast 在做基类指针和派生类指针之间的转换时,会根据编译时的静态偏移操作指针,但是没有运行期的类型安全检查,程序员需要自己确保类型的正确性,…

ollama轻松部署本地GraphRAG(避雷篇)

本篇文章主要介绍如何使用ollama本地部署微软的Graph RAG,,Graph RAG成为RAG一种新范式,对于全局总结性问题表现突出,当开始的技术路线是Qwen2vllmfastchat本地部署Grapg RAG,但是embedding 的openai服务怎么都跑不起来…

完整搭建windows下mysql8.0源码编译调试环境!

背景: 前段时间一直在看mysql相关的博客,所以对源码起了浓厚的兴趣,所以尝试通过vmware和vscode在windosw环境中搭建一套编译调试的环境~ 看了一下网上的搭建教程基本杂乱无章,想要从零跟着搭建出一个完善的调试环境也不是易事&…

redis I/O复用机制

I/O复用模型 传统阻塞I/O模型 串行化处理,就是要等,假如进行到accept操作,cpu需要等待客户端发送的数据到tcp接收缓冲区才能进行read操作,而在此期间cpu不能执行任何操作。 I/O复用 用一个进程监听大量连接,当某个连…

国产大模型领域跳槽:收入潜力解析

夏尽秋来,2024年国产大模型看似喧闹已止,进入稳定竞争期。 作为一种新的IT解决方案,国产大模型一出生便伴随着激烈竞争。 外有GPT4,内有多家公司角逐“中国版ChatGPT”。 据我所知,就国内某家头部大模型创业公司的收…

0817(持久层框架:JDBC,MyBatis)

三层架构(表现层,业务层,持久层) java中框架的概述(表现层、业务层、持久层的关系)_控制层业务层持久层的关系-CSDN博客 框架:框架一般处在低层应用平台(如J2EE)和高层…

利用keepalived达成服务高可用

官方网站Keepalived for Linux 1.keepalived简介 vrrp 协议的软件实现,原生设计目的为了 高可用 ipvs 服务 功能: 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 …

【Linux网络】NAT技术

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 随着互联网的飞速发展,IP地址资源日益紧张,这促使了NAT(Network Address Translation,网络地址转换)技术的诞生与发展。NAT技术不仅解决了IPv4…

webshell免杀--免杀入门

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理webshell免杀的一些基础思路 入门级,不是很深入,主要是整理相关概念 免杀对象 1.各类杀毒软件 类似360,火绒等,查杀己方webshell的软件。 2.各类流量…

计算机网络系统速成

Http与Https Http与Https是两种重要的网络通信协议,它们在Web通信中扮演着关键角色。以下是对Http与Https的详细解析: 一、Http(超文本传输协议) 1. 定义与功能 定义:Http(HyperText Transfer Protocol…

打卡学习Python爬虫第三天|电影天堂案例

一、明确需求 目标:爬取最新更新的电影的豆瓣链接 观察网页和页面源代码,每部电影都有一个超链接去到子页面,我们需要的内容在子页面,如果我们一个一个子页面的去爬取会比较麻烦,可以尝试先通过首页爬取子页面的超链…

指针初阶(指针类型转换的使用、指针数组)

一.指针基础 0.指针的大小 指针指向的是一块地址,所以指针存储的是地址,例如在32位系统中。定义了一个int32_t类型的变量。使用int32_t *定义一个指针,使其指向该变量。 设该变量存储在地址为00000000000000000000000000000001(3…

远程调用-OpenFeign(一)

目录 1.RestTemplate存在问题 2.OpenFeign介绍 一、主要特点 二、应用场景 3.OpenFeign快速上手 3.1引入依赖 3.2添加注解 3.3编写OpenFeign的客户端 3.4远程调用 ​编辑3.5测试 4.OpenFeign参数传递 4.1传递单个参数 4.2传递多个参数 4.3传递对象 4.4传递JSO…

编程修炼之Hibernate--- springboot启动初始化ddl过程

文章目录 跟踪Springboot整合hibernate的启动代码: 开始初始化 entityManagerFactory 创建方言 dialect 继续排查

Koa商城项目-轮播图模块(后端)

前言 通过这次独自做前后端发现有很多需要提升的地方,很多细节处理不到位。下面简单看一下本人自己做的效果吧~~ Git地址 https://gitee.com/ah-ah-bao/koa_system 效果图 后端逻辑分析 首先编写route->banner.router.js /*** author: zxb* date: 2024-08-06…

Socket编程TCP 基础

一.什么是Socket(套接字) 定义:就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程&#x…