Java和JDK的关系;以及JDK版本

一、Java和JDK的关系:

Java是一门面向对象的编程语言,而JDK(Java Development Kit)则是开发Java应用程序所需的软件开发工具包。Java语言本身与JDK之间存在紧密的依赖关系,具体如下:

  1. Java语言:定义了语法、语义、数据类型、类库规范等编程规则,是编写Java程序的基础。

  2. JDK:包含了编译器(javac)、解释器(java)、调试器(jdb)、文档生成工具(javadoc)等开发工具,以及Java运行环境(JRE)和Java基础类库(Java API)。JRE中包含了Java虚拟机(JVM)和Java标准类库,是运行Java程序所必需的环境。因此,可以说JDK是Java开发者用来编译、运行、调试和维护Java程序的完整开发工具集。

总结来说,Java语言是抽象的编程规范,而JDK是实现这一语言的具体工具集合。要编写和运行Java程序,必须安装相应的JDK版本。

二、目前JDK的版本及其发布时间、主要特性变化:

以下是Java(JDK)近年来的主要版本及其发布日期,以及每个版本中引入的一些关键特性和改进:

JDK 8 (LTS)

  • 发布日期:2014年3月18日
  • 主要特性:
    • Lambda表达式:极大地简化了函数式编程风格,增强了代码的简洁性和可读性。
    • Stream API:支持对集合数据流进行高效、声明式的处理。
    • 接口的默认方法和静态方法:允许在接口中定义默认实现,增强接口的灵活性和扩展性。
    • 新的日期/时间API(java.time包):替代旧的Date/Calendar类,提供更加丰富和易于使用的日期、时间、时区处理功能。
    • ** Nashorn JavaScript引擎**:内置高性能JavaScript执行环境。
    • 并发改进:如StampedLock,增强并发控制能力。
  • 注意“JDK 1.8”这种说法实际上是对“JDK 8”的一种习惯性称呼。这里的“1.8”并非表示JDK的版本号是1.8,而是指JDK的第8个主要版本。在Java的发展历史中,早期版本的命名方式确实包含了小数点,如JDK 1.5、JDK 1.6等。但从JDK 7开始,官方的命名方式去掉了小数点,直接采用“JDK 7”、“JDK 8”这样的形式。尽管官方已经采用了新的命名方式,但由于习惯和记忆的原因,很多人仍然沿用旧的命名方式,将“JDK 8”称为“JDK 1.8”。这种称呼在开发者社区中相当普遍,尤其是在讨论早期JDK版本与后续版本之间的区别和兼容性时。因此,当你听到“JDK 1.8”时,你应该明白它实际上指的是“JDK 8”。这是一个约定俗成的称呼,尽管它并不完全符合官方的命名规范。同时,了解这一点也有助于你更好地理解和参与Java开发社区的讨论。

JDK 9 (非LTS)

  • 发布日期:2017年9月21日
  • 主要特性:
    • 模块系统(Project Jigsaw):引入模块化架构,提升了大型应用的组织和部署能力。
    • JShell:交互式Java REPL(Read-Eval-Print Loop),方便快速原型开发和学习。
    • HTTP/2客户端:提供新的API支持HTTP/2协议。
    • 进程API:允许Java程序控制和管理操作系统进程。
    • 改进的Javadoc:支持HTML5,增强文档生成工具的功能和样式。

JDK 10 (非LTS)

  • 发布日期:2018年3月20日
  • 主要特性:
    • 局部变量类型推断(var关键字):简化变量声明,特别是在使用Lambda表达式和流时。
    • 垃圾回收器接口:为GC实现提供了统一的接口,便于定制和替换。
    • 根证书更新机制:通过JDK自动更新根证书存储,增强安全性。

JDK 11 (LTS)

  • 发布日期:2018年9月25日
  • 主要特性:
    • ZGC:低延迟垃圾收集器:实验性引入,提供接近实时的暂停时间。
    • Epsilon GC:无操作垃圾收集器:用于性能基准测试和特殊场景。
    • HTTP客户端标准化:将JDK 9的HTTP/2客户端升级为标准API。
    • Flight Recorder和Mission Control:用于监控、诊断和分析JVM和Java应用程序的工具,正式成为JDK一部分。
    • 移除Java EE和CORBA模块:精简JDK,将这些模块移至独立的项目。

JDK 12 - 1.png (非LTS)

  • 发布日期:2019年3月19日 - 2020年3月17日
  • 主要特性:
    • Switch表达式(预览):增强switch语句,使其能返回值并支持模式匹配。
    • Microbenchmark Suite:内置微基准测试框架,便于性能评估。
    • Shenandoah GC:实验性引入,提供低停顿时间的并发垃圾收集器。

JDK 13 - 1.png (非LTS)

  • 发布日期:2019年9月17日 - 2020年9月15日
  • 主要特性:
    • 文本块(Text Blocks):简化多行字符串的创建和处理。
    • Switch表达式(正式版):在JDK 12的基础上完善并正式启用。

JDK 14 - 1.png (非LTS)

  • 发布日期:2020年3月17日 - 2021年3月16日
  • 主要特性:
    • Records:简化数据类的定义,提供简洁的语法创建不可变对象。
    • Pattern Matching for instanceof:增强instanceof运算符,支持类型检查和解构赋值。

JDK 15 - 1.png (非LTS)

  • 发布日期:2020年9月15日 - 2021年9月14日
  • 主要特性:
    • 隐藏类(Hidden Classes):允许动态生成仅供内部使用的类,提高性能和内存效率。
    • ZGC:并发线程堆栈处理:增强ZGC对线程堆栈的并发处理能力。

JDK 16 (LTS)

  • 发布日期:2021年3月16日
  • 主要特性:
    • Records:正式启用,作为Java语言的新特性。
    • Packaging Tool (jpackage):简化Java应用程序打包为本地平台可安装格式。

JDK 17 (LTS)

  • 发布日期:2021年9月14日
  • 主要特性:
    • Sealed Classes:限制类的子类化,增强API设计的灵活性和安全性。
    • Pattern Matching for switch:增强switch语句,支持模式匹配。

JDK 18 (非LTS)

  • 发布日期:2022年3月22日
  • 主要特性:
    • Virtual Threads (Project Loom):轻量级线程( fibers),简化并发编程模型。
    • Structured Concurrency:通过try-with-resources风格的API支持结构化并发控制。

JDK 19 (非LTS)

  • 发布日期:2022年9月20日
  • 主要特性:
    • Foreign Function & Memory API (Preview):支持直接调用C/C++代码和操作外部内存。

请注意,上述列表中,LTS(Long-Term Support)版本通常提供更长时间的维护和支持,适合用于生产环境。非LTS版本则通常包含更多实验性或预览特性,适合开发人员探索和试用新技术。同时,每个版本的具体发布日期和特性可能随着Oracle的计划有所变动,建议查阅Oracle官方发布的最新信息以获取最准确的版本详情。

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

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

相关文章

大模型实战提示工程 1—常用的大语言模型参数说明

1. 常用的大语言模型参数说明 使用提示词时,会通过 API 或直接与大语言模型进行交互。我们可以通过配置一些参数以获得不同的提示结果。调整这些设置对于提高响应的可靠性非常重要,我们可能需要进行一些实验才能找出适合您的用例的正确设置。以下是一些常见的参数设置: 1.…

【数据结构】单链表的尾插法

尾插法是一种在链表末尾插入新元素的方法,它的核心思想是保持链表的尾部指针(或称为尾节点),这样可以在常数时间内完成尾部插入操作。尾插法的主要步骤如下: 创建新节点:首先,根据需要插入的数据…

Java使用POI库对excel进行操作

excel转为图片 这个操作是要根据excel一行一行画出来的 package com.gxuwz.zjh.util;import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.…

day5 c++

#include <iostream> using namespace std; class Person { public:string name;int *age;//Person():name(name),age(new int(100)){cout<<"无参构造"<<endl;}Person(string name,int age):name(name),age(new int(100)){cout <<"P的有…

mysql--分库分表分区浅析

一、简介 MySQL分库分表是一种常用的数据库架构优化方法&#xff0c;特别适用于数据量大、访问压力高的情况。通过将数据分布到多个数据库或表中&#xff0c;可以提高系统的可扩展性、性能和管理效率。以下是MySQL分库分表的一些关键应用场景和考虑因素。 应用场景 提升查询性能…

C语言经典例题-5

1.交换数组 将数组A中的内容和数组B中的内容进行交换。(数组大小一样) #include <stdio.h>void swap(int arr1[],int arr2[], int sz) {int tmp 0;for (int i 0;i < sz;i){tmp arr1[i];arr1[i] arr2[i];arr2[i] tmp;} }void print(int arr1[], int arr2[], int…

创新科技赋能旅游服务:智慧文旅引领旅游发展新篇章,智能体验助力产业转型升级

随着科技的飞速发展和人们生活水平的提高&#xff0c;旅游业正迎来前所未有的发展机遇。创新科技在旅游服务领域的广泛应用&#xff0c;不仅提升了旅游体验的品质&#xff0c;也为旅游产业的转型升级注入了新的动力。智慧文旅作为旅游业与信息技术深度融合的产物&#xff0c;正…

Linux内核广泛采用的侵入式数据结构设计

Linux内核广泛采用的侵入式数据结构设计恐怕很难应用到一般程序开发中。基本上是个高维十字链表&#xff0c;一个节点(struct)可以同时位于多个hash/list/tree中。我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪…

项目:后台管理系统的开发及自动化部署

技术栈&#xff1a; web前端技术vue3elementplusaxiosvite&#xff1b; web服务器nginx; CI/CD工具jenkins; 代码管理工具gitlab; 虚拟机VM&#xff1b; 容器化操作docker&#xff1b; 后端接口测试工具Postman 一、后台管理系统 前端代码的编写 二、在Windows上安装虚拟…

如何安全高效地进行网点文件下发?

随着IT技术的飞速发展&#xff0c;以银行为代表的企业数字化技术转型带来了大量的电子化文档传输需求。文件传输数量呈几何级数增长&#xff0c;传统集中式文件传输模式在爆炸式的增长需求下&#xff0c;银行网点文件下发的效率、可靠性、安全性等方面&#xff0c;都需要重点关…

利用滚动索引来管理海量Elasticsearch数据

当面对大规模数据集时&#xff0c;单个Elasticsearch索引的数据量若持续增长&#xff0c;可能导致分片容量过大&#xff0c;进而引发查询时内存不足、甚至整个集群崩溃的问题。为避免这种情况&#xff0c;我们可以采用滚动索引&#xff08;Rollover Index&#xff09;这一策略&…

vue 下拉框默认值显示与多值传参

1、vue下拉框介绍 <template><el-select v-model"value" placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.label":value"item.value"></el-option>&…

使用hutool阿里云企业邮箱发送邮件和附件,包含PDF转图片base64,PDF转HTML

请务必开启阿里云服务器465 ssl邮件端口 废话不多&#xff0c;我们直接上代码。 注意&#xff1a;阿里云邮箱不支持邮件内容HTML带有URL链接&#xff0c;会被过滤和谐掉&#xff01;&#xff0c;所以邮件内容有PDF要么&#xff1a; PDF转图片base64&#xff0c;PDF转HTML&…

工具:如何在国内高速下载SRA

如何在国内高速下载SRA 下载公共测序数据&#xff0c;一般是通过在NCBI上搜索到study的Run SRA号&#xff0c;然后使用NCBI提供的prefetch下载数据&#xff0c;但因NCBI国内访问较为缓慢导致下载速度巨慢&#xff0c;因此推荐使用EBI提供的enaBrowserToolsAspera的方式从ENA下…

艾体宝案例 | 使用Redis和Spring Ai构建rag应用程序

随着AI技术的不断进步&#xff0c;开发者面临着如何有效利用现有工具和技术来加速开发过程的挑战。Redis与Spring AI的结合为Java开发者提供了一个强大的平台&#xff0c;以便快速构建并部署响应式AI应用。探索这一整合如何通过简化的开发流程&#xff0c;让开发者能够更专注于…

大核注意力 LKA | Visual Attention Network

论文名称&#xff1a;《Visual Attention Network》 论文地址&#xff1a;2202.09741 (arxiv.org) 尽管最初是为自然语言处理任务而设计的&#xff0c;但自注意力机制最近在各个计算机视觉领域迅速崭露头角。然而&#xff0c;图像的二维特性给计算机视觉中的自注意力应用带来了…

生成式人工智能AIGC技术的发展现状和未来趋势

生成式人工智能AIGC技术的发展现状和未来趋势 引言&#xff1a; 生成式人工智能&#xff08;Generative Artificial Intelligence&#xff0c;GAN&#xff09;是人工智能领域的一项重要技术&#xff0c;用于生成逼真的图像、视频和音频等内容。图形计算在游戏、虚拟现实、增强…

【Vue】组件化编程

定义 实现应用中局部功能代码和资源的集合 为什么要用组件化编程? 传统方式编写:依赖关系混乱,不好维护,且代码复用率不高 模块化编写:只关注解决js,复用js,简化js的编写与效率 组件方式编写:好维护、复用率更高、提高运行效率 在组件出现之前,我们开发基本都是用htm…

GD32E103C8T6 封装LQFP-48 GigaDevice(兆易创新) 单片机

GD32E103C8T6 是由GigaDevice&#xff08;兆易创新&#xff09;公司生产的一款基于ARM Cortex-M4内核的32位MCU&#xff08;微控制器&#xff09;。以下是GD32E103C8T6的一些主要功能和参数介绍&#xff1a; 主要功能&#xff1a; 高性能ARM Cortex-M4内核: 采用120MHz的ARM …

修复所有 bug 并不能解决所有问题

原文&#xff1a;jeffpsherman - 2024.04.08 在软件领域&#xff0c;如同在制造业&#xff0c;有些问题是由于 bug 或“特殊原因”引发的&#xff0c;而有些则是“常见原因”&#xff0c;这是由于系统设计和实现的性质所导致的。修复 bug 就是移除特殊原因&#xff0c;消除 bu…