JDK的版本迭代(JDK9 - JDK20)

2023-05-16

文章目录

    • 1. 发布特点
    • 2. 名词解释
      • Oracle JDK和Open JDK
      • JEP
      • LTS
    • 3. 各版本支持时间路线图
    • 4. 各版本介绍
      • jdk 9
      • jdk 10
      • jdk 11
      • jdk 12
      • jdk 13
      • jdk 14
      • jdk 15
      • jdk 16
      • jdk 17
      • jdk 18
      • jdk 19
      • jdk 20
    • 5. JDK各版本下载链接
    • 6. 应该如何学习新特性

1. 发布特点

发行版本发行时间备注
Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包
Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 8.02014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS
Java 9.02017.09.22此版本开始,每半年更新一次
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,是长期支持版本(LTS
Java19.02022.09发布Java19.0,版本号也称为22.9。

从Java 9 这个版本开始,Java 的计划发布周期是 6个月

这意味着Java的更新从传统的以特性驱动的发布周期,转变为以时间驱动的发布模式,并且承诺不会跳票。通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈,在一定程度上避免出现像 Java 9 两次被迫延迟发布的窘况。

针对企业客户的需求,Oracle 将以三年为周期发布长期支持版本(long term support)。

Oracle 的官方观点认为:与 Java 7->8->9 相比,Java 9->10->11的升级和 8->8u20->8u40 更相似。

新模式下的 Java 版本发布都会包含许多变更,包括语言变更JVM 变更,这两者都会对 IDE、字节码库和框架产生重大影响。此外,不仅会新增其他 API,还会有 API被删除(这在 Java 8 之前没有发生过)。

目前看这种发布策略是非常成功的,解开了 Java/JVM 演进的许多枷锁,至关重要的是,OpenJDK 的权力中心,正在转移到开发社区和开发者手中。 在新的模式中,既可以利用 LTS 满足企业长期可靠支持的需求,也可以满足各种开发者对于新特性迭代的诉求。因为用 2-3 年的最小间隔粒度来试验一个特性,基本是不现实的。

2. 名词解释

Oracle JDK和Open JDK

这两个JDK最大不同就是许可证不一样。但是对于个人用户来讲,没区别。

Oracle JDKOpen JDK
来源Oracle团队维护Oracle和Open Java社区
授权协议Java 17及更高版本 Oracle Java SE 许可证
Java16及更低版本甲骨文免费条款和条件 (NFTC) 许可协议
GPL v2许可证
关系由Open JDK构建,增加了少许内容
是否收费2021年9月起Java17及更高版本所有用户免费。 16及更低版本,个人用户、开发用户免费。2017年9月起,所有版本免费
对语法的支持一致一致

JEP

JEP(JDK Enhancement Proposals):jdk 改进提案,每当需要有新的设想时候,JEP可以提出非正式的规范(specification),被正式认可的JEP正式写进JDK的发展路线图并分配版本号。

LTS

LTS(Long-term Support)长期支持 。Oracle官网提供了对Oracle JDK个别版本的长期支持,即使发发行了新版本,比如目前最新的JDK19,在结束日期前,LTS版本都会被长期支持。(出了bug,会被修复,非LTS则不会再有补丁发布)所以,一定要选一个LTS版本,不然出了漏洞没人修复了。

版本开始日期结束日期延期结束日期
7(LTS)2011年7月2019年7月2022年7月
8(LTS)2014年3月2022年3月2030年12月
11(LTS)2018年9月2023年9月2026年9月
17(LTS)2021年9月2026年9月2029年9月
21(LTS)2023年9月2028年9月2031年9月

如果要选择Oracle JDK,目前可选的LTS版本为8、11、17三个

3. 各版本支持时间路线图

在这里插入图片描述

4. 各版本介绍

在这里插入图片描述

jdk 9

Java 9 提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具:jshell,JDK 编译工具,Java 公共 API 和私有代码,以及安全增强、扩展提升、性能管理改善等。

特性太多,查看链接:

https://openjdk.java.net/projects/jdk9/

jdk 10

https://openjdk.java.net/projects/jdk/10/

286: Local-Variable Type Inference 局部变量类型推断
296: Consolidate the JDK Forest into a Single Repository JDK库的合并
304: Garbage-Collector Interface 统一的垃圾回收接口
307: Parallel Full GC for G1 为G1提供并行的Full GC
310: Application Class-Data Sharing 应用程序类数据(AppCDS)共享
312: Thread-Local Handshakes ThreadLocal握手交互
313: Remove the Native-Header Generation Tool (javah) 移除JDK中附带的javah工具
314: Additional Unicode Language-Tag Extensions 使用附加的Unicode语言标记扩展
316: Heap Allocation on Alternative Memory Devices 能将堆内存占用分配给用户指定的备用内存设备
317: Experimental Java-Based JIT Compiler 使用Graal基于Java的编译器
319: Root Certificates 根证书
322: Time-Based Release Versioning 基于时间定于的发布版本

jdk 11

https://openjdk.java.net/projects/jdk/11/

181: Nest-Based Access Control 基于嵌套的访问控制
309: Dynamic Class-File Constants 动态类文件常量
315: Improve Aarch64 Intrinsics 改进 Aarch64 Intrinsics
318: Epsilon: A No-Op Garbage Collector Epsilon — 一个No-Op(无操作)的垃圾收集器
320: Remove the Java EE and CORBA Modules 删除 Java EE 和 CORBA 模块
321: HTTP Client (Standard) HTTPClient API
323: Local-Variable Syntax for Lambda Parameters 用于 Lambda 参数的局部变量语法
324: Key Agreement with Curve25519 and Curve448 Curve25519 和 Curve448 算法的密钥协议
327: Unicode 10
328: Flight Recorder 飞行记录仪
329: ChaCha20 and Poly1305 Cryptographic Algorithms ChaCha20 和 Poly1305 加密算法
330: Launch Single-File Source-Code Programs 启动单一文件的源代码程序
331: Low-Overhead Heap Profiling 低开销的 Heap Profiling
332: Transport Layer Security (TLS) 1.3 支持 TLS 1.3
333: ZGC: A Scalable Low-Latency Garbage Collector(Experimental) 可伸缩低延迟垃圾收集器
335: Deprecate the Nashorn JavaScript Engine 弃用 Nashorn JavaScript 引擎
336: Deprecate the Pack200 Tools and API 弃用 Pack200 工具和 API

jdk 12

https://openjdk.java.net/projects/jdk/12/

189:Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 低暂停时间的GC
230: Microbenchmark Suite 微基准测试套件
325: Switch Expressions (Preview) switch表达式
334: JVM Constants API JVM常量API
340: One AArch64 Port, Not Two 只保留一个AArch64实现
341: Default CDS Archives 默认类数据共享归档文件
344: Abortable Mixed Collections for G1 可中止的G1 Mixed GC
346: Promptly Return Unused Committed Memory from G1 G1及时返回未使用的已分配内存

jdk 13

https://openjdk.java.net/projects/jdk/13/

350: Dynamic CDS Archives 动态CDS档案
351: ZGC: Uncommit Unused Memory ZGC:取消使用未使用的内存
353: Reimplement the Legacy Socket API 重新实现旧版套接字API
354: Switch Expressions (Preview) switch表达式(预览)
355: Text Blocks (Preview) 文本块(预览)

jdk 14

https://openjdk.java.net/projects/jdk/14/

305: Pattern Matching for instanceof (Preview) instanceof的模式匹配
343: Packaging Tool (Incubator) 打包工具
345: NUMA-Aware Memory Allocation for G1 G1的NUMA-Aware内存分配
349: JFR Event Streaming JFR事件流
352: Non-Volatile Mapped Byte Buffers 非易失性映射字节缓冲区
358: Helpful NullPointerExceptions 实用的NullPointerExceptions
359: Records (Preview)
361: Switch Expressions (Standard) Switch表达式
362: Deprecate the Solaris and SPARC Ports 弃用Solaris和SPARC端口
363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector 删除并发标记扫描(CMS)垃圾回收器
364: ZGC on macOS
365: ZGC on Windows
366: Deprecate the ParallelScavenge + SerialOld GC Combination 弃用ParallelScavenge + SerialOld GC组合
367: Remove the Pack200 Tools and API 删除Pack200工具和API
368: Text Blocks (Second Preview) 文本块
370: Foreign-Memory Access API (Incubator) 外部存储器访问API

jdk 15

https://openjdk.java.net/projects/jdk/15/

339: Edwards-Curve Digital Signature Algorithm (EdDSA) EdDSA 数字签名算法
360: Sealed Classes (Preview) 密封类(预览)
371: Hidden Classes 隐藏类
372: Remove the Nashorn JavaScript Engine 移除 Nashorn JavaScript 引擎
373: Reimplement the Legacy DatagramSocket API 重新实现 Legacy DatagramSocket API
374: Disable and Deprecate Biased Locking 禁用偏向锁定
375: Pattern Matching for instanceof (Second Preview) instanceof 模式匹配(第二次预览)
377: ZGC: A Scalable Low-Latency Garbage Collector ZGC:一个可扩展的低延迟垃圾收集器
378: Text Blocks 文本块
379: Shenandoah: A Low-Pause-Time Garbage Collector Shenandoah:低暂停时间垃圾收集器
381: Remove the Solaris and SPARC Ports 移除 Solaris 和 SPARC 端口
383: Foreign-Memory Access API (Second Incubator) 外部存储器访问 API(第二次孵化版)
384: Records (Second Preview) Records(第二次预览)
385: Deprecate RMI Activation for Removal 废弃 RMI 激活机制

jdk 16

https://openjdk.java.net/projects/jdk/16/

338: Vector API (Incubator) Vector API(孵化器)
347: Enable C++14 Language Features JDK C++的源码中允许使用C++14的语言特性
357: Migrate from Mercurial to Git OpenJDK源码的版本控制从Mercurial (hg) 迁移到git
369: Migrate to GitHub OpenJDK源码的版本控制迁移到github上
376: ZGC: Concurrent Thread-Stack Processing ZGC:并发线程处理
380: Unix-Domain Socket Channels Unix域套接字通道
386: Alpine Linux Port 将glibc的jdk移植到使用musl的alpine linux上
387: Elastic Metaspace 弹性元空间
388: Windows/AArch64 Port 移植JDK到Windows/AArch64
389: Foreign Linker API (Incubator) 提供jdk.incubator.foreign来简化native code的调用
390: Warnings for Value-Based Classes 提供基于值的类的警告
392: Packaging Tool jpackage打包工具转正
393: Foreign-Memory Access API (Third Incubator)
394: Pattern Matching for instanceof Instanceof的模式匹配转正
395: Records Records转正
396: Strongly Encapsulate JDK Internals by Default 默认情况下,封装了JDK内部构件
397: Sealed Classes (Second Preview) 密封类

jdk 17

https://openjdk.java.net/projects/jdk/17/

306: Restore Always-Strict Floating-Point Semantics 恢复始终严格的浮点语义

356: Enhanced Pseudo-Random Number Generators 增强型伪随机数生成器
382: New macOS Rendering Pipeline 新的macOS渲染管道
391: macOS/AArch64 Port macOS/AArch64端口
398: Deprecate the Applet API for Removal 弃用Applet API后续将进行删除
403: Strongly Encapsulate JDK Internals 强封装JDK的内部API
406: Pattern Matching for switch (Preview) switch模式匹配(预览)
407: Remove RMI Activation 删除RMI激活机制
409: Sealed Classes 密封类转正
410: Remove the Experimental AOT and JIT Compiler 删除实验性的AOT和JIT编译器
411: Deprecate the Security Manager for Removal 弃用即将删除的安全管理器
412: Foreign Function & Memory API (Incubator) 外部函数和内存API(孵化特性)
414: Vector API (Second Incubator) Vector API(第二次孵化特性)
415: Context-Specific Deserialization Filters 上下文特定的反序列化过滤器

jdk 18

https://openjdk.org/projects/jdk/18/

400: UTF-8 by Default 默认为UTF-8
408: Simple Web Server 简单的Web服务器
413: Code Snippets in Java API Documentation Java API文档中的代码片段
416: Reimplement Core Reflection with Method Handles 用方法句柄重新实现核心反射
417: Vector API (Third Incubator) Vector API(第三个孵化器)
418: Internet-Address Resolution SPI internet地址解析SPI
419: Foreign Function & Memory API (Second Incubator) 外部函数与内存API(第二孵化器)
420: Pattern Matching for switch (Second Preview) 开关模式匹配(第二次预览)
421: Deprecate Finalization for Removal 不赞成删除最终化

jdk 19

https://openjdk.org/projects/jdk/19/

405: Record Patterns (Preview) 记录模式(预览)
422: Linux/RISC-V Port Linux / RISC-V端口
424: Foreign Function & Memory API (Preview) 外部函数和内存API(预览)
425: Virtual Threads (Preview) 虚拟线程(预览版)
426: Vector API (Fourth Incubator) Vector API(第四个孵化器)
427: Pattern Matching for switch (Third Preview) 开关模式匹配(第三次预览)
428: Structured Concurrency (Incubator) 结构化并发(孵化器)

jdk 20

https://openjdk.org/projects/jdk/20/

429: Scoped Values (Incubator) 范围值(孵化器)
432: Record Patterns (Second Preview) 记录模式(第二次预览)
433: Pattern Matching for switch (Fourth Preview) 开关模式匹配(第四次预览)
434: Foreign Function & Memory API (Second Preview) 外部函数和内存API(第二次预览)
436: Virtual Threads (Second Preview) 虚拟线程(第二次预览版)
437: Structured Concurrency (Second Incubator) 结构化并发(第二个孵化器)
438: Vector API (Fifth Incubator) 载体API(第五孵化器)

5. JDK各版本下载链接

https://www.oracle.com/java/technologies/downloads/archive/

在这里插入图片描述

6. 应该如何学习新特性

对于新特性,应该从哪几个角度学习新特性呢?

  • 语法层面:

    • 比如JDK5中的自动拆箱、自动装箱、enum、泛型
    • 比如JDK8中的lambda表达式、接口中的默认方法、静态方法
    • 比如JDK10中局部变量的类型推断
    • 比如JDK12中的switch
    • 比如JDK13中的文本块
  • API层面:

    • 比如JDK8中的StreamOptional、新的日期时间、HashMap的底层结构
    • 比如JDK9中String的底层结构
    • 新的 / 过时的 API
  • 底层优化

    • 比如JDK8中永久代被元空间替代、新的JS执行引擎

    • 比如新的垃圾回收器、GC参数、JVM的优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDK的版本迭代(JDK9 - JDK20) 的相关文章

  • 程序设计思维 CSP-M3

    T1 瑞神的数列 题目 Sample Input 12 2 3 3 6 6 6 1 1 4 5 1 4 Sample Output 8 思路 利用vector xff0c 使用vector lt int gt v储存数字 若v为空 xff0
  • ubuntu一段时间后突然无法上网

    在VMware中安装Ubuntu虚拟机 xff0c 总会发生无法上网的情况 xff0c 主要情况有以下几点 xff1a 宿主机可以上网 xff1b 虚拟机却无法访问网页虚拟机ping不通任何网站 xff0c 用浏览器显示error 一般情况
  • STM32 - 使用 HAL 库实现软件模拟 I2C

    不要让自己太懒的个人空间 I2C 的两个引脚 xff08 SCL 引脚和 SDA 引脚 xff09 需要既能输出又能输入 xff0c 为了避免复杂的配置操作需要把该引脚配置为开漏输出模式 xff0c 该模式的说明如下图所示 xff1a 当单
  • 二进制基础:补码,左移,右移

    binary 引入为什么要有补码特殊的值溢出数学移位逻辑位移逻辑右移的应用 引入 二进制是计算机的基础 xff0c 追根溯源还是因为Si的半导体性 除了二进制 xff0c 还有十六进制 xff0c 它是简化二进制的表示 做个测试 xff1a
  • GitLab配置SSH key

    1 我们已经有了gitlab的账户 xff0c 项目组已经将我们添加到了group 2 打开git bash xff0c 输入命令 ls al ssh 如果显示如下图 xff1a 则表示生成过key 可以去执行第4个步骤 否则的话执行第三个
  • centos误删python2后怎么重新安装

    此教程为离线安装 一 先查询系统版本 cat proc version Linux version 3 10 0 1127 el7 x86 64 mockbuild 64 kbuilder bsys centos org gcc versi
  • Week 6 H (A - 氪金带东)(B - 戴好口罩!)(C - 掌握魔法の东东 I)(D - 数据中心)

    Week 6 A 氪金带东题意思路代码 B 戴好口罩 xff01 题意思路代码 C 掌握魔法 东东 I题意思路代码 D 数据中心题意思路代码 A 氪金带东 题意 思路 首先 xff0c 这个图是棵树 解法 xff1a 三遍DFS 前两遍用来
  • CSP M2(A - HRZ 的序列)(B - HRZ 学英语)(C - 咕咕东的奇妙序列)

    CSP M2 A HRZ 的序列题意思路代码 B HRZ 学英语题意思路代码 C 咕咕东的奇妙序列题意思路代码 A HRZ 的序列 题意 思路 我们先求有多少个不同的数 xff0c 记为cnt xff0c 然后分情况进行处理 cnt gt
  • CSP M4 (A - TT数鸭子)(B - ZJM要抵御宇宙射线)(C - 宇宙狗的危机)

    CSP M4 A TT数鸭子思路代码 B ZJM要抵御宇宙射线思路代码 C 宇宙狗的危机思路代码 A TT数鸭子 思路 给你n个很多未的数 xff0c 然后有个k表示最大能有k 1位数是不一样的 xff0c 输出符合的数的个数 xff08
  • 1.C语言基础-给字符数组赋值

    1 定义字符数组定义时直接初始化 定义字符数组定义时直接初始化 下面例子中直接将字符串123456的首地址赋值给a span class token keyword char span a span class token punctuat
  • 【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享

    以下是阿里云Apsara Clouder云计算专项技能认证 云服务器ECS入门真题汇总篇分享 xff1a 1 下列哪一个不是重置ECS密码的步骤 A 查看实例详情 B 进入控制台 C 远程连接ECS D 点击控制台 概览 2 针对云服务器E
  • IDEA启动报错 could not find main class

    IDEA启动报错 could not find main class IDEA启动时发生报错 xff1a 排查过程如下 xff1a 首先在idea安装目录下 xff0c 找到 bin idea bat 文件cmd运行bat后可以看到报错信息
  • 网站访问高峰之后,如何回收已占用的swap分区

    如下所示 xff1a root 64 oldboy free m total used free shared buffers ached Mem 981 834 146 0 7 181 43 buffers cache 646 335 S
  • pip 安装使用国内镜像源

    pip 包管理器 默认是去官方国外网站下载 xff0c 速度比较慢 xff0c 我们可以通过使用国内镜像源来提高下载速度 1 临时使用 xff1a 可以在使用pip的时候加参数 i 镜像源 xff0c 如使用豆瓣源 xff1a pip in
  • 如何解压 .lz4 后缀文件

    首先需要window电脑 看好你电脑是64还是86 xff0c 直接把lz4后缀的文件拖拽到 exe上面就可以了 下载地址 xff1a https pan baidu com s 1VUAq1v6j9a abwtfmN1w2Q 密码 vw4
  • 关于CondaHTTPError:HTTP 000 CONNECTION FAILED错误的解决

    关于CondaHTTPError HTTP 000 CONNECTION FAILED错误的解决 虚拟环境是系统的一个位置 xff0c 你可以在其中安装包 xff0c 并将其与其他Python包隔离 将项目的库与其他的项目隔离是有益的 我想
  • kinit无密码登录配置

    通常在远程客户端上登录kerbros都需要密码 xff0c 在学习hadoop的时候提到了ktutil这个工具 xff0c 这里将使用方法贴出来 运行命令 ktutil add entry password p hadoop admin 6
  • (二)C语言数据类型(2)

    今天主要总结了一下运算符 xff0c 详细介绍了运算符分类和优先级的基本知识 欢迎加入嵌入式学习群 xff1a 559601187 运算符按操作数可以分为 xff1a 单目运算符 双目运算符和三目运算符 xff0c 优先级依次为单目运算符
  • Error: failed to create deliver client for orderer: orderer client failed to connect to orderer

    环境 操作系统 CentOS 7 Fabric版本 2 0 1 问题 创建通道时报错 yaml文件已通过extra hosts方式配置域名解析 peer channel create o orderer example com 7050 c
  • Fabric2.0 新特性实践:通道成员可扩展链码

    承接上文 xff1a Hyperledger Fabric 2 0新特性 xff0c Fabric2 0版本允许组织去扩展链码 xff0c 也就是说通道成员之间的链码包可能会不同 xff0c 这么做的好处是每个组织可以根据自身利益增加自己的

随机推荐

  • cannot find package github.com/hyperledger/fabric-chaincode-go/shim in any of: /usr/local/go/src/

    问题 Fabric版本 xff1a 2 0 1 在使用Java SDK 安装go语言链码时报错 xff1a failed to invoke backing implementation of InstallChaincode could
  • Fabric2.0 使用开发模式(dev 模式)测试

    dev模式 dev模式不是Fabric 2 0引入的 xff0c 1 x版本就已存在的 对于Fabric 2 0来说 xff0c 可以构建外部的链码容器 xff0c 对于运维和开发调试来说 xff0c 变得越来越方便 在2 0版本之前 xf
  • C语言获取文件行数

    int tmain int argc TCHAR argv FILE fp int flag 61 0 file row 61 0 count 61 0 if fp 61 fopen 34 C Users zzl Desktop lmcli
  • Hyperledger Fabric排序服务实现

    排序算法 solo kafka raft Raft 推荐 作为 v1 4 1 的新特性 xff0c Raft 是一种基于 etcd 中 Raft 协议实现的崩溃容错 xff08 Crash Fault Tolerant xff0c CFT
  • 以太坊学习一:密码学

    密码学作为区块链最基础的的技术之一 xff0c 这些知识既包括对信息的转换 加解密 xff0c 以及校验过程 xff0c 也包括以太坊地址和交易Hash xff0c 交易信息RLP编码 基于椭圆曲线公私钥签名 区块Merkle树交易 Has
  • VMware安装Debian完成后启动黑屏仅有一个光标

    问题 xff1a vmware安装Debian完成 xff0c 启动时出现黑屏现象 xff0c 仅有一个光标 问题原因 xff1a 安装步骤有误 解决方案 重新安装镜像 xff0c 安装过程中记得 将GRUB 启动引导器安装至您的主驱动器
  • mybatis resultType为map 字段为null不返回

    框架 springboot框架 xff0c 分为两种情况 xff1a 一种情况为部分字段为null xff0c 一种情况是全部字段均为null 部分字段为null 返回的数据格式形如 这种情况下 xff0c 只会返回 post code p
  • mysql在update语句中使用分页查询limit [offset,] rows

    在update语句中 limit 前几条是没问题的 xff0c 形如下面的写法 span class token keyword update span temp dj purchase span class token keyword s
  • 认识常见中间件-redis(一)

    Redis 是一种基于内存的数据库 xff0c 对数据的读写操作都是在内存中完成 xff0c 因此读写速度非常快 xff0c 常用于缓存 xff0c 消息队列 分布式锁等场景 Redis 提供了多种数据类型来支持不同的业务场景 xff0c
  • 线程池源码分析

    ThreadPoolExecutor的参数解释 public class ThreadPoolExecutor extends AbstractExecutorService public ThreadPoolExecutor int co
  • Ubuntu 18.04开机报错无法启动

    在虚拟机中启动Ubuntu时 xff0c 显示类似如下界面 原因 xff1a 硬盘空间不足 xff0c 所以无法启动系统了 解决方案 xff1a 1 启动系统 xff0c 在该界面单击按键shift xff08 如果是虚拟机 xff0c 要
  • win10+Xming+VSCode接远程服务器使用图形化界面(GUI)

    Xming安装 官网下载 Download下载安装下载完毕 xff0c 点开安装包 xff0c 直接按默认设置一路点击next完成安装 进入Xming的安装文件夹 xff0c 默认是 C Program Files x86 Xming xf
  • Python 判断文件是否存在,存在则删除

    span class token comment filepath为文件路径 span span class token keyword import span os span class token comment 判断文件是否存在 sp
  • arm下QT环境搭建

    第一次接触QT xff0c 发现每个人搭建环境问题都不一样 xff0c 我把我的问题和步骤写下 xff0c 以供参考 xff01 1 选择环境 xff0c QT需要安装Xwindows环境的操作系统 xff0c 开始我使用操作系统是没有图形
  • 计算机网络-聊天室的设计与实现

    计算机网络实践 一 实践设计的目的和意义二 实践设计的内容和要求三 设计用设备仪器四 实践设计的相关技术五 项目设计与实践1 设计思路2 模块描述3 运行结果 六 结束语源码与详细过程 一 实践设计的目的和意义 在互联网如此发达的今天 xf
  • python-下载某短视频平台视频(高清无水印)

    python 下载某短视频平台音视频 xff08 高清无水印 xff09 前言1 获取视频 url2 发送请求3 数据解析4 本地保存5 完整代码 前言 1 Cookie中文名称为小型文本文件 xff0c 指某些网站为了辨别用户身份而储存在
  • Java中的Reflection(反射)、暴力反射

    文章目录 1 反射 Reflection 的概念1 1 反射的出现背景1 2 反射概述1 3 Java反射机制研究及应用1 4 反射相关的主要API1 5 反射的优缺点 2 Class类并获取Class实例2 1 理解Class2 1 1
  • JVM(类的加载与ClassLoader、双亲委派机制)

    文章目录 1 类的生命周期2 类的加载过程3 类加载器 xff08 classloader 3 1 类加载器的作用3 2 类加载器的分类 JDK8 3 3 双亲委派机制3 3 1 双亲委派机制优势 3 4 查看某个类的类加载器对象3 5 使
  • Java中的反射(通过反射获取类的结构、invoke方法、获取注解)

    文章目录 1 创建运行时类的对象2 获取运行时类的完整结构2 1 相关API2 2 获取所有的属性及相关细节2 3 获取所有的方法及相关细节2 4 获取其他结构 构造器 父类 接口 包 注解等 2 5 获取泛型父类信息2 6 获取内部类或外
  • JDK的版本迭代(JDK9 - JDK20)

    文章目录 1 发布特点2 名词解释Oracle JDK和Open JDKJEPLTS 3 各版本支持时间路线图4 各版本介绍jdk 9jdk 10jdk 11jdk 12jdk 13jdk 14jdk 15jdk 16jdk 17jdk 1