• JDKJREJVM区别与联系
  • 安装JDK时为什么有两个JRE
  • 细说JDK目录结构

在学习Java之前,对于一些基础知识的总结:
在学习java之前,第一件事便是搭建Java开发环境。JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。


JDK、JRE、JVM区别与联系

JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。

JRE : Java Runtime Enviromental(java运行时环境)。也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。

下图很好的表面了JDK,JRE,JVM三者间的关系:


安装JDK时为什么有两个JRE

安装JDK后,安装目录中出现两个版本的JRE文件,其中之一在JDK外部,一个在JDK内部,这是所谓的专用JRE和公用JRE;

  • 专用JRE
    专用JRE是给JDK中包含的工具工具提供运行环境;专用JR没有注册表设置,并且完全包含在仅对JDK已知的Java目录位置;
  • 公用JRE
    公用JRE可由其他Java应用程序使用(如浏览器插件或者Swing界面的客户端),并且包含在JDK外部,公共JRE会注册到Windows注册表(位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft)中,公共JRE可以使用“添加/删除程序”进行删除,并且还会注册到浏览器;换句话说,公共JRE就是为运行加载到计算机中的JAVA程序来提供运行环境的;

细说JDK目录结构

装好JDK后,我们要先明白JDK里面都包含了写什么东西,主要有什么作用!下图为JDK8的安装目录:

  1. bin:这是存放java启动命令以及其他开发工具命令(如javac)的,该目录应当保存到PATH变量中。

    • javac : 编译器,将源程序转成字节码
    • jar : 打包工具,将相关的类文件打包成一个文件
    • javadoc : 文档生成器,从源码注释中提取文档
    • jdb : debugger,查错工具
    • java : 运行编译后的java程序(.class后缀的)
    • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
    • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
    • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
    • Jconsole: Java进行系统调试和监控的工具
  2. lib:是JDK工具用到的类库及其他文件。tools.jar就包含了对开发工具的支持功能库;dt.jar就是所谓DesignTime的东西,估计是给JavaBean和IDE用的;jconsole.jar自然是给jconsole工具用的了;htmlconverter.jar是用来把用applet的HTML转成所谓Java Plug-In的,即标签改为。

  3. include:包含C语言头文件,用于编写JNI程序和JVMDI(Debugger Interface)的程序时用到,好像还有JVMTI。

  4. jre:这就是JDK自含JRE的根目录了,这是系统属性java.home所指向的目录。下图为JRE的目录结构:

    • jre/bin:包含执行文件和dll等库文件,是JVM需要的,可执行文件和jdk/bin是一样,本目录不需要被PATH所包含。

      • jre/bin/client:包含用Client模式的VM时需要的dll库。
      • jre/bin/server:包含用Server模式的VM时需要的dll库。
    • jre/lib:包含核心代码库(Java平台的core API),如rt.jar是所谓的bootstrap的类库,还有很多其他需要的子目录和资源文件等等。注意这个lib目录和jdk/lib是不一样的。
      • jre/lib/ext:是Extension Class Loader装入jar类库的地方,如localdata.jar包含的是java.text和java.util需要的东西。
      • jre/lib/security:包含JVM安全需要的设置文件,JVM信任的证书也在这里。
      • jre/lib/applets:用于applet需要用到的jar库文件,Applet类通过Applet Class Loader从本地文件系统中预加载,这样为减小大型 Applet 的启动时间提供了一些方式,好像从网上已经下载完成了一样。
      • jre/lib/fonts:字体文件。

不积跬步,无以至千里!!!

Java学习前,需要掌握的一些基础知识相关推荐

  1. Kotlin学习(一):Kotlin基础知识

    Kotlin学习(一):Kotlin基础知识 定义变量常量 在Kotlin中,定义变量时有以下几点与java不同: 位置不同:在 Kotlin 中,数据类型要放到变量后面,并且用冒号(:)分隔,这正好 ...

  2. java爬虫面试题_Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做 ...

  3. pwn学习总结(四)—— 堆基础知识(持续更新)

    pwn学习总结(四)-- 堆基础知识(持续更新) 前言 chunk 使用中(分配后) 空闲中(释放后) 堆块大小 空间复用 bins fastbin unsorted bin small bin 前言 ...

  4. 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备...

    相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结. 所以下面给大家分享一下我的经验: 第一部分   介绍微信公众号的一些简单 ...

  5. 3D视觉学习计划之PCL库的基础知识

    3D视觉学习计划之PCL库的基础知识 一.PCL库的概述 PCL是一个大型跨平台开源C++编程库,它在吸收了前人点云相关研究基础上建立起来,实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取. ...

  6. 从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)

    从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数) 一. 向量的内积与外积 二. 旋转与平移 2.1 旋转表示 --- 旋转矩阵R 2.2 平移向量 2.3 变换矩阵T与齐次坐标 2. ...

  7. Java学习笔记系列-入门篇-计算机基础

    Java学习笔记 Java学习笔记是一个持续更新的系列,工作多年,抽个空对自身知识做一个梳理和总结归纳,温故而知新,同时也希望能帮助到更多正在学习Java 的同学们. 本系列目录: 入门篇 计算机基础 ...

  8. 学习游戏软件开发需要哪些基础知识

    随着互联网技术的不断进步,游戏动画产业得到了大众的接受和尊重,现已发展成为最受欢迎的产业之一.许多游戏开发公司也变得越来越繁荣.许多游戏玩家开始转向游戏开发,学习游戏开发.他们必须了解游戏开发的基础需 ...

  9. 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了【ZT帅地】2020-3-7

    https://blog.csdn.net/m0_37907797/article/details/104029002 由于文章有点多,并且发的文章也不是一个系列一个系列发的,不过我的文章大部分都是围 ...

最新文章

  1. 关系抽取论文整理,核方法、远程监督的重点都在这里
  2. 视频检测分割--Deep Feature Flow for Video Recognition
  3. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)
  4. 匿名函数、冒泡排序,二分法, 递归
  5. 2017.10.25 书柜的尺寸 失败总结
  6. 软件维护复杂度的因素
  7. OLAP-druid-大数据Week13-DAY2-druid
  8. 【通讯录】Excel通讯录导入手机详细教程
  9. 小米的服务器地址怎么修改,小米无线路由器IP地址怎么修改
  10. 抗体链接InP/ZnS量子点|量子点InP/ZnS表面修饰抗体偶联服务-齐岳生物
  11. 秦小明 第六讲 投融资,资产运作
  12. wordpress网站添加百度导航地图
  13. font-style 属性 oblique 是什么意思
  14. 1. 从键盘输入一系列字符(以回车符结束,字符的个数不超过 200 个),统计输入字符串中数字与非数字字符的个数,并将计数结果输出。
  15. Magica Cloth服装模拟插件分享
  16. 第三方SDK开发入门
  17. 王者nba服务器维护,王者NBA新手常用问题FAQ大全
  18. css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
  19. Android 9 P静默安装/卸载App适配终极指南
  20. 原生JavaScript实现对象的完全深度拷贝

热门文章

  1. monkeyrunner API接口文档内容
  2. powerdesigner 生成实体代码 附加生成xml
  3. 机器学习 —— 概率图模型(推理:采样算法)
  4. Access“INSERT INTO 语句的语法错误”解决办法
  5. Java实现邮箱找回密码
  6. OpenCV3学习(11.7) BRISK特征检测器及BRISK描述符
  7. cad图形如何导入到奥维地图_【详细教程】奥维地图上查看项目的线路图或平面图...
  8. Type(类型判断)
  9. L1-069 胎压监测 (15 分)
  10. 计算机网络系统由什么系统组成,从资源构成上看计算机网络系统由什么构成