Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对JRE、JDK和最新Java版本感到困惑_Java_Linux_Version - Fatal编程技术网

对JRE、JDK和最新Java版本感到困惑

对JRE、JDK和最新Java版本感到困惑,java,linux,version,Java,Linux,Version,在具有双引导的桌面上,我目前在Linux(Mint)系统中使用JavaJDK8 但我确信事实上1.8.0_171不是最新版本,甚至不是Java8!如果我想更改为1.11.xxx,这似乎是最新的LTS版本(至少对于Oracle非OpenJDK),我应该怎么做?我必须手动下载一些东西,还是使用PPA?我如何确定我的Linux操作系统使用的是11版JRE和11版JDK 我也从来没有完全理解过JRE方面的版本控制,以及它如何与正在使用的JDK相对应。在我的Windows机器(W10)上,我使用的是Jav

在具有双引导的桌面上,我目前在Linux(Mint)系统中使用JavaJDK8

但我确信事实上1.8.0_171不是最新版本,甚至不是Java8!如果我想更改为1.11.xxx,这似乎是最新的LTS版本(至少对于Oracle非OpenJDK),我应该怎么做?我必须手动下载一些东西,还是使用PPA?我如何确定我的Linux操作系统使用的是11版JRE和11版JDK

我也从来没有完全理解过JRE方面的版本控制,以及它如何与正在使用的JDK相对应。在我的Windows机器(W10)上,我使用的是Java9JDK,但我认为是Java8JRE。这是件坏事吗

说Windows中没有Java11JRE,尽管有Java11JDK。这是W10的问题吗?将JDK 11与JRE 8一起使用会是一个坏主意吗

我也不明白为什么不可能读到“最新的JRE”或“最新稳定的JRE”。据我所知,这些似乎并没有与最新的JDK一一对应,但我很难弄清楚这一切

我也很难理解我是应该选择OpenJDK还是其他JDK(它们都是Oracle,所以我不知道如何引用非OpenJDK…“商业JDK”)。但与上述困难不同的是,有很多解释。我主要是寻找“最新的稳定版本”,希望与LTS。看起来“商业JDK”版本11可能是一个不错的选择…

Java 8是系统的默认JDK(推荐)

根据,您需要使用以下命令添加openjdk的存储库:

sudo add-apt-repository ppa:openjdk-r/ppa
之后,您需要使用更新索引

sudo apt-get update
如果要安装jdk 11,可以执行以下操作:

sudo apt-get install openjdk-11-jdk
[提示]

defaultjdk
默认的jdk。这意味着,如果这是最新的,那么您就拥有jdk的推荐/默认版本


此外,openjdk似乎被推荐用于linux

谢谢。请参阅更新。。。你能更清楚地说明我要做什么吗?另外,我想你说JDK 8是默认版本是对的,但最新版本似乎高于1.8.0_171::_221。这仅仅是因为apt归档文件(或无论它们被称为什么)稍微过时了吗?@mikoverent openjdk-11-jdk不是存储库(请参阅我的编辑),再次感谢。重试(请参阅上面的更新):相同错误。也许我应该坚持默认版本。看起来很奇怪,虽然:v8是在2014年推出的,v9是在2017年,v11是在一年前推出的。您必须执行
sudo apt get update
。然而,Oracle最近停止提供仅限JRE的发行版(afaik)。使用较新版本的Java编译的代码不能由较旧版本的Java执行。好的,谢谢。那么你是说任何用Java9SDK编译的字节码都必须由大于等于9的JRE执行?我觉得这有点难以置信。语言中引入的新特性(例如lamba东西)可以很好地编译成字节码,这在早期版本的JVM中是合法的,不是吗?我的意思是,否则人们将被迫更新所有运行JRE 8到9/10/11的操作系统,不是吗?否则开发者就不愿意发布使用11。。。!我发现我的设备几乎从不抱怨不可执行的字节码,而不是(直接)抱怨添加/删除的功能。类文件有一个版本标志,JVM拒绝执行由较新版本的Java编译的代码,抛出一个
不支持的ClassVersionError
。Java只争取向后兼容(这意味着Java N编译代码可以在Java>=N上运行)。也就是说,有了.FYI,随着Java小程序和Java Web Start的消亡,我所知道的最新版本的Java(如OpenJDK 11、12或13)不再有JRE了。如果您正在构建的桌面应用程序(如Swing或JavaFX)需要Java运行时,则必须使用新的可用工具在应用程序中绑定JVM。Oracle和Java社区不再期望最终用户有意识地安装Java,因此不需要JRE。@Slaw/Basil Bourque再次感谢这些补充说明。那么“OpenJDK11、12、13没有JRE”:也就是说,这些JRE可以很好地与JRE 8一起工作?那么JRE 7呢?有人能指出澄清这些兼容性问题的来源吗?另外,我在上面的问题中提到的另一个问题是,没有适用于Windows(OpenJDK)的JRE 11,但有一个适用于Linux(请参见括号中的注释)。我只希望有人能把这一切都记录下来,因为这似乎是相当重要的!
sudo apt-get install openjdk-11-jdk