您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

JDK和JRE-Java运行环境全面介绍

时间:2020-08-13 12:31:26  来源:  作者:

1. JAVA的运行机制

想要了解Java的运行环境,就得知道Java是如何运行的。

计算机高级语言是按程序的执行方式分为编译型和解释型这两种。而Java程序运行是先进行编译、后解释的。

1.1 编译阶段

编译型语言:是使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。

「JavaSE」JDK和JRE-Java运行环境全面介绍

简单说就是将源代码编译成机器语言的文件,例如exe格式的文件,在运行时,直接使用编译结果,运行exe文件就行。因为只要编译一次,以后运行就不需要编译了,所以编译型语言执行效率高。

【因为编译型语言是一次性编译成特定平台的机器码,因此编译生成的可执行程序无法移植到其他平台上运行。如果需要移植,则必须将源代码复制到特定平台上】

 

特点:

1. 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高

2. 与特定平台相关,一般无法移植到其他平台
3. 现有的C、C++、Objective、Pascal等都属于编译型语言

 

1.2 解释阶段

解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行一行动态翻译和执行,而不是在执行之前完成翻译的。

解释型语言不需要提前翻译,而是直接解释成机器码并立即运行,所以只要某一平台提供了相应的解释器即可运行该程序。

 

特点:
1. 解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低;
2. 只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
3. Python、Ruby等属于解释型语言。

 

1.3 关于Java语言

Java和其他的语言不太一样。因为Java编写的程序需要先经过编译步骤,但这个编译过程并不会生成特定平台的机器码,而是生成字节码文件。这种字节码文件是不可执行的,必须使用Java解释器来解释字节码生成机器码。所以说Java语言既不是纯粹的编译型语言,也不是纯粹的解释型语言。

Java程序的执行必须经过先编译、后解释的这两个步骤。

「JavaSE」JDK和JRE-Java运行环境全面介绍

Java中负责解释执行字节码文件的是JVM虚拟机,即JVM(Java Virtual machine)。JVM是可运行Java字节码文件的虚拟计算机。

所有OS平台的JVM向编译器提供相同的编程接口,而编译器只需要面向JVM,生成虚拟机能理解的代码,然后有虚拟机来解释执行。之后虚拟机代码转换成特定系统的机器码,然后执行。

「JavaSE」JDK和JRE-Java运行环境全面介绍

2.JDK、JRE具体介绍

「JavaSE」JDK和JRE-Java运行环境全面介绍

 

2.1 JDK:Java开发环境包

JDK:Java Development Kit 是Java的标准开发工具包 。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。

(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)


JDK安装目录下各个子文件目录和文档作用的详细介绍

(1)bin文件夹:存放了JDK的各种工具命令,javac和java就放在这个目录

(2)conf文件夹:存放了JDK的相关配置文件

(3)include文件夹:存放了一些平台特定的头文件

(4)jmods文件夹:存放了JDK的各种模块
(5)legal文件夹:存放了JDK各模块的授权文档

(6)lib文件夹:存放的是JDK工具命令的一些补充jar包

 

以下是JDK14的安装目录

「JavaSE」JDK和JRE-Java运行环境全面介绍

 

2.2 JRE:Java运行时环境

JRE:Java runtime environment 是运行Java语言编写程序,不可缺少的运行环境,用于解释执行Java的字节码文件。

JRE中包含了Java virtual machine(JVM),runtime class libraries和Java Application launcher,这些是运行Java程序的必要组件。

2.3 JDK、JRE和JVM三者之间的关系

JDK 包含JRE,JRE包含JVM。



Tags:JDK   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
JDK命令行工具在JDK的开发包中,除了大家熟知的java.exe和javac.exe外,还有一系列辅助工具。这些辅助工具位于JDK安装目录下的bin目录中,可以帮助开发人员很好地解决Java应用程...【详细内容】
2021-10-27  Tags: JDK  点击:(34)  评论:(0)  加入收藏
JDK 17 正式发布+免费牛逼啊,JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个时间点牛逼啊,蹭苹果发布会的热度?记得当年 JDK 15 的发布也是同天,巧了。。虽然 iPho...【详细内容】
2021-09-16  Tags: JDK  点击:(88)  评论:(0)  加入收藏
背景在一台阿里云服务器上需要搭建nacos集群,服务器是centos7.先是使用安装上传命令yum install lrzszrz:从本地上传文件至服务器sz filename:从服务器下载文件至本地然后各种...【详细内容】
2021-04-14  Tags: JDK  点击:(364)  评论:(0)  加入收藏
背景目前,有很多公司的WEB服务器会出现CPU、内存、IO告警,运维人员往往不能及时地获取JVM等相关信息,以便分析造成告警的原因,故本文将从几个方面来阐述如何进行JVM快照,如何分析...【详细内容】
2021-03-12  Tags: JDK  点击:(168)  评论:(0)  加入收藏
1 类加载器在类加载器家族中存在着类似人类社会的权力等级制度:1.1 Bootstrap由C/C++实现,启动类加载器,属最高层,JVM启动时创建,通常由与os相关的本地代码实现,是最根基的类加载...【详细内容】
2021-01-20  Tags: JDK  点击:(192)  评论:(0)  加入收藏
JVM话说面试这块,JVM算是一个经典的也是三年必问的知识点了,而且这个知识点算是最重要的一个知识点,你如果会这个内容,那么对你的在之后的面试中,能够喊出一个不错的价格。而关于...【详细内容】
2020-12-15  Tags: JDK  点击:(74)  评论:(0)  加入收藏
现在很多编译器和软件都开始要求使用 JDK 11 了。因此我们希望在 CentOS 上安装 JDK 11。运行下面的命令:yum install java-11-openjdk-devel如果你的系统中还装有不同版本的...【详细内容】
2020-11-05  Tags: JDK  点击:(55)  评论:(0)  加入收藏
一,前言我们都知道,tomcat启动前需要配置JDK环境变量,如果没有配置JDK的环境变量,那么tomcat启动的时候就会报错,也就是无法启动。但是在我们的工作或者学习过程中,有的时候会出现...【详细内容】
2020-10-09  Tags: JDK  点击:(85)  评论:(0)  加入收藏
JDK 15已经于2020年9月15日如期发布。本文介绍JDK 15新特性。发布版本说明根据发布的规划,这次发布的 JDK 15 将是一个短期的过度版,只会被 Oracle 支持(维护)6 个月,直到明年 3...【详细内容】
2020-09-25  Tags: JDK  点击:(83)  评论:(0)  加入收藏
一、下载安装jdk并配置1.1 进行JDK下载 下载地址:一键直达JDK下载展示图 一般下载后,安装位置默认,一路下一步,一直到安装完毕-“关闭”。1.2 环境变量配置不要管是不是一般情况...【详细内容】
2020-09-03  Tags: JDK  点击:(144)  评论:(0)  加入收藏
▌简易百科推荐
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(12)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(10)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(10)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(14)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(17)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
一、概述观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现,这么想来目标发生情况到观察...【详细内容】
2021-12-13  唯一浩哥    Tags:Java   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条