Java各个版本区别

article/2025/9/22 14:03:22

参考资料

一文彻底搞懂令人疑惑的Java和JDK的版本命名!
Java–Java版本和JDK版本


1. Java SE、java EE、Java ME三个版本

1.1 Java SE(Java Platform,Standard Edition)Java标准版

Java SE 是做电脑上运行的软件。
Java se 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE是基础包,但是也包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。

1.2 Java EE(Java Platform,Enterprise Edition)Java企业版

Java EE 是用来做网站的-(我们常见的JSP技术)
这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

1.3 Java ME(Java Platform,Micro Edition)Java微型版

Java ME 是做手机软件的。
这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

1.4 Java SE、java EE、Java ME关系

在这里插入图片描述

其实只要关注JavaSE就行,这个是Java的标准版本。JDK是与JavaSE相对应的。

2. Java SE和JDK版本的关系

我们无论说Java版本还是JDK版本都是对于JavaSE这个标准版本而言,最终的则是要知道,每个Java版本其实是对应一个具体的JDK版本,也就是说Java是语言,JDK是Java这门语言的开发工具包,所以Java的版本可以说是抽象上的宏观上的一个概念,有其自己的版本名称,对应的具体的实实在在存在的则是JDK了

一个Java版本对应着一个JDK版本

在这里插入图片描述

注:在2018年更新JavaSE 10之后,对应的JDK版本叫做JDK10,后续为了方便统一,之前的JDK1.8也可以叫做JDK8了!

不过到了现在,Java的版本号比较稳定了,也就是Java SE XX这种形式,比如即将发布的Java SE 19,这是一个长期受支持的版本!那对应的JDK版本就是JDK19了。

总结:Java8、JDK8、JDK1.8 其实是同一个东西。

Java版本更新特性查看网址:https://docs.oracle.com/en/java/javase/index.html

Java版本历史查看网址:https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2
在这里插入图片描述

3. JRE和JDK的关系

Java SE 平台系列包含两个主要产品:Java SE Runtime Environment (JRE) 和 Java Development Kit (JDK).
在这里插入图片描述

3.1 JRE

Java Runtime Environment (JRE) 提供运行用 Java 编程语言编写的应用和小程序所需的库、Java 虚拟机和其他组件。此外,JRE 还包括两项关键的部署技术:Java 插件 — 使小程序可以在常用浏览器中运行;以及 Java Web Start — 通过网络部署独立的应用。它还是用于企业软件开发和部署的 Java 2 Platform, Enterprise Edition (J2EE) 的基础。JRE 不包含用于开发应用和小程序的工具和实用程序,如编译器或调试器。

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

3.2 JDK

JDK 是 JRE 的超集,不但包含 JRE 中的所有内容,还包含开发应用和小程序所需的工具,如编译器和调试器。上面的示意图阐释了 Java SE 平台中的所有技术以及彼此之间关系。

JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。

1 bin:最主要的是编译器(javac.exe)
2 include:java和JVM交互用的头文件
3 lib:类库
4 jre:java运行环境

(`注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)

总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

3.3 JVM

JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

3.4 JRE、JDK、JVM三者的联系与区别

3.4.1 三者联系:

JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

3.4.2 三者区别:

a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。


http://chatgpt.dhexx.cn/article/jIJPrNYf.shtml

相关文章

Java各版本比较(Java SE、java EE、Java ME)

文章目录 1. 概述2. 版本比较2.1 Java SE、java EE、Java ME2.2 JDK、J2SE、Java SE2.3 JDK、JRE、Java SE API2.4 JDK、JRE、JRE、JIT2.5 Java ME、Java SE、Java EE、Java Card 来源 1. 概述 java是作为长时间流行的语言,在这过程中出现了很多版本,各…

Java--Java版本和JDK版本

对于Java初学者,经常会听到同事,或看到网上Java版本和JDK版本不一的叫法,不明白这两者到底什么关系?其实博主当年初学Java时也有这样的困惑,今天我们就来好好探讨一下,如有不对之处,请加以指正&…

【SpringBoot整合缓存】-----Redis缓存篇

本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获,也…

SpringBoot 开启Redis缓存

文章目录 Redis缓存主要步骤具体实践整体目录结构pom.xml添加依赖yml文件里配置Redis集群编写RedisConfig配置序列化及缓存配置,添加缓存注解编写业务Controller编写启动类 检验结果 之前不是说过Redis可以当作缓存用嘛 现在我们就配置一下SpringBoot使用Redis的缓存…

Windows下清理redis缓存

Windows下清理某个redis库的所有数据 1、找到redis的安装目录 2、找到redis-cli.exe,双击运行 3、登录redis:输入命令:auth 密码 4、登录成功:当前默认为数据库0 5、切换数据库:select 1/2/3(切换数据库为…

redis缓存穿透

ps:想只读有效信息,见红字 正常情况 当在高并发,高性能,降低数据库压力的情况下,首先会选择redis作为缓存机制,当有大量请求需要查询数据库时,为了降低数据库的压力,并提高请求查询性能&#…

linux下清理redis缓存

输入命令,连接到redis 服务端 redis-cli -h 127.0.0.1 -p 6379#不用切换到redis的bin下面, 是因为安装redis 时已经配置了系统变量验证登录密码, auth 你的redis密码 开始清理缓存,清理命令如下 指定redis片区: selec…

redis缓存命中率

登录redis服务器 输入 redis-cli 链接到redis之后,输入info 则会打印 通过计算hits和miss,我们可以得到缓存的命中率:111207/ (111207 50181) 68.9% ,一个缓存失效机制,和过期时间设计良好的系统,命中率…

命令行清除Redis缓存

一、打开命令行窗口 打开Redis安装目录下的《 redis-li.exe 》。 二、授权 在打开的命令行里直接操作会提示没有权限,需要先使用auth命令授权,使用方法如下。 auth ‘这里是Redis密码’ 三、清除缓存 清除缓存有两种方式:清除数据库缓存、清…

Redis缓存预热

概述 在秒杀开始前通常要进行将数据加载到缓存中,也叫缓存预热 demo Redis序列化配置,通常有两种方式,通过配置类进行序列化配置, Configuration public class RedisConfig {Autowiredprivate RedisConnectionFactory factory…

redis缓存失效问题

什么是缓存穿透?什么是缓存击穿?什么是缓存雪崩? 一个正常的访问流程: 1.缓存雪崩:redis缓存key同一时间大量失效,导致大量请求全部打到数据库,造成数据库挂掉。 如图: 缓存雪崩…

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到 达数据库,带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

Redis缓存注解

本篇博客将详细讲解Cacheable,CachePut , CacheEvict使用,希望对大家有所帮助。 1、Cacheable 作用是主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 参数解释examplevalue缓存的名称,在 spring 配置文件中定义,必…

Redis缓存的工作机制

Redis:缓存的工作机制 Redis缓存的工作机制缓存的特征Redis缓存处理请求Redis作为旁路缓存Redis中缓存的类型只读缓存读写缓存 参考文献 Redis缓存的工作机制 Redis具有高性能的数据存取特性,广泛的应用于缓存场景,在提升业务应用响应速度的同时&#xf…

Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案

前言 在日常的项目中,缓存的使用场景是比较多的。缓存是分布式系统中的重要组件,主要解决在高并发、大数据场景下,热点数据访问的性能问题,提高性能的数据快速访问。本文以Redis作为缓存时,针对常见的缓存击穿、缓存穿…

Redis缓存应用场景解析

Redis的应用场景非常广泛。虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写、海量数据的读写等。 举个例子,A网站首页一天有100万人访问,其中有一个“积分商…

Redis缓存三大问题

缓存三大问题 ​ 我们都知道,Redis的Key都存在一个ttl(time to live)过期时间,Redis默认的是永不过期。Redis作为缓存,一方面可以提升速度,但也会带来三大常见的缓存问题:缓存穿透、缓存击穿和缓存雪崩。 ​ Redis作…

Redis缓存

Redis 一、Redis简介 一般为了提升性能,会在存储层和客户端之间添加一个缓存层,当客户端向后端发送请求的时候,会先去缓存层查,看看是否有相应的数据,如果有则直接返回,这样就减轻存储层的压力&#xff0c…

【Redis缓存】

一、使用Redis缓存的优点 相比于数据库而言,缓存的操作性能更高,缓存性能高的主要原因有以下几点: 1、缓存一般都是key-value查询数据的,因为不像数据库一样还有查询的条件等因素,所以查询的性能一般会比数据库高&am…

Redis缓存机制(详解)

1.Redis 是什么? *redis是*一个运行在内存上的key-value存储系统。是NoSQL数据库之一 2.缓存穿透,缓存击穿,缓存雪崩 /**缓存穿透*/ 它会先查询Redis,Redis没有会查询数据库,数据库也没有这就是缓存穿透 业界主流解决方案:布隆过滤器布隆过滤器的使用步骤 布隆过滤器的使用步…