草庐IT

JVM、JDK、JRE你分的清吗

aibianchengya 2023-04-18 原文

JVM、JDK、JRE你分的清吗

前言

在我们学习Java的时候,就经常听到"需要安装JDK"、"运行需要JRE"、"JVM调优"等等,这里面的JVM、JDK、JRE你真的分得清吗,今天我们就来讲讲它们之间的关系。

JVM

学过Java的都知道,JAVA是一次编译,到处运行,这主要是通过JVM,JVM是JAVA跨平台的核心,它主要是指的是JAVA虚拟机,JVM是不能单独安装的。JVM主要功能是屏蔽了不同平台之间的差异性,负责将java字节码文件解释成对应系统可以运行的机器指令,我们在不同操作系统上执行JAVA文件的时候,需要安装对应系统的JDK,编写的JAVA程序首先会被编译成.class文件,再把.class文件交给对应系统的JVM虚拟机翻译成对应系统的操作指令进行执行,也就是说JVM会把.class文件中的字节码指令识别并且调用对应操作系统上的API进行执行。JVM可以进行定制,每个人都可以开发属于自己的JVM。

JRE

JRE是Java运行时环境,它包含JAVA程序所需的所有内容,包括Java虚拟机、Java类库、Java命令等。JRE是可以单独进行安装的,但是不能创建新的JAVA程序。

JDK

JDK是Java的开发工具包,是编译环境,一般我们开发程序下载安装的就是JDK,它是JAVA开发必需的工具,它包含JAVA编译器,包含Java编译命令,例如javac.exe,java.exe等,还包含Java的运行环境,即上面我们提到的JRE,还包含JVM虚拟机,所以一般我们开发JAVA程序,安装JDK之后就会安装好JRE和JVM。JDK是可以创建新的JAVA程序的。JDK和JRE可以单独安装,但是JVM不能单独安装,它们之间的关系可以简单理解为JDK>JRE>JVM。

总结

如果只是简单运行JAVA程序的话,安装JRE即可,但是如果是开发JAVA程序的话,那就需要安装JDK了,但是运行部分JAVA应用程序时,如果需要JDK来进行编译的,可能也需要安装JDK才可以运行。

原文链接:https://monkey.blog.xpyvip.top/archives/jvmjdkjre-ni-fen-de-qing-ma

有关JVM、JDK、JRE你分的清吗的更多相关文章

  1. arrays - 字符串数组中字符串第一部分的总和 - 2

    我有一个字符串数组,我需要从中提取第一个单词,将它们转换为整数并获得它们的总和。示例:["5Apple","5Orange","15Grapes"]预期输出=>25我的尝试:["5","5","15"].map(&:to_i).sum 最佳答案 我从你的问题中找到了答案。["5Apple","5Orange","15Grapes"].map(&:to_i).sum在数组中,如果存在任何整数可转换值,那么它将自动转换为整数。 关于arrays-字符串数组中字符串第一部分的总和,我们在Sta

  2. ruby - Scala 的扩展性是否优于其他 JVM 语言? - 2

    这是我目前知道的唯一询问方式。据了解,Scala使用Java虚拟机。我以为Jruby也是。Twitter将其中间件切换为Scala。他们可以做同样的事情并使用Jruby吗?他们是否可以从Jruby开始,而不是因为扩展问题导致他们首先从Ruby迁移到Scala?我不明白Jruby是什么吗?我假设因为Jruby可以使用Java,所以它可以扩展到Ruby不能的地方。在这种情况下,一切都归结为静态类型与动态类型吗? 最佳答案 Scala是“可扩展的”,因为语言可以通过库进行改进,使扩展看起来像是语言的一部分。这就是为什么actors看起来像

  3. javascript - 如何在 Netbeans 的 Nashorn (JDK 8+) 中调试 JavaScript? - 2

    我看到了最新的Netbeans8.0beta提供了一种调试“在Nashorn中执行的JavaScript代码”的方法(参见附件)查看此操作的步骤是什么?[更新]我只能通过打开文件(在任何项目之外)运行一个简单的JavaScript文件,在文件内部单击,右键单击,然后选择“运行文件”选项。我需要指出快捷方式“Shift-F6”对我不起作用。因此,如果其他人知道运行它的不同方式,请发布您的解决方案。[更新2]关于JavaScriptNashorn的新文章提及Netbeans中的JavaScript调试[更新3]似乎Nashhorn将在JDK内部被弃用。参见JEP335:Deprecatet

  4. javascript - 如何锁定(或沙箱)JDK 的内置 Javascript 解释器以运行不受信任的脚本 - 2

    我们有一个Java应用程序,想使用内置的Javascript解释器(javax.script.*)运行不受信任的代码然而,默认情况下,解释器允许访问任何java类。例如,脚本中的“java.lang.System.exit(0)”将关闭JVM。我相信这叫做“LiveConnect”,有关详细信息,请参阅Sun的“JavaScriptingProgrammer'sGuide”。我想以某种方式关闭脚本访问Java类的能力,即我只希望脚本能够访问我使用eval()或ScriptEngine上的put()方法。我找到了一些关于如何使用旧的独立版本的解释器(Rhino)实现此目的的文档,例如参见

  5. map 某部分的Golang for循环 - 2

    尝试为map的每个部分创建一个for循环。map[asn:AS10time:1.428790768e+09ipv4s:[68.114.75.0/24216.215.56.0/22216.215.60.0/22]ipv6s:[2607:f3f8::/32]]上面是映射,我想尝试为ipv4s中的每个值创建一个for循环。我已经尝试过了,但我显然没有正确地做到这一点,因为它仅仅基于我的php知识。:forjson_map["ipv4s"]{//whatever}PHP版本,如果有人需要示例而不是我试图解释:foreach($obj->ipv4sas$value){echo$value;//r

  6. java - DocumentBuilderFactory 在 JDK 1.8.0_121 中没有 setFeature? - 2

    在解析XML文件时,我的文档生成器正在寻找DTD,有时它会引发错误(服务器崩溃)。所以当我用谷歌搜索时,我从这里得到了以下解决方案IgnoringtheDTDwhileparsingXML(我使用的解决方案是VOTE---90)。Letter在我的IDE中显示如下错误。方法setFeature(String,boolean)未定义类型DocumentBuilderFactoryThenIthoughtitstheproblemwithmymavenversionthenIfoundthefollowinglink.WhatisthejarfileIshoulddownloadandfr

  7. java - 如何阻止 Sun JDK1.6 内置 StAX 解析器解析 DTD 实体 - 2

    我正在使用基于StAX事件的API来修改XML流。流表示一个HTML文档,带有DTD声明。我想将此DTD声明复制到输出文档中(使用XMLEventWriter编写)。当我要求工厂忽略DTD时,它不会下载DTD,而是删除整个语句并只留下一个“”字符串。如果不忽略,整个DTD将被下载,并在逐字输出DTD事件时包含在内。我不想花时间下载这个DTD,但包括完整的DTD规范(解析实体已经被禁用,我不需要那个)。有谁知道如何禁用外部DTD的提取。 最佳答案 您应该能够实现自定义XMLResolver,将获取外部DTD的尝试重定向到本地资源(如果

  8. xml - JAXB 如何删除 JDK7 中的 ns2 - 2

    在我的代码中,当XmlSchema只有命名空间属性时,我使用JAXB将对象转换为xmlstring,我可以得到我想要的。像这样的xml字符串:watersteak但是当我有xmlnsattr时,我得到这样的xml:watersteak代码:包信息.java@XmlSchema(namespace="http://www.something.com/something",elementFormDefault=XmlNsForm.QUALIFIED,xmlns={@XmlNs(namespaceURI="h",prefix="xsi")})//onlythismaketheresultdi

  9. xml - 自 JRE6 更新 24 以来,javax.xml.validation.Validator 非常慢? - 2

    我们遇到了一个问题,即JavaJRE中存在的XMLvalidator在JRE1.6u24中变得非常慢,即使在最近的更新中也存在这个问题。验证1000个XML需要我们:版本=1.6u24慢了10倍!我试图搜索是否有人已经发现了这个问题,但我找不到任何东西。我们当然可以通过使用另一个库(如woodstox)来解决它,但我们更喜欢纯JRE,我不敢相信它会存在这么长时间而没有任何改进...我们测试的代码如下所示:publicstaticvoidmain(String[]args)throwsXMLStreamException,SAXException,IOException,ParserCo

  10. arrays - 获取节点各部分的Xpath - 2

    我是XPath的新手,如果这对您来说是个愚蠢的问题,我深表歉意。我需要从第一个spanclass="price"中提取一个没有“$”的价格$1.23$4.56$7.89我自带的Xpath是//span[@class='price'])[1]但它给了我每个元素的数组[$][1][.][23]我只需要1.23不带“$”。你可以帮帮我吗?谢谢! 最佳答案 在XPath1.0中,您可以在节点上使用string函数来获取其中的所有文本。例如string(//span[@class='price'][1])(如果您在节点集上使用它,也就是节点数

随机推荐