1.JDK 的定义

        JDK(Java Development Kit)是 Java 开发工具包,是 Oracle 官方提供的用于开发、编译和运行 Java 应用程序的核心工具集。它包含了编写 Java 程序所需的编译器、调试工具、库文件以及运行时环境(JRE)。

2.JDK 的核心组件

  1. Java 编译器(javac)
    将 Java 源代码(.java 文件)编译为字节码(.class 文件)。

    // 示例代码
    public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}
    }
    

    使用 javac 编译:

    javac HelloWorld.java
    
  2. Java 运行时环境(JRE)
    包含 Java 虚拟机(JVM)和运行 Java 程序所需的类库。JRE 是 JDK 的子集,仅用于运行程序,而 JDK 用于开发。

  3. 工具和实用程序

    • java:运行编译后的字节码。
      java HelloWorld
      
    • javadoc:生成 API 文档。
    • jdb:Java 调试工具。
    • jar:打包和管理 Java 归档文件(.jar)。
  4. 标准类库(Java API)
    提供预定义的类和方法(如 java.langjava.util 等),支持开发常见功能(如集合、I/O、网络等)。

3.JDK 的版本

JDK 分为多个版本:

  • Oracle JDK:官方商业版本,需付费订阅用于生产环境(个人开发仍可免费使用)。
  • OpenJDK:开源版本,功能与 Oracle JDK 基本一致,但支持范围和许可不同。
  • 其他发行版:如 Amazon Corretto、AdoptOpenJDK 等,提供长期支持(LTS)。

4.JDK 的安装与配置

  1. 下载
    从 Oracle官网 或 OpenJDK 下载对应操作系统的 JDK 安装包。

  2. 安装

    • Windows:运行安装程序并设置环境变量 JAVA_HOME 指向 JDK 安装路径。
    • Linux/macOS:使用包管理器或手动解压后配置环境变量。
  3. 验证安装
    检查版本以确保安装成功:

    java -version
    javac -version
    

5.JDK 与 JRE 的区别

  • JDK:面向开发者,包含开发工具(如编译器)和 JRE。
  • JRE:面向用户,仅包含运行 Java 程序所需的 JVM 和类库。

6.实际应用场景

  • 开发 Java 应用程序、Android 应用(需搭配 Android SDK)。
  • 构建服务器端程序(如 Spring Boot 项目)。
  • 使用现代工具链(如 Maven、Gradle)时,JDK 是必备依赖。

7.实际应用场景

JDK(Java Development Kit)根据应用场景、发行商和版本特性可分为以下三类,其区分方式如下:


📦 ​​一、按应用领域分类​

主要分为三个版本,适用于不同开发场景:

  1. ​Java SE(Standard Edition)​

    • ​定位​​:标准版,用于开发桌面应用、命令行工具等通用程序。
    • ​包含组件​​:核心类库(如 java.langjava.util)、基础工具(javacjava)。
    • ​典型场景​​:学习Java语法、开发小型应用。
  2. ​Java EE(Enterprise Edition,现改名为 Jakarta EE)​

    • ​定位​​:企业版,支持分布式、高并发的大型应用。
    • ​扩展功能​​:Servlet、JSP、EJB、JMS 等企业级 API。
    • ​典型场景​​:Web 服务器、电商平台、金融系统。
  3. ​Java ME(Micro Edition)​

    • ​定位​​:微型版,针对嵌入式设备和移动终端优化。
    • ​特点​​:精简的类库和虚拟机,资源占用低。
    • ​典型场景​​:智能家电、旧式手机应用(如 J2ME 游戏)。

💡 ​​区分关键​​:

  • ​开发目标​​:通用程序选 SE、企业级系统选 EE、嵌入式设备选 ME。
  • ​依赖库​​:EE 包含 SE 所有功能 + 企业扩展库;ME 是 SE 的子集。

🏢 ​​二、按发行商分类​

不同厂商基于 OpenJDK 提供定制化 JDK,主要区分如下:

​发行版​​提供商​​核心特点​​适用场景​
​Oracle JDK​Oracle商业许可(生产环境需付费),含高级监控工具(如 Flight Recorder)企业级生产系统
​OpenJDK​开源社区完全免费,功能与 Oracle JDK 基本一致个人开发、测试环境
​Amazon Corretto​Amazon免费 LTS 支持,针对 AWS 云环境优化云原生应用部署
​Eclipse Adoptium​Eclipse 基金会社区驱动,提供多平台预编译包跨平台开发
​Azul Zulu​Azul Systems免费企业级支持,性能优化对稳定性要求高的生产环境

💡 ​​区分关键​​:

  • ​授权与费用​​:Oracle JDK 商用需订阅;其他版本免费。
  • ​支持周期​​:LTS(长期支持)版本(如 JDK 11/17/21)更适合企业。

🔖 ​​三、按版本特性分类​

以 ​​LTS(Long-Term Support)版本​​为核心,区分特性与适用场景:

​版本​​发布时间​​核心特性​​生命周期​
​JDK 8​2014 年Lambda 表达式、Stream API、接口默认方法支持至 2030 年(Oracle)
​JDK 11​2018 年局部变量类型推断(var)、HTTP/2 客户端、ZGC 垃圾收集器支持至 2026 年(Oracle)
​JDK 17​2021 年密封类(sealed class)、模式匹配(instanceof 增强)、移除 Applet API支持至 2029 年(社区)
​JDK 21​2023 年虚拟线程(轻量级并发)、分代 ZGC、字符串模板预览支持至 2031 年(社区)

💡 ​​区分关键​​:

  • ​功能迭代​​:
    • JDK 8 引入函数式编程;
    • JDK 11 强化性能与 HTTP 支持;
    • JDK 17/21 聚焦语法简化与并发优化。
  • ​升级建议​​:
    企业项目优选 LTS 版本(如 JDK 11/17);探索新技术可选 JDK 21。

✅ ​​四、如何选择与区分 JDK?​

  1. ​明确需求场景​​:

    • 学习/小工具 → Java SE + OpenJDK;
    • 企业级服务 → Java EE + Oracle JDK 或 Corretto;
    • 物联网设备 → Java ME + 嵌入式定制 JDK。
  2. ​关注授权与支持​​:

    • 商用项目避免 Oracle JDK 的付费风险,可选 ​​Corretto​​ 或 ​​Adoptium​​;
    • 长期维护系统需绑定 ​​LTS 版本​​(如 JDK 17)。
  3. ​版本特性对比​​:

    • 需要函数式编程 → ​​JDK 8+​​;
    • 需要高并发性能 → ​​JDK 21(虚拟线程)​​;
    • 需兼容旧设备 → ​​JDK 11(稳定且广泛支持)​​。

可通过命令 java -version 查看当前 JDK 发行商及版本信息,结合需求调整

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

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

相关文章

Palo Alto Networks Expedition存在命令注入漏洞(CVE-2025-0107)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…

分布式光纤传感(DAS)技术应用解析:从原理到落地场景

近年来,分布式光纤传感(Distributed Acoustic Sensing,DAS)技术正悄然改变着众多传统行业的感知方式。它将普通的通信光缆转化为一个长距离、连续分布的“听觉传感器”,对振动、声音等信号实现高精度、高灵敏度的监测。…

独家首发!低照度环境下YOLOv8的增强方案——从理论到TensorRT部署

文章目录 引言一、低照度图像增强技术现状1.1 传统低照度增强方法局限性1.2 深度学习-based方法进展 二、Retinexformer网络原理2.1 Retinex理论回顾2.2 Retinexformer创新架构2.2.1 光照感知Transformer2.2.2 多尺度Retinex分解2.2.3 自适应特征融合 三、YOLOv8-Retinexformer…

96. 2017年蓝桥杯省赛 - Excel地址(困难)- 进制转换

96. Excel地址(进制转换) 1. 2017年蓝桥杯省赛 - Excel地址(困难) 标签:2017 省赛 1.1 题目描述 Excel 单元格的地址表示很有趣,它使用字母来表示列号。 比如, A 表示第 1 列,…

EtherNet/IP转DeviceNet协议网关详解

一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…

Druid连接池实现自定义数据库密码加解密功能详解

Druid连接池实现自定义数据库密码加解密功能详解 在企业级应用开发中,数据库密码的明文存储是一个显著的安全隐患。Druid作为阿里巴巴开源的高性能数据库连接池组件,提供了灵活的密码加密与解密功能,允许开发者通过自定义逻辑实现数据库密码…

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…

Java并发编程实战 Day 12:阻塞队列与线程协作

【Java并发编程实战 Day 12】阻塞队列与线程协作 开篇 欢迎来到“Java并发编程实战”系列的第12天!今天我们将深入探讨阻塞队列(BlockingQueue)及其在线程协作中的应用。阻塞队列是Java并发编程中一个非常重要的工具,它不仅简化…

Linux 前后端项目问题排查命令手册

一、系统资源监控类命令​ 1. CPU 资源排查​ top - 动态实时监控进程​ top [选项] 常用选项: -d 2 # 每2秒刷新一次 -H # 显示线程信息 -p 1234 # 仅监控PID为1234的进程 输出解读:​ %Cpu(s):总 CPU 使用率,用户态 + 内核态​KiB Mem:内…

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…

vue3前端实现导出Excel功能

前端实现导出功能可以使用一些插件 我使用的是xlsx库 1.首先我们需要在vue3的项目中安装xlsx库。可以使用npm 或者 pnpm来进行安装 npm install xlsx或者 pnpm install xlsx2.在vue组件中引入xlsx库 import * as XLSX from xlsx;3.定义导出实例方法 const exportExcel () …

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…

Redis配合唯一序列号实现接口幂等性方案

1.原理 可以在客户端每次请求服务端的时候,客户端请求中携带一个短时间内唯一不重复的序列号来确保其唯一性,这个序列号常见的几种形式有:基于时间戳、用户ID和随机数的组合;基于请求的来源与客户端生成的唯一序列号组合 2.方案…

代码安全规范1.1

命令注入是指应用程序执行命令的字符串或字符串的一部分来源于不可信赖的数据源,程序没有对这 些不可信赖的数据进行验证、过滤,导致程序执行恶意命令的一种攻击方式。 例 1 :以下代码通过 Runtime.exec() 方法调用 Windows 的 dir 命…

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)

Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…

第二届智慧教育与计算机技术国际学术会议(IECT 2025)

在数字化浪潮中,智慧教育与计算机技术的深度融合正重构教育生态。智能教学系统打破传统课堂的单向灌输模式,通过机器学习分析学习数据,为学生生成个性化学习路径,推动被动接受向主动探索转型。这对教育体系提出核心诉求&#xff1…

驱控边界在哪里?知名舵机品牌伟创动力CNTE2025展带来答案

2025年6月12日,北京国防科技装备展将再度启幕。作为微型驱控领域的代表性厂商,伟创动力(Kpower)将带来覆盖舵机、减速齿轮箱、无刷电机及一体化驱控模组在内的全系解决方案,舵机产品回应一个至关重要的技术命题——“国…

Day46 Python打卡训练营

知识点回顾: 1. 不同CNN层的特征图:不同通道的特征图 2. 什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。 3. 通道注意力:模型的定义和插入的位置 4. 通道注意力后…

专业级PDF转CAD解决方案

PDF 文件因其出色的便携性和稳定性,已成为许多用户的首选格式。但在涉及图像编辑或精细调整时,CAD 文件显然更具优势。 这款 CAD 图纸转换工具,界面清爽、操作直观,是处理图纸文件的理想助手。 它不仅支持不同版本 CAD 文件之间…