浅解JDK

1.JDK是什么
JDK是Java development kit的缩写,意思是java程序开发的工具包,也可以说JDK是java的SDK。
2.JDK的结构

3.JDK的版本
SE(J2SE),standard edition,标准版,是我们通常用的一个版本 
EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序, 
ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序 

4.JDK都包含了哪些组件
JDK主要包含Java Language语言(语法)、Tools(编译器、调试器等)、Jre等,具体如下:
Java Language,Java 编程语言是一种通用的、可并发的、强类型的、基于类的、面向对象的语言。Java语言通常是将代码编译成字节码指令集和Java 虚拟机规范中定义的二进制格式。
Tools,JDK工具集非常重要,包含了编译器、调试器、内存监控、堆栈监控、堆分析、进程线程工具等工具。
JRE( Java Runtime Environment),JRE是运行Java程序所须环境的集合,包含Jvm标准实现、Java核心类库。

5.Java语言的执行过程

宽泛地讲,Java源代码(.java)经过java编译器(javac.exe)编译之后,并没有直接转化为机器码,而是转化成一种中间格式——字节码(.class),字节码再经过Java虚拟机解释,转化成机器码,然后经由操作系统到达CPU运行。整个执行过程如下图所示:

6.JDK、JRE和JVM三者之间关系
JDK 包含JRE,JRE包含JVM

JVM:将字节码文件转成具体系统平台的机器指令。 
JRE:JVM+Java语言的核心类库。 
JDK:JRE+Java的开发工具。
我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
7.JRE包含哪写组件
jre包含了若干组件,可以分为几大类:Base Libraries、Other Base Libraries、Integration Libraries、User Interface Libraries、Deployment、Java Virtual Machines,具体如下:
Base Libraries,基础类库,提供了Java平台最基本特性和功能的类和接口。包括Lang包、Util包、Math包、Reflection包、Collections包等。
Other Base Libraries,基础类库的补充,是Java平台的补充功能,在特定情况下有重要的作用。包括I/O包、Serialization包、Security包、JNI等。
Integration Libraries,服务集成类库,每一个组件都可以提供独立、完整的服务,内部逻辑内聚而复杂。包括JDBC、RMI、JNDI、IDL等。
User Interface Libraries,用户界面类库,提供了UI、图像、声音、交互等服务,目前来说使用场景并不广泛。包括AWT、Swing、Image I/O等。
Deployment,java部署,包括jdk的安装、设置、更新、重新分配等,具体如下:
在电脑上安装Java平台 配置Java平台 用java编写应用和程序 编写web页面调用applet或下载并启动应用程序 在web服务器生成java相关文件 在电脑上更新Java平台
Java Virtual Machines,Java虚拟机(JVM)是一个抽象的计算机指令集,同事操纵运行时的内存。它可以移植到不同的平台,具有硬件和操作 系统的独立性。Java SE提供了两种实现的JVM:
Java HotSpot Client VM,客户端虚拟机是通常用于客户端应用程序。一般通过调优以减少启动时间和内存占用。 使用-client启动应用程序。 Java HotSpot Server VM服务器虚拟机以程序执行速度、启动时间和内存占用等指标来设计的,相比客户端虚拟机在性能方面有很大提升。使用-server启动应用程序。
8.Java的跨平台性
Java的跨平台是基于JVM虚拟机这一中间物来实现的,Java源程序经过编译器编译后生成虚拟机能够理解的字节码(ByteCode——class文件的内容),虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定系统上的机器码,然后在特定的机器上运行。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。


猜你喜欢

转载自blog.csdn.net/qq_39533847/article/details/80083228