Java开发的基石:JDK

Java开发的基石:JDK



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、引入

JDK是Java Development Kit的缩写,是Java开发工具的核心组件。JDK包含了Java编译器、Java运行时环境、Java API类库和其他工具,用于开发、编译、运行和调试Java应用程序。JDK是Java开发的基础,是Java程序员必须掌握的工具之一。

二、JDK的发展历程

JDK有很多版本,每个版本都有自己的特点和功能。目前,最新的稳定版本是JDK 17,而最广泛使用的版本是JDK 8。下面是JDK的版本历史:

  1. JDK 1.0:Java的第一个版本,于1996年1月发布。
  2. JDK 1.1:于1997年2月发布,增加了内部类、JavaBean、RMI等功能。
  3. JDK 1.2:于1998年12月发布,引入了Swing、Java 2D和JavaBeans组件体系结构。
  4. JDK 1.3:于2000年5月发布,增加了Java Sound、Java Naming and Directory Interface (JNDI) 和Java Platform Debugger Architecture (JPDA) 等功能。
  5. JDK 1.4:于2002年2月发布,增加了Java Web Start、Java Management Extensions (JMX) 和Java Native Interface (JNI) 扩展功能。
  6. JDK 5:于2004年9月发布,增加了Java语言的自动装箱、泛型、枚举和注解等特性。
  7. JDK 6:于2006年12月发布,增强了JDBC、Java Web Services和Java Compiler API等功能。
  8. JDK 7:于2011年7月发布,引入了新的语言特性、NIO 2.0和Fork/Join Framework等功能。
  9. JDK 8:于2014年3月发布,增加了Lambda表达式、Stream API和Date Time API等新特性。
  10. JDK 9:于2017年9月发布,增加了模块化、REPL和HTTP/2支持等新特性。
  11. JDK 10:于2018年3月发布,增加了局部变量类型推断、应用类数据共享和垃圾回收器接口等新功能。
  12. JDK 11:于2018年9月发布,增加了HTTP Client API、ZGC垃圾回收器和Epsilon垃圾收集器等新特性。
  13. JDK 12-16:于2019年3月至2021年3月期间发布,引入了新的语言特性、JVM特性和垃圾收集器等功能。
  14. JDK 17:于2021年9月发布,增加了Sealed类、Pattern Matching for switch、Vector API和Foreign Function and Memory API等新特性。

从JDK1.4到JDK5,命名格式为何如此大变化?

JDK命名从1.4变成5的主要原因是,JDK5这个版本引入了许多新特性,发生了巨大变化,为了更好地反映Java技术的发展和进步,以更直观的方式展示Java的版本号。

三、JDK主要目录结构解析

在JDK 8中,JDK的主要目录结构如下:

jdk1.8.0/
├── bin/
│   ├── appletviewer
│   ├── extcheck
│   ├── idlj
│   ├── jar
│   ├── jarsigner
│   ├── java
│   ├── javac
│   ├── javadoc
│   ├── javafxpackager
│   ├── javah
│   ├── javap
│   ├── java-rmi.cgi
│   ├── javaws
│   ├── jcmd
│   ├── jconsole
│   ├── jdb
│   ├── jinfo
│   ├── jmap
│   ├── jps
│   ├── jrunscript
│   ├── jsadebugd
│   ├── jstack
│   ├── jstat
│   ├── jstatd
│   ├── keytool
│   ├── native2ascii
│   ├── orbd
│   ├── pack200
│   ├── policytool
│   ├── rmic
│   ├── rmid
│   ├── rmiregistry
│   ├── schemagen
│   ├── serialver
│   ├── servertool
│   ├── tnameserv
│   ├── unpack200
│   └── wsgen
├── include/
│   └── *.h
├── jre/
│   ├── bin/
│   ├── lib/
│   ├── plugin/
│   ├── COPYRIGHT
│   ├── LICENSE
│   ├── README
│   └── THIRDPARTYLICENSEREADME.txt
├── lib/
│   ├── tools.jar
│   ├── dt.jar
│   ├── jconsole.jar
│   ├── missioncontrol
│   ├── visualvm
│   ├── ant-javafx.jar
│   ├── ant-junit.jar
│   ├── ant-launcher.jar
│   ├── ant.jar
│   ├── jfxswt.jar
│   ├── javafx-mx.jar
│   ├── jfr
│   ├── jfr.jar
│   ├── jfxrt.jar
│   └── management-agent.jar
├── src.zip
├── COPYRIGHT
├── LICENSE
└── README.html

下面是这些目录的作用:

  1. bin/:该目录包含了Java开发和执行所必需的核心工具和实用程序。其中包括javac用于编译Java源代码、java用于运行Java应用程序、jar用于创建和操作Java归档文件等工具。还有其他的工具用于故障排除和调试,例如jconsolejvisualvmjstack等等。

  2. include/:该目录包含了用于使用Java Native Interface (JNI) 开发本地扩展所需的C头文件。JNI是一种编程框架,允许Java应用程序调用用C或C++编写的本地代码。

  3. jre/:该目录包含了Java Runtime Environment (JRE),用于运行Java应用程序。JRE包括Java虚拟机 (JVM)、类库和其他运行Java应用程序所需的文件。jre/bin/ 目录包含了用于启动JRE的可执行文件,例如 javajavawjavaws

  4. lib/:该目录包含了Java库和工具,例如 tools.jarjfxswt.jarjfxrt.jar 等等。这些文件通常用于开发Java应用程序。其中tools.jar是开发Java应用程序所需的核心库,它包含了Java编译器 (javac) 和其他开发工具。jfxswt.jarjfxrt.jar 是JavaFX 库的一部分,用于开发富客户端应用程序。

  5. src.zip:该文件是JDK的源代码压缩包,包含了Java开发工具和库的源代码。这些源代码可以用于学习JDK的内部实现和调试。

  6. COPYRIGHT:该文件包含了JDK的版权声明。

  7. LICENSE:该文件包含了JDK的许可证。

  8. README.html:该文件包含了JDK的基本信息和使用说明。

这些目录包含了Java开发和执行所必需的工具、库、文件和源代码。其中,bin/目录是最重要的一个目录,因为它包含了Java的核心工具,可以在终端中使用。

四、JDK的使用

  1. 要使用JDK进行Java开发,需要将JDK安装到计算机上,并配置Java环境变量(具体怎么安装,网上教程一大把)。安装完JDK后,可以使用命令行工具或集成开发环境(IDE)进行Java开发。

  2. 在命令行中,可以使用javac编译Java源代码,生成字节码文件,然后使用java命令运行字节码文件。例如:

java 复制代码
javac HelloWorld.java
java HelloWorld
  1. 在IDE中,可以使用IDE提供的代码编辑器、自动完成、调试器等功能,大大提高开发效率和代码质量。常见的Java IDE包括Eclipse、IntelliJ IDEA和NetBeans等。
  2. 除了Java开发,JDK还提供了丰富的工具和组件,用于性能优化、调试和诊断等。例如,jstat可以监控JVM的性能指标,jmap可以生成堆转储文件,jdb可以进行Java程序的调试等等
相关推荐
zquwei3 分钟前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
TT哇9 分钟前
*【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
java·算法·蓝桥杯
火烧屁屁啦32 分钟前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
飞飞-躺着更舒服36 分钟前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
w_31234541 小时前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安1 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA1 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_19284999061 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
张国荣家的弟弟1 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring