首页 > 编程语言 >java 与jdk 关系

java 与jdk 关系

时间:2024-06-12 15:45:37浏览次数:48  
标签:关系 JRE Java jdk JDK OpenJDK Oracle java SE

 

 

java与jdk的关系

Java与JDK的关系是,Java是一种编程语言,而JDK(Java Development Kit)是Java语言的官方开发工具包。12

JDK是整个Java技术的核心,它包括了JRE(Java Runtime Environment)和一系列Java开发工具(如javac、java、javadoc等)。JRE是Java的运行环境,包括了JVM(Java Virtual Machine)和Java类库,用于在计算机上运行Java程序。而JDK则是在JRE的基础上,增加了Java编译器(javac)和其他开发工具,专门为Java开发人员设计,用于编写、编译和运行Java应用程序。

简而言之,JDK是面向开发人员的,提供了Java开发所需的工具和资源,而JRE则是面向普通用户和终端用户的,用于执行Java应用程序。因此,如果只是需要运行Java程序,只需要下载JRE即可;如果是要开发Java程序,则需要下载JDK。

此外,JDK、JRE和JVM之间存在层次关系:JDK包含JRE,因为JDK不仅提供了JRE的功能,还包含了用于Java开发的编译器等工具;JRE包含JVM,因为JVM是Java程序的运行时环境,而JRE提供了运行Java程序所需的JVM和Java类库。这种关系体现了JDK、JRE和JVM在Java技术栈中的不同角色和功能。

 

来自:https://www.cnblogs.com/iskandar/p/8933340.html

JDK(Java Development Kit)

JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。

JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。

JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

①SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。

②EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。

③ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。

 

 

 

open jdk 与 java SE关系:

OpenJDK(Open Java Development Kit)和 Java SE(Java Platform, Standard Edition)之间的关系如下:

定义和背景

  • Java SE:

    • Java Platform, Standard Edition (Java SE) 是由 Oracle 定义的 Java 平台标准,包含核心 Java 语言、标准类库和 JVM(Java Virtual Machine)。
    • Java SE 提供了编写和运行 Java 应用程序所需的 API 和工具,是所有 Java 平台(包括 Java ME 和 Java EE)的基础。
    • Java SE 由 JCP(Java Community Process)通过 JSRs(Java Specification Requests)来管理和规范。
  • OpenJDK:

    • OpenJDK 是 Java SE 的一个开源实现。它包含 Java SE 规范中定义的所有组件,包括编译器(javac)、虚拟机(HotSpot)、标准类库等。
    • OpenJDK 项目由 Oracle 主导,并有许多来自社区和其他公司(如 Red Hat、IBM)的贡献者。
    • OpenJDK 是 Java SE 的参考实现,这意味着它完全遵循 Java SE 规范并通过了兼容性测试。

关系

  1. 开源与商业版本:

    • OpenJDK 是 Java SE 的开源版本,由社区开发和维护。
    • Oracle JDK 曾经是 Java SE 的商业版本,基于 OpenJDK 并添加了一些闭源的工具和功能(如更好的监控和管理工具)。从 Java 11 开始,Oracle JDK 和 OpenJDK 的区别逐渐缩小,Oracle JDK 也采用了与 OpenJDK 相同的代码库。
  2. 实现与规范:

    • OpenJDK 是对 Java SE 规范的实现。任何兼容的 Java SE 实现(包括 Oracle JDK、Amazon Corretto 等)都必须通过相同的兼容性测试套件(TCK)。
  3. 贡献与管理:

    • OpenJDK 项目是由 Oracle 领导的开源项目,但有广泛的社区参与。
    • Java SE 规范是通过 JCP 过程来定义和更新的,而 OpenJDK 社区负责具体的实现工作。

实际使用

  • 开发者选择:
    • 开发者可以选择使用 OpenJDK 或 Oracle JDK 进行开发,两者在功能上几乎没有差异。由于 OpenJDK 是开源的,并且从 Java 11 开始,Oracle JDK 采用了与 OpenJDK 相同的代码库,许多开发者更倾向于使用 OpenJDK。
    • 企业用户可能会选择 Oracle JDK 以获得商业支持和额外的服务。

示例

  • 下载和安装 OpenJDK:

    • OpenJDK 可以从 OpenJDK 官方网站下载,也可以从各大 Linux 发行版的包管理器中安装。
    • 示例(在 Ubuntu 上安装 OpenJDK 11): sh sudo apt-get update sudo apt-get install openjdk-11-jdk
  • 下载和安装 Oracle JDK:

总的来说,OpenJDK 和 Java SE 之间的关系是规范和实现的关系。OpenJDK 是 Java SE 的开源实现,由社区开发和维护,而 Java SE 是由 Oracle 通过 JCP 定义和管理的 Java 平台标准。

参考:

 

标签:关系,JRE,Java,jdk,JDK,OpenJDK,Oracle,java,SE
From: https://www.cnblogs.com/rebrobot/p/18244060

相关文章

  • 【问题解决】java.util.jar.JarException: file:bcprov-jdk18on-1.78.jar is not sign
    现象启动程序报错,同时在classpath下有多个bcprov-jdk开头的包Causedby:java.util.jar.JarException:file:/C:/Users/93986/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk18on/1.78/619aafb92dc0b4c6cc4cf86c487ca48ee2d67a8e/bcprov-jdk18on-1.78.jaris......
  • 组长:你熟悉过React,开发个Next项目模板吧,我:怎么扯上关系的?
    组长:你熟悉过React,开发个Next项目模板吧,我:怎么扯上关系的?最近工作安排我开发一个Next.js项目模板,心里默笑,React用得少得都快忘光了,现在得搞Next?虽然我曾是React的老用户,但转投Vue阵营已久,React的点点滴滴早已一干二净。不过,挑战归挑战,规矩还得照做。我们通常会用内部工具来搭......
  • JavaScript常用的流程控制语句
    在JavaScript中,有以下几种常用的流程控制语句:if...else:当if条件为假时,可以使用else语句执行另一段代码。if(condition){//条件为真时执行的代码}else{//条件为假时执行的代码}if...elseif...else:可以链式使用多个if和elseif来根据多个条件执行不......
  • 【S087】Springboot+Thymleaf在线答疑系统项目源码 java源代码
    运行截图:登录学生注册教师注册学生发起问题联系我们后台首页常见问题管理添加常见问题人工答疑学生管理个人信息修改密码项目组成:项目源码:源码获取⬇⬇⬇......
  • 【S086】基于Springboot图书馆管理系统项目源码 java图书借阅管理 含文档
    运行截图:登录后台主页图书列表图书上架借阅图书归还图书用户列表添加用户公告列表发布公告个人信息详情个人信息编辑项目组成:项目源码:项目文档:源码获取⬇⬇⬇......
  • Java (WebDataBinder 枚举转换)
    前沿webDataBinder枚举类型转换 前端和后端数据请求的时候枚举类型 webDataBinder依赖于Converter实现类型转换,若Controller方法声明的@RequestParam参数的类型不是stringwebDataBinder就会自动进行数据类型转换。SpringMVC提供了常用类型的转换器,例如string到Integer、......
  • Java实际工作里用到的几种加密方式
    1、Base64加密最简单的加密方式,甚至可以说不是加密,只是一种用64个字符表示任意二进制数据的方法。Base64编码原理是将输入字符串按字节切分,取得每个字节对应的二进制值(若不足8比特则高位补0),然后将这些二进制数值串联起来,再按照6比特一组进行切分(因为2^6=64),最后一组若不足6比......
  • 浅谈 Java 引用:弱引用 WeakReference
    前言最近在测试micrometer的Gauge度量时,发现被观察的目标对象,在一开始时能被采集到指标,过了一段时间后(jvm发生了gc),被观察对象的指标采集不到了,经过跟踪发现,Gauge在构建被观察对象时,使用了Java的弱引用。测试场景回溯目标为了采集httpclient的连接管理器(连接池)的指标......
  • 50.基于SSM的停车场管理系统的设计与实现|基于SSM+ Mysql+Java设计与实现(可运行源码+
    内容概要:全套项目源码+详尽文档,一站式解决您的学习与项目需求。适用人群:计算机、通信、人工智能、自动化等专业的学生、老师及从业者。使用场景及目标:无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。项目代码经过调试测试,确保直接运行,节省您的时......
  • JavaWeb开发基础 (5) :后端框架进阶(事务管理、AOP、Spring原理、Maven高级)
    JavaWeb开发基础:后端框架进阶——事务管理、AOP、Spring原理、Maven高级文章目录1事务管理1.1Spring事务管理1.2rollbackFor和propagation2AOP2.1AOP快速入门2.2核心概念2.3通知类型2.4通知顺序2.5切入点表达式[email protected]连接点案......