资讯专栏INFORMATION COLUMN

猫头鹰的深夜翻译:JDK Vs. JRE Vs. JVM之间的区别

blair / 909人阅读

摘要:什么是为执行字节码提供一个运行环境。它的实现主要包含三个部分,描述实现规格的文档,具体实现和满足要求的计算机程序以及实例具体执行字节码。该类先被转化为一组字节码并放入文件中。字节码校验器通过字节码校验器检查格式并找出非法代码。

什么是Java Development Kit (JDK)?

JDK通常用来开发Java应用和插件。基本上可以认为是一个软件开发环境。JDK包含Java Runtime Environment(JRE),JRE包含加载器/解释器,编译器(javac),文档生成器(Javadoc),打包功能(jar)和其它在开发中所需要功能:

加载代码

校验代码

执行代码

提供运行时环境

什么是Java Runtime Environment(JRE)

Java Runtime Environment(JRE)又称为Java RTE。JRE中包含核心类和支持文件。它还包含JVM。JVM会提供运行时环境。

确定JVM运行的特定类型。其类型主要由Sun和其它的几个机构提供。

其实现是一个满足JVM特定前提条件的客户端程序。

运行时实例无论何时运行Java类,都会产生JVM。

JDK一个物理存在的工具包。它包含JRE和其他工具。

什么是Java Virtual Machine(JVM)

JVM为执行Java字节码提供一个运行环境。它是一个抽象的独立于平台运行的机器。它的实现主要包含三个部分,描述JVM实现规格的文档,具体实现和满足JVM要求的计算机程序以及实例(具体执行Java字节码)。

JVM的主要任务包括:

加载代码

校验代码

执行代码

提供运行时环境

JDK, JRE和JVM之间的区别

JRE的组成

部署机制:Java Web Start, Java插件等

UI工具包:AWT,Swing,Java2D等

集成库:IDL,JDBC,RMI等

其它基础库:I/O,JNI,JMX等

Lang和utils基础库:lang,util,格式化,序列化,打包等

JVM:Java HotSpot客户端和服务端虚拟机

JRE功能

为了了解JRE的功能,可以看一下是如何加载Example.class这个类的。该类先被转化为一组字节码并放入.class文件中。

Java ClassLoader

ClassLoader将执行程序所需的每个重要类放入堆栈中。它通过命名系统来提供彼此之间的安全性。源码可以来自于硬盘,系统以及其它来源。

Java 字节码校验器

JVM通过字节码校验器检查格式并找出非法代码。校验器确JVM执行代码时能够够快,以及这段代码不会损害现存的框架。

Java解释器

解释器有两个功能:

执行字节码

正确调用隐藏的设备


想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72366.html

相关文章

  • 头鹰深夜翻译:为何需要缓存以及如何实现缓存

    摘要:由于需要跨进程访问网络上的高速缓存,因此延迟,故障和对象序列化会导致性能下降。应用程序高速缓存会自动清除条目以保持其内存占用。缓存统计高速缓存统计信息可帮助识别高速缓存的运行状况并提供有关高速缓存行为和性能的信息。 前言 这篇文章探索了现有的各种JAVA缓存基数,它们对各种场景下提高应用的性能起着重要的作用。 近十年来,信息技术极高的提升了业务流程,它已经成为了全球企业的战略性方案。它...

    FuisonDesign 评论0 收藏0
  • 头鹰深夜翻译:Volatile原子性, 可见性和有序性

    摘要:有可能一个线程中的动作相对于另一个线程出现乱序。当实际输出取决于线程交错的结果时,这种情况被称为竞争条件。这里的问题在于代码块不是原子性的,而且实例的变化对别的线程不可见。这种不能同时在多个线程上执行的部分被称为关键部分。 为什么要额外写一篇文章来研究volatile呢?是因为这可能是并发中最令人困惑以及最被误解的结构。我看过不少解释volatile的博客,但是大多数要么不完整,要么难...

    Lionad-Morotar 评论0 收藏0
  • 头鹰深夜翻译:Java 10JEP 286-局部变量类型推断

    摘要:在此基础上又向前迈进了一步局部变量类型推断允许开发人员跳过局部变量的类型声明局部变量是指在方法定义,初始化块,循环和其它的如代码块,会推断该局部变量的类型。 前言 之前面试的时候问了我是否了解JDK10的变化,一时回答不出来,所以只回答了JDK8中的函数式编程和流编程。今天看到这篇讲JAVA10的文章,顺便了解一下。 正文 JAVA10的所有新特性请参考这里。在所有的JEP中,JEP-...

    chavesgu 评论0 收藏0
  • 头鹰深夜翻译:在JVM上根据合约编程

    摘要:前言这周我准备介绍一个有趣的但是很少使用的方法按照合约编程,又称为合约编程,是一种软件设计的方法。这些规则被称为合约,可以比拟为商业合同中的条件和义务。通过将检查和异常抛出指令包装到方法中,人们可以很容易地实现合约式编程。 前言 这周我准备介绍一个有趣的但是很少使用的方法 按照合约编程,又称为合约编程,是一种软件设计的方法。它规定了软件设计师应该为软件组件定义正式,精确和可验证的接口规...

    whatsns 评论0 收藏0
  • 头鹰深夜翻译:Java中CAS(Compare And Swap)

    摘要:否则它就会用新的值替代当前值。在这种情况下,锁可能会优于原子变量,但在实际的争用级别中,原子变量的性能优于锁。在中引入了另外一个构件。 题目要求 在我们深入了解CAS(Compare And Swap)策略以及它是如何在AtomicInteger这样的原子构造器中使用的,首先来看一下这段代码: public class MyApp { private volatile int ...

    hosition 评论0 收藏0

发表评论

0条评论

blair

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<