如果jvm< jre< jdk为什么我要安装最新版本的jdk,还需要安装特定的jre才能让游戏正常运行?

6yoyoihd  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(370)

jre包含在jdk安装中还是我错了?为什么我必须专门安装jre才能玩基于java的游戏,比如minecraft?

hfwmuf9z

hfwmuf9z1#

如果jvm<jre<jdk
这不是真的,但是jre<jdk或多或少是真的。
一个特定的jre安装也需要使游戏工作?
实际上,JRE已经死了;java8已经有5年的历史了,是jre作为预期分发模型的最后一个版本。jre模型的工作原理如下:
开发人员安装一个jdk并用它构建他们的java应用程序。
开发人员将一堆jar文件发送给最终用户。
最终用户将从oracle下载jre并安装。用户和oracle一起对此进行维护(保持更新,例如关闭jre中的安全漏洞);开发商根本不是这方面的当事人。
jre之所以存在,是因为它可以更简单、更小,而且它的下载和维护可以针对最终用户而不是开发人员进行优化。
这也是游戏需要jre的原因:jdk通常不会附带托管安全更新,因为jdk的目标是那些被认为更了解并保持更新的开发人员(当然,他们没有,但那是另一个问题)。
这种模式已经过时了。新模式是:
开发人员安装一个jdk并用它构建他们的java应用程序。
他们使用jlink或其他安装程序创建工具来生成一个安装程序,然后将其发送给最终用户。jlink可以定制jdk的精简版本,而不需要开发人员工具,也只需要java库的那些部分。换句话说,甚至比jre还小。
最终用户安装。他们与oracle或任何其他“jre提供商”没有协议,也不需要在他们的系统上安装jre;即使有,也不会用。将任何更新(包括安全更新)分发到正在使用的精简java运行时完全由app maker负责。
后一种模式实际上就是大多数“在桌面上运行”的java软件是如何分发的:要求用户安装jre是一种烦恼,也是不可靠的:如果你的应用程序没有在jre8上运行,因为你是为jre6编写的,而在8中更新的东西破坏了你的应用程序,但是最终用户更新了他们的jre呢?
现在,后一种模式是官方模式,这使得你的问题大多没有意义。
雷艇大概需要更新部署。
注:有些公司,如azul,仍然发行他们称之为“jre11”的产品。这些发行版是为那些不能轻易摆脱“用户维护一个jre,开发人员只分发jar文件”的旧发行模式的商店准备的,但是他们确实想使用新的java特性。甲骨文没有分发这些产品,这种分发模式也同样过时过时'并不意味着'不可能',只是'不建议/你需要找一些时间来摆脱它/绝对不要这样做的新项目'。

bq9c1y66

bq9c1y662#

jre是否包含在jdk安装中?
在Java11之前是这样,但在Java11之后就不是了
为什么我必须专门安装jre才能玩基于java的游戏,比如minecraft?
从java 11看,情况发生了变化:https://stackoverflow.com/a/53733414/1098361

相关问题