一起学JAVA之【基础篇】JDK & JRE & JVM 关系
前言
第一次写这种长篇连载系列,有写的不好的地方或者错误的地方请大家指出,感谢!
JDK
jdk全称Java Development Kit(Java开发工具包)是sun公司(已被oracle公司收购)推出的针对Java开发程序员的软件开发工具包。从推出以来现在已经迭代到jdk15了,但是现在市场上大部分公司都还是用的jdk8,原因也很简单,大部公司的历史代码都是用的jdk8开发的,贸然升级版本,有很大的风险!所以本系列教程都以jdk8为基础来书写。
都说jdk是一个工具包,那么这个工具包里面到底有些什么呢?下面就来看一下这个Java程序开发工具包中到底有些什么吧!首先我们先在window下安装一个jdk8 然后打开jdk安装目录我们可以看到jdk的安装目录中有六个文件夹,一个src类库源码压缩包、和其他几个声明文件。其中真正运行java是起作用的是一下四个文件夹: bin、include、lib、jre。
bin :这个文件夹里面有很多个.exe文件,下面就说说各个.exe文件的作用是什么
java
java.exe 执行应用日志再在控制台显示输出与错误信息。
javaw.exe 主要用于启动基于GUI的应用程序。启动eclipse使用的,也就是启动java应用存在的。
javaws.exe 是用来启动通过web来描述的项目,我们需要一个jnlp文件,来描述 javaws.exe 需要运行的程序。
javac
Java编程语言编译器,javac读取用Java编程语言编写的源文件,并将它们编译成字节码类文件。编译器还可以选择使用可插入注释处理API处理源文件和类文件中的注释。编译器是一个命令行工具,但也可以使用Java编译器API调用。编译器接受由Java语言规范(JLS)定义的源代码,并生成由Java虚拟机规范(JVM)定义的类文件。
javadoc
Javadoc是一个工具,它解析一组源文件中的声明和文档注释,并生成一组描述类、接口、构造函数、方法和字段的HTML页面。
jar
JAR(Java Archive)是一种独立于平台的文件格式,它将许多文件聚合为一个文件。多个javaapplet及其必需的组件(类文件、图像和声音)可以捆绑在一个JAR文件中,然后在一个HTTP事务中下载到浏览器,大大提高了下载速度。JAR格式还支持压缩,这减少了文件大小,进一步提高了下载时间。此外,applet作者可以对JAR文件中的各个条目进行数字签名,以验证它们的来源。它是完全可扩展的。
javap
Java class文件分解器,可以反编译,也可以查看java编译器生成的字节码等。
javah
javah 生成实现本地方法所需的 C 头文件和源文件。C 程序用生成的头文件和源文件在本地源代码中引用某一对象的实例变量。.h 文件含有一个 struct 定义,该定义的布局与相应类的布局平行。该 struct 中的域对应于类中的实例变量。
jdeps
Java类依赖分析器(java dependencies)。
jhat
是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。
Scripting(脚本)
可用于运行与Java平台交互的脚本。
Security(安全)
安全工具帮助您在系统上设置安全策略,并创建可以在远程站点设置的安全策略范围内工作的应用程序。
Monitoring
您可以使用以下工具监视JVM性能统计信息。本节中描述的工具是不受支持的和实验性的,应该牢记这一点。它们可能在将来的JDK版本中不可用。
JConsole
一种兼容JMX的图形工具,用于监视Java虚拟机。它可以监视本地和远程jvm。它还可以监视和管理应用程序。
VisualVM
Java VisualVM是一个工具,它提供了一个可视化界面,用于查看Java应用程序在Java虚拟机(JVM)上运行时的详细信息,以及对这些应用程序进行故障诊断和分析。Java开发工具包(JDK)提供了各种可选工具,包括Java VisualVM,用于检索有关运行JVM软件实例的不同类型的数据。例如,大多数以前独立的工具JConsole、jstat、jinfo、jstack和jmap都是Java VisualVM的一部分。Java VisualVM联合这些工具从JVM软件获取数据,然后以图形方式重新组织和呈现信息,使您能够统一查看关于多个Java应用程序的不同数据,无论它们是在本地运行还是在远程计算机上运行。此外,开发人员可以通过创建插件并将其发布到工具的内置更新中心来扩展Java VisualVM以添加新功能。
JMC
Java高级管理控制台(Java Advanced Management Console,JMC)是一个商业特性,它提供了管理Java版本兼容性和桌面安全更新的工具。
JFR
java飞行记录器(java flight recorder,JFR)。运行java飞行记录器JFR(java flight recorder)
JPDA
Java平台调试器体系结构(Java Platform Debugger Architecture,JPDA)由三个接口组成,设计用于桌面系统开发环境中的调试器。Java虚拟机工具接口(JVM TI)定义了VM必须为调试提供的服务。Java Debug-Wire协议(JDWP)定义了被调试进程和实现javadebug接口(JDI)的调试器前端之间传输的信息和请求的格式。Java调试接口在用户代码级别定义信息和请求。
JVM TI(JVM工具接口)
JVM工具接口(Java Virtual Machine Tool Interface,JVM TI)是供工具使用的本机编程接口。它提供了一种检查状态和控制Java虚拟机(JVM)中运行的应用程序执行的方法。JVM TI支持需要访问JVM状态的各种工具,包括但不限于:分析、调试、监视、线程分析和覆盖率分析工具。
IDL
接口定义语言(Interface Definition Language,IDL)。
RMI
远程方法调用(Remote Method Invocation,RMI)。Java RMI 服务器框架
Java DB(Java数据库)
Deployment(部署)
用于在web上部署java应用程序和小程序的实用程序。
Internationalization(国际化)
工具有助于创建可本地化的应用程序。
Web Services(Web服务)
Troubleshooting(故障排除)
可用于特定的故障排除任务。它们可能在将来的JDK版本中不可用。
2018-11-07 16:04:02 白夜行悟空
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/qq_29479041/article/details/83659665
include:java和JVM交互用的头文件(这里可以看出jdk和jvm有一定的关系)
lib:类库
jre:java运行环境 (从这里可以看出jdk是包含了jre的)
JRE
Java Runtime Environment 这是jre的全称,java运行环境,它包含了jvm标准实现以及java核心类库,从上面的jdk安装目录可以看出jdk是包含jre的,jre又是包含jvm的所以总的来说jdk包含了jre包含了jvm
JVM
Java Virtual Machine ,java虚拟机是java 程序的实时运行环境也是高级java开发程序员必须掌握的,这个我们后面再细说,jvm也是java程序能够一次编译,到处运行的核心
总结
最后总结一下jdk、jre、jvm 三者的关系,jdk集成了jre和jvm,但是三者的职责又不一样:jdk负责编译.java文件为.class文件;
jre负责运行.class文件;jvm解析字节码并交给操作系统调用