当前位置: 首页 > backend >正文

JAVA-什么是JDK?

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.xdnf.cn/news/12508.html

相关文章:

  • 【动手学深度学习】2.6. 概率
  • VTK 显示文字、图片及2D/3D图
  • rocketmq 之 DLeger集群,启动ACL 1.0,集成rocektmq-mqtt实践
  • pe文件结构(TLS)
  • window安装docker\docker-compose
  • 每日算法刷题Day24 6.6:leetcode二分答案2道题,用时1h(下次计时20min没写出来直接看题解,节省时间)
  • Java线程卡死问题定位
  • 商业卫星推进与控制系统电源芯片的国产替代研究
  • 智谱清言沉思智能体,天工智能体,agenticSeek等AI Agent测试记录
  • 黄晓明新剧《潜渊》定档 失忆三面间谍开启谍战新维度
  • 一些免费的大A数据接口库
  • LLaMA-Factory的5种推理方式总结
  • 使用vtk8.2.0加载dicom图像
  • 界面开发框架DevExpress XAF实践:集成.NET Aspire后如何实现数据库依赖?
  • 【AUTOSAR COM】E2E的不同profiles的含义以及应用
  • 批量文件改名具体操作方案
  • USB扩展器与USB服务器的2个主要区别
  • 机器人编程界面
  • CMake 为 Debug 版本的库或可执行文件添加 d 后缀
  • 第五讲——一元函数微分学的几何应用
  • 飞马LiDAR500雷达数据预处理
  • LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
  • Python基础语法全解:从入门到精通的简明指南
  • 初始结构体,整型提升及操作符的属性
  • RockyLinux9.6搭建k8s集群
  • 一键编译包含多个独立模块和应用的工程(linux cmake)
  • 单片机0-10V电压输出电路分享
  • 微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载
  • JVM——打开JVM后门的钥匙:反射机制
  • 408第一季 - 数据结构 - 数组和特殊矩阵